From b7ca1dcc2f101940a1d31e2b29e1dcbe1ae49ae2 Mon Sep 17 00:00:00 2001 From: mt-btanner Date: Wed, 29 Jul 2026 18:15:59 +0900 Subject: [PATCH 1/8] feat(types): let TS understand Jest globals --- tsconfig.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tsconfig.json b/tsconfig.json index fc740732..d68edf31 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,7 +7,8 @@ "resolveJsonModule": true, "removeComments": true, "outDir": "./dist", - "lib": ["es2015", "dom"] + "lib": ["es2015", "dom"], + "types": ["node", "jest"] }, "include": ["./src/**/*.ts", "./src/**/*.json"], "exclude": ["./dist", "./node_modules", "*/**/__tests__"] From 9ca50bce9e79c28011278ddb529a2cecbbe720f9 Mon Sep 17 00:00:00 2001 From: mt-btanner Date: Thu, 30 Jul 2026 09:50:05 +0900 Subject: [PATCH 2/8] feat(test): polyfill browser APIs in tests --- scripts/jest/setup.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/scripts/jest/setup.ts b/scripts/jest/setup.ts index 8b19a3da..cd09906f 100644 --- a/scripts/jest/setup.ts +++ b/scripts/jest/setup.ts @@ -1,4 +1,19 @@ import '@testing-library/jest-dom'; import fetchMock from 'jest-fetch-mock'; +import { TextEncoder } from 'util'; +import { webcrypto } from 'node:crypto'; fetchMock.enableMocks(); + +// JSDOM doesn't implement these, but browsers do +// [TextEncoder] https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder +// [SubtleCrypto] https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest +// So we polyfill from Node's WHATWG-complient utils +// [TextEncoder] https://nodejs.org/api/util.html#class-utiltextencoder +// [SubtleCrypto] https://nodejs.org/api/webcrypto.html +Object.assign(global, { TextEncoder }); +Object.defineProperty(global, 'crypto', { + value: webcrypto, + configurable: true, + writable: true +}); From 673072c90c680e097ee39617bd42ae3f42655fe2 Mon Sep 17 00:00:00 2001 From: mt-btanner Date: Thu, 30 Jul 2026 09:50:47 +0900 Subject: [PATCH 3/8] feat(helper): add createBase64Hash helper --- src/__tests__/createBase64Hash.test.ts | 20 ++++++++++++++++++++ src/createBase64Hash.ts | 9 +++++++++ 2 files changed, 29 insertions(+) create mode 100644 src/__tests__/createBase64Hash.test.ts create mode 100644 src/createBase64Hash.ts diff --git a/src/__tests__/createBase64Hash.test.ts b/src/__tests__/createBase64Hash.test.ts new file mode 100644 index 00000000..244d3803 --- /dev/null +++ b/src/__tests__/createBase64Hash.test.ts @@ -0,0 +1,20 @@ +import { createBase64Hash } from '../createBase64Hash'; + +describe('createBase64Hash', () => { + // 'expected' is what Ruby produces from `Digest::SHA256.base64digest(input)` + // Minus the appended '=', which this SDK has always deliberately stripped + // Inputs are the result of Ruby's SecureRandom.uuid_v4 to match the SDK's uuid + const tests = [ + [ + { input: 'cb24d167-e486-4b8b-b5a6-3db4139203d9', expected: 'r+vjA2vgVoXqSnpRp+DWAih/8b69Ogv3Aq22BQO9VBk' }, + { input: '3c167cb0-d423-4db5-b3c7-6b428be888f7', expected: '41woqAux5HXSWhrk1UA+FFjjkN0OP81H3wPMrZV9qoQ' }, + { input: 'b978a9b6-d14e-4465-a41f-833580ceae1e', expected: 'ZFV/ImIxTa8uw2m4aYce8m2LUNVAHcUInO/wdY0UT9U' }, + { input: 'c1f4b085-b9df-4a6d-a88f-2fda4500534f', expected: '5pi9qmTZPPzmZdxtGb+Aa6fkemAX26wMmoAO7g4a4bA' }, + { input: 'a93edcfc-2be9-48dc-9b6d-b34e40f198c3', expected: 'Eajvhe+9co98z0P45MB3HP3kcm50/WIupwLWi9EYryY' } + ] + ]; + + it.each(tests)('generates $expected from $input', async ({ input, expected }) => { + expect(await createBase64Hash(input)).toEqual(expected); + }); +}); diff --git a/src/createBase64Hash.ts b/src/createBase64Hash.ts new file mode 100644 index 00000000..bea43b3a --- /dev/null +++ b/src/createBase64Hash.ts @@ -0,0 +1,9 @@ +export async function createBase64Hash(string: string) { + const msgBuffer = new TextEncoder().encode(string); + const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer); + + const hashArray = Array.from(new Uint8Array(hashBuffer)); + const hashString = hashArray.map((b) => String.fromCharCode(b)).join(''); + + return btoa(hashString).split('=')[0]; +} From ac274e204c015b78712996e9b556ee8d967a2426 Mon Sep 17 00:00:00 2001 From: mt-btanner Date: Thu, 30 Jul 2026 09:51:15 +0900 Subject: [PATCH 4/8] refactor(hash): use createBase64Hash --- src/api/authorize-url.ts | 2 +- src/api/onboard-url.ts | 2 +- src/helper.ts | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/api/authorize-url.ts b/src/api/authorize-url.ts index 291cc9ff..4716ae64 100644 --- a/src/api/authorize-url.ts +++ b/src/api/authorize-url.ts @@ -38,7 +38,7 @@ export default async function authorize( storage.del('cv'); - const cc = codeChallenge || generateCodeChallenge(); + const cc = codeChallenge || (await generateCodeChallenge()); const configs = await generateConfigs(mergeConfigs(storedOptions, rest)); const queryString = objectToQueryString({ diff --git a/src/api/onboard-url.ts b/src/api/onboard-url.ts index dfcea8df..7ea9a098 100644 --- a/src/api/onboard-url.ts +++ b/src/api/onboard-url.ts @@ -32,7 +32,7 @@ export default async function onboardUrl( storage.del('cv'); - const cc = codeChallenge || generateCodeChallenge(); + const cc = codeChallenge || (await generateCodeChallenge()); const queryString = objectToQueryString({ client_id: clientId, diff --git a/src/helper.ts b/src/helper.ts index 2e2b5f05..972a8e68 100644 --- a/src/helper.ts +++ b/src/helper.ts @@ -1,7 +1,6 @@ declare const __VERSION__: string; import { snakeCase } from 'snake-case'; -import createHash from 'create-hash'; import { encode } from 'url-safe-base64'; import { v4 as uuid } from 'uuid'; import storage from './storage'; @@ -19,6 +18,7 @@ import { } from './typings'; import { MY_ACCOUNT_DOMAINS } from './server-paths'; import type { QueryData } from './api/open-service-url'; +import { createBase64Hash } from './createBase64Hash'; export function constructScopes(scopes: Scopes = ''): string | undefined { return (Array.isArray(scopes) ? scopes.join(' ') : scopes) || undefined; @@ -134,12 +134,12 @@ export async function generateConfigs( return objectToQueryString(snakeCaseConfigs); } -export function generateCodeChallenge(): string { +export async function generateCodeChallenge(): Promise { const codeVerifier = uuid(); storage.set('cv', codeVerifier); - return encode(createHash('sha256').update(codeVerifier).digest('base64').split('=')[0]); + return encode(await createBase64Hash(codeVerifier)); } export function generateSdkHeaderInfo(): { From 38523cd67877a66421020f7e8009ae2f552cda70 Mon Sep 17 00:00:00 2001 From: mt-btanner Date: Thu, 30 Jul 2026 09:52:37 +0900 Subject: [PATCH 5/8] refactor(hash): remove unused create-hash --- package.json | 2 +- sample/yarn.lock | 279 +----------------------------------------- yarn.lock | 306 +++++------------------------------------------ 3 files changed, 32 insertions(+), 555 deletions(-) diff --git a/package.json b/package.json index 6971e292..fc3e3d3c 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,6 @@ }, "dependencies": { "buffer": "^6.0.3", - "create-hash": "^1.2.0", "process": "^0.11.10", "snake-case": "^3.0.4", "stream-browserify": "^3.0.0", @@ -43,6 +42,7 @@ "@testing-library/jest-dom": "^5.12.0", "@types/create-hash": "^1.2.6", "@types/jest": "^27", + "@types/node": "^26.1.2", "@types/url-safe-base64": "^1.1.0", "@types/uuid": "^8.3.0", "@typescript-eslint/eslint-plugin": "^4.23.0", diff --git a/sample/yarn.lock b/sample/yarn.lock index 7705043a..869c9c98 100644 --- a/sample/yarn.lock +++ b/sample/yarn.lock @@ -70,7 +70,6 @@ __metadata: resolution: "@moneytree/mt-link-javascript-sdk@portal:../::locator=mt-link-javascript-sdk-sample%40workspace%3A." dependencies: buffer: "npm:^6.0.3" - create-hash: "npm:^1.2.0" process: "npm:^0.11.10" snake-case: "npm:^3.0.4" stream-browserify: "npm:^3.0.0" @@ -656,15 +655,6 @@ __metadata: languageName: node linkType: hard -"available-typed-arrays@npm:^1.0.7": - version: 1.0.7 - resolution: "available-typed-arrays@npm:1.0.7" - dependencies: - possible-typed-array-names: "npm:^1.0.0" - checksum: 10c0/d07226ef4f87daa01bd0fe80f8f310982e345f372926da2e5296aecc25c41cab440916bbaa4c5e1034b453af3392f67df5961124e4b586df1e99793a1374bdb2 - languageName: node - linkType: hard - "balanced-match@npm:^1.0.0": version: 1.0.2 resolution: "balanced-match@npm:1.0.2" @@ -872,16 +862,6 @@ __metadata: languageName: node linkType: hard -"call-bind-apply-helpers@npm:^1.0.0, call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2": - version: 1.0.2 - resolution: "call-bind-apply-helpers@npm:1.0.2" - dependencies: - es-errors: "npm:^1.3.0" - function-bind: "npm:^1.1.2" - checksum: 10c0/47bd9901d57b857590431243fea704ff18078b16890a6b3e021e12d279bbf211d039155e27d7566b374d49ee1f8189344bac9833dec7a20cdec370506361c938 - languageName: node - linkType: hard - "call-bind@npm:^1.0.0, call-bind@npm:^1.0.2": version: 1.0.2 resolution: "call-bind@npm:1.0.2" @@ -905,28 +885,6 @@ __metadata: languageName: node linkType: hard -"call-bind@npm:^1.0.8": - version: 1.0.8 - resolution: "call-bind@npm:1.0.8" - dependencies: - call-bind-apply-helpers: "npm:^1.0.0" - es-define-property: "npm:^1.0.0" - get-intrinsic: "npm:^1.2.4" - set-function-length: "npm:^1.2.2" - checksum: 10c0/a13819be0681d915144467741b69875ae5f4eba8961eb0bf322aab63ec87f8250eb6d6b0dcbb2e1349876412a56129ca338592b3829ef4343527f5f18a0752d4 - languageName: node - linkType: hard - -"call-bound@npm:^1.0.3, call-bound@npm:^1.0.4": - version: 1.0.4 - resolution: "call-bound@npm:1.0.4" - dependencies: - call-bind-apply-helpers: "npm:^1.0.2" - get-intrinsic: "npm:^1.3.0" - checksum: 10c0/f4796a6a0941e71c766aea672f63b72bc61234c4f4964dc6d7606e3664c307e7d77845328a8f3359ce39ddb377fed67318f9ee203dea1d47e46165dcf2917644 - languageName: node - linkType: hard - "camel-case@npm:^4.1.1": version: 4.1.2 resolution: "camel-case@npm:4.1.2" @@ -988,16 +946,6 @@ __metadata: languageName: node linkType: hard -"cipher-base@npm:^1.0.1": - version: 1.0.6 - resolution: "cipher-base@npm:1.0.6" - dependencies: - inherits: "npm:^2.0.4" - safe-buffer: "npm:^5.2.1" - checksum: 10c0/f73268e0ee6585800875d9748f2a2377ae7c2c3375cba346f75598ac6f6bc3a25dec56e984a168ced1a862529ffffe615363f750c40349039d96bd30fba0fca8 - languageName: node - linkType: hard - "class-utils@npm:^0.3.5": version: 0.3.6 resolution: "class-utils@npm:0.3.6" @@ -1191,19 +1139,6 @@ __metadata: languageName: node linkType: hard -"create-hash@npm:^1.2.0": - version: 1.2.0 - resolution: "create-hash@npm:1.2.0" - dependencies: - cipher-base: "npm:^1.0.1" - inherits: "npm:^2.0.1" - md5.js: "npm:^1.3.4" - ripemd160: "npm:^2.0.1" - sha.js: "npm:^2.4.0" - checksum: 10c0/d402e60e65e70e5083cb57af96d89567954d0669e90550d7cec58b56d49c4b193d35c43cec8338bc72358198b8cbf2f0cac14775b651e99238e1cf411490f915 - languageName: node - linkType: hard - "cross-spawn@npm:^6.0.0": version: 6.0.5 resolution: "cross-spawn@npm:6.0.5" @@ -1494,17 +1429,6 @@ __metadata: languageName: node linkType: hard -"dunder-proto@npm:^1.0.1": - version: 1.0.1 - resolution: "dunder-proto@npm:1.0.1" - dependencies: - call-bind-apply-helpers: "npm:^1.0.1" - es-errors: "npm:^1.3.0" - gopd: "npm:^1.2.0" - checksum: 10c0/199f2a0c1c16593ca0a145dbf76a962f8033ce3129f01284d48c45ed4e14fea9bbacd7b3610b6cdc33486cef20385ac054948fefc6272fcce645c09468f93031 - languageName: node - linkType: hard - "ee-first@npm:1.1.1": version: 1.1.1 resolution: "ee-first@npm:1.1.1" @@ -1640,13 +1564,6 @@ __metadata: languageName: node linkType: hard -"es-define-property@npm:^1.0.1": - version: 1.0.1 - resolution: "es-define-property@npm:1.0.1" - checksum: 10c0/3f54eb49c16c18707949ff25a1456728c883e81259f045003499efba399c08bad00deebf65cccde8c0e07908c1a225c9d472b7107e558f2a48e28d530e34527c - languageName: node - linkType: hard - "es-errors@npm:^1.3.0": version: 1.3.0 resolution: "es-errors@npm:1.3.0" @@ -1661,15 +1578,6 @@ __metadata: languageName: node linkType: hard -"es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1": - version: 1.1.1 - resolution: "es-object-atoms@npm:1.1.1" - dependencies: - es-errors: "npm:^1.3.0" - checksum: 10c0/65364812ca4daf48eb76e2a3b7a89b3f6a2e62a1c420766ce9f692665a29d94fe41fe88b65f24106f449859549711e4b40d9fb8002d862dfd7eb1c512d10be0c - languageName: node - linkType: hard - "es-to-primitive@npm:^1.2.1": version: 1.2.1 resolution: "es-to-primitive@npm:1.2.1" @@ -1996,15 +1904,6 @@ __metadata: languageName: node linkType: hard -"for-each@npm:^0.3.5": - version: 0.3.5 - resolution: "for-each@npm:0.3.5" - dependencies: - is-callable: "npm:^1.2.7" - checksum: 10c0/0e0b50f6a843a282637d43674d1fb278dda1dd85f4f99b640024cfb10b85058aac0cc781bf689d5fe50b4b7f638e91e548560723a4e76e04fe96ae35ef039cee - languageName: node - linkType: hard - "for-in@npm:^1.0.2": version: 1.0.2 resolution: "for-in@npm:1.0.2" @@ -2119,34 +2018,6 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.3.0": - version: 1.3.0 - resolution: "get-intrinsic@npm:1.3.0" - dependencies: - call-bind-apply-helpers: "npm:^1.0.2" - es-define-property: "npm:^1.0.1" - es-errors: "npm:^1.3.0" - es-object-atoms: "npm:^1.1.1" - function-bind: "npm:^1.1.2" - get-proto: "npm:^1.0.1" - gopd: "npm:^1.2.0" - has-symbols: "npm:^1.1.0" - hasown: "npm:^2.0.2" - math-intrinsics: "npm:^1.1.0" - checksum: 10c0/52c81808af9a8130f581e6a6a83e1ba4a9f703359e7a438d1369a5267a25412322f03dcbd7c549edaef0b6214a0630a28511d7df0130c93cfd380f4fa0b5b66a - languageName: node - linkType: hard - -"get-proto@npm:^1.0.1": - version: 1.0.1 - resolution: "get-proto@npm:1.0.1" - dependencies: - dunder-proto: "npm:^1.0.1" - es-object-atoms: "npm:^1.0.0" - checksum: 10c0/9224acb44603c5526955e83510b9da41baf6ae73f7398875fba50edc5e944223a89c4a72b070fcd78beb5f7bdda58ecb6294adc28f7acfc0da05f76a2399643c - languageName: node - linkType: hard - "get-stream@npm:^4.0.0": version: 4.1.0 resolution: "get-stream@npm:4.1.0" @@ -2223,13 +2094,6 @@ __metadata: languageName: node linkType: hard -"gopd@npm:^1.2.0": - version: 1.2.0 - resolution: "gopd@npm:1.2.0" - checksum: 10c0/50fff1e04ba2b7737c097358534eacadad1e68d24cccee3272e04e007bed008e68d2614f3987788428fd192a5ae3889d08fb2331417e4fc4a9ab366b2043cead - languageName: node - linkType: hard - "graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.2.4": version: 4.2.10 resolution: "graceful-fs@npm:4.2.10" @@ -2302,22 +2166,6 @@ __metadata: languageName: node linkType: hard -"has-symbols@npm:^1.1.0": - version: 1.1.0 - resolution: "has-symbols@npm:1.1.0" - checksum: 10c0/dde0a734b17ae51e84b10986e651c664379018d10b91b6b0e9b293eddb32f0f069688c841fb40f19e9611546130153e0a2a48fd7f512891fb000ddfa36f5a20e - languageName: node - linkType: hard - -"has-tostringtag@npm:^1.0.2": - version: 1.0.2 - resolution: "has-tostringtag@npm:1.0.2" - dependencies: - has-symbols: "npm:^1.0.3" - checksum: 10c0/a8b166462192bafe3d9b6e420a1d581d93dd867adb61be223a17a8d6dad147aa77a8be32c961bb2f27b3ef893cae8d36f564ab651f5e9b7938ae86f74027c48c - languageName: node - linkType: hard - "has-value@npm:^0.3.1": version: 0.3.1 resolution: "has-value@npm:0.3.1" @@ -2366,18 +2214,7 @@ __metadata: languageName: node linkType: hard -"hash-base@npm:^3.0.0": - version: 3.1.0 - resolution: "hash-base@npm:3.1.0" - dependencies: - inherits: "npm:^2.0.4" - readable-stream: "npm:^3.6.0" - safe-buffer: "npm:^5.2.0" - checksum: 10c0/663eabcf4173326fbb65a1918a509045590a26cc7e0964b754eef248d281305c6ec9f6b31cb508d02ffca383ab50028180ce5aefe013e942b44a903ac8dc80d0 - languageName: node - linkType: hard - -"hasown@npm:^2.0.0, hasown@npm:^2.0.2": +"hasown@npm:^2.0.0": version: 2.0.2 resolution: "hasown@npm:2.0.2" dependencies: @@ -2708,13 +2545,6 @@ __metadata: languageName: node linkType: hard -"is-callable@npm:^1.2.7": - version: 1.2.7 - resolution: "is-callable@npm:1.2.7" - checksum: 10c0/ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f - languageName: node - linkType: hard - "is-core-module@npm:^2.2.0": version: 2.4.0 resolution: "is-core-module@npm:2.4.0" @@ -2916,15 +2746,6 @@ __metadata: languageName: node linkType: hard -"is-typed-array@npm:^1.1.14": - version: 1.1.15 - resolution: "is-typed-array@npm:1.1.15" - dependencies: - which-typed-array: "npm:^1.1.16" - checksum: 10c0/415511da3669e36e002820584e264997ffe277ff136643a3126cc949197e6ca3334d0f12d084e83b1994af2e9c8141275c741cf2b7da5a2ff62dd0cac26f76c4 - languageName: node - linkType: hard - "is-windows@npm:^1.0.2": version: 1.0.2 resolution: "is-windows@npm:1.0.2" @@ -2946,13 +2767,6 @@ __metadata: languageName: node linkType: hard -"isarray@npm:^2.0.5": - version: 2.0.5 - resolution: "isarray@npm:2.0.5" - checksum: 10c0/4199f14a7a13da2177c66c31080008b7124331956f47bca57dd0b6ea9f11687aa25e565a2c7a2b519bc86988d10398e3049a1f5df13c9f6b7664154690ae79fd - languageName: node - linkType: hard - "isexe@npm:^2.0.0": version: 2.0.0 resolution: "isexe@npm:2.0.0" @@ -3148,24 +2962,6 @@ __metadata: languageName: node linkType: hard -"math-intrinsics@npm:^1.1.0": - version: 1.1.0 - resolution: "math-intrinsics@npm:1.1.0" - checksum: 10c0/7579ff94e899e2f76ab64491d76cf606274c874d8f2af4a442c016bd85688927fcfca157ba6bf74b08e9439dc010b248ce05b96cc7c126a354c3bae7fcb48b7f - languageName: node - linkType: hard - -"md5.js@npm:^1.3.4": - version: 1.3.5 - resolution: "md5.js@npm:1.3.5" - dependencies: - hash-base: "npm:^3.0.0" - inherits: "npm:^2.0.1" - safe-buffer: "npm:^5.1.2" - checksum: 10c0/b7bd75077f419c8e013fc4d4dada48be71882e37d69a44af65a2f2804b91e253441eb43a0614423a1c91bb830b8140b0dc906bc797245e2e275759584f4efcc5 - languageName: node - linkType: hard - "media-typer@npm:0.3.0": version: 0.3.0 resolution: "media-typer@npm:0.3.0" @@ -3914,13 +3710,6 @@ __metadata: languageName: node linkType: hard -"possible-typed-array-names@npm:^1.0.0": - version: 1.1.0 - resolution: "possible-typed-array-names@npm:1.1.0" - checksum: 10c0/c810983414142071da1d644662ce4caebce890203eb2bc7bf119f37f3fe5796226e117e6cca146b521921fa6531072674174a3325066ac66fce089a53e1e5196 - languageName: node - linkType: hard - "pretty-error@npm:^2.1.1": version: 2.1.2 resolution: "pretty-error@npm:2.1.2" @@ -4050,7 +3839,7 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^3.0.6, readable-stream@npm:^3.1.1, readable-stream@npm:^3.6.0": +"readable-stream@npm:^3.0.6, readable-stream@npm:^3.1.1": version: 3.6.0 resolution: "readable-stream@npm:3.6.0" dependencies: @@ -4265,16 +4054,6 @@ __metadata: languageName: node linkType: hard -"ripemd160@npm:^2.0.1": - version: 2.0.2 - resolution: "ripemd160@npm:2.0.2" - dependencies: - hash-base: "npm:^3.0.0" - inherits: "npm:^2.0.1" - checksum: 10c0/f6f0df78817e78287c766687aed4d5accbebc308a8e7e673fb085b9977473c1f139f0c5335d353f172a915bb288098430755d2ad3c4f30612f4dd0c901cd2c3a - languageName: node - linkType: hard - "safe-buffer@npm:5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": version: 5.1.2 resolution: "safe-buffer@npm:5.1.2" @@ -4282,7 +4061,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.0, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 @@ -4426,7 +4205,7 @@ __metadata: languageName: node linkType: hard -"set-function-length@npm:^1.2.1, set-function-length@npm:^1.2.2": +"set-function-length@npm:^1.2.1": version: 1.2.2 resolution: "set-function-length@npm:1.2.2" dependencies: @@ -4466,19 +4245,6 @@ __metadata: languageName: node linkType: hard -"sha.js@npm:^2.4.0": - version: 2.4.12 - resolution: "sha.js@npm:2.4.12" - dependencies: - inherits: "npm:^2.0.4" - safe-buffer: "npm:^5.2.1" - to-buffer: "npm:^1.2.0" - bin: - sha.js: bin.js - checksum: 10c0/9d36bdd76202c8116abbe152a00055ccd8a0099cb28fc17c01fa7bb2c8cffb9ca60e2ab0fe5f274ed6c45dc2633d8c39cf7ab050306c231904512ba9da4d8ab1 - languageName: node - linkType: hard - "shallow-clone@npm:^3.0.0": version: 3.0.1 resolution: "shallow-clone@npm:3.0.1" @@ -4940,17 +4706,6 @@ __metadata: languageName: node linkType: hard -"to-buffer@npm:^1.2.0": - version: 1.2.1 - resolution: "to-buffer@npm:1.2.1" - dependencies: - isarray: "npm:^2.0.5" - safe-buffer: "npm:^5.2.1" - typed-array-buffer: "npm:^1.0.3" - checksum: 10c0/bbf07a2a7d6ff9e3ffe503c689176c7149cf3ec25887ce7c4aa5c4841a8845cc71121cd7b4a4769957f823b3f31dbf6b1be6e0a5955798ad864bf2245ee8b5e4 - languageName: node - linkType: hard - "to-object-path@npm:^0.3.0": version: 0.3.0 resolution: "to-object-path@npm:0.3.0" @@ -5006,17 +4761,6 @@ __metadata: languageName: node linkType: hard -"typed-array-buffer@npm:^1.0.3": - version: 1.0.3 - resolution: "typed-array-buffer@npm:1.0.3" - dependencies: - call-bound: "npm:^1.0.3" - es-errors: "npm:^1.3.0" - is-typed-array: "npm:^1.1.14" - checksum: 10c0/1105071756eb248774bc71646bfe45b682efcad93b55532c6ffa4518969fb6241354e4aa62af679ae83899ec296d69ef88f1f3763657cdb3a4d29321f7b83079 - languageName: node - linkType: hard - "unbox-primitive@npm:^1.0.1": version: 1.0.1 resolution: "unbox-primitive@npm:1.0.1" @@ -5408,21 +5152,6 @@ __metadata: languageName: node linkType: hard -"which-typed-array@npm:^1.1.16": - version: 1.1.19 - resolution: "which-typed-array@npm:1.1.19" - dependencies: - available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.4" - for-each: "npm:^0.3.5" - get-proto: "npm:^1.0.1" - gopd: "npm:^1.2.0" - has-tostringtag: "npm:^1.0.2" - checksum: 10c0/702b5dc878addafe6c6300c3d0af5983b175c75fcb4f2a72dfc3dd38d93cf9e89581e4b29c854b16ea37e50a7d7fca5ae42ece5c273d8060dcd603b2404bbb3f - languageName: node - linkType: hard - "which@npm:^1.2.9": version: 1.3.1 resolution: "which@npm:1.3.1" diff --git a/yarn.lock b/yarn.lock index b35bd840..64f38f70 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1413,13 +1413,13 @@ __metadata: "@testing-library/jest-dom": "npm:^5.12.0" "@types/create-hash": "npm:^1.2.6" "@types/jest": "npm:^27" + "@types/node": "npm:^26.1.2" "@types/url-safe-base64": "npm:^1.1.0" "@types/uuid": "npm:^8.3.0" "@typescript-eslint/eslint-plugin": "npm:^4.23.0" "@typescript-eslint/parser": "npm:^4.23.0" buffer: "npm:^6.0.3" conventional-changelog-cli: "npm:^2.1.1" - create-hash: "npm:^1.2.0" cspell: "npm:^7.3.7" docsify-cli: "npm:^4.4.3" eslint: "npm:^7.26.0" @@ -1760,6 +1760,15 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:^26.1.2": + version: 26.1.2 + resolution: "@types/node@npm:26.1.2" + dependencies: + undici-types: "npm:~8.3.0" + checksum: 10c0/a45503222c7db8f374afd5c9381db63dd95b6b1f703abea0890dd3d4a09eeb41da489e08a1a45baf18fe89fb77fbf310ff2789f680c490b04dafc41a60800a86 + languageName: node + linkType: hard + "@types/normalize-package-data@npm:^2.4.0": version: 2.4.0 resolution: "@types/normalize-package-data@npm:2.4.0" @@ -2533,20 +2542,6 @@ __metadata: languageName: node linkType: hard -"async-function@npm:^1.0.0": - version: 1.0.0 - resolution: "async-function@npm:1.0.0" - checksum: 10c0/669a32c2cb7e45091330c680e92eaeb791bc1d4132d827591e499cd1f776ff5a873e77e5f92d0ce795a8d60f10761dec9ddfe7225a5de680f5d357f67b1aac73 - languageName: node - linkType: hard - -"async-generator-function@npm:^1.0.0": - version: 1.0.0 - resolution: "async-generator-function@npm:1.0.0" - checksum: 10c0/2c50ef856c543ad500d8d8777d347e3c1ba623b93e99c9263ecc5f965c1b12d2a140e2ab6e43c3d0b85366110696f28114649411cbcd10b452a92a2318394186 - languageName: node - linkType: hard - "asynckit@npm:^0.4.0": version: 0.4.0 resolution: "asynckit@npm:0.4.0" @@ -2570,15 +2565,6 @@ __metadata: languageName: node linkType: hard -"available-typed-arrays@npm:^1.0.7": - version: 1.0.7 - resolution: "available-typed-arrays@npm:1.0.7" - dependencies: - possible-typed-array-names: "npm:^1.0.0" - checksum: 10c0/d07226ef4f87daa01bd0fe80f8f310982e345f372926da2e5296aecc25c41cab440916bbaa4c5e1034b453af3392f67df5961124e4b586df1e99793a1374bdb2 - languageName: node - linkType: hard - "babel-jest@npm:^27.5.1": version: 27.5.1 resolution: "babel-jest@npm:27.5.1" @@ -2828,28 +2814,6 @@ __metadata: languageName: node linkType: hard -"call-bind@npm:^1.0.9": - version: 1.0.9 - resolution: "call-bind@npm:1.0.9" - dependencies: - call-bind-apply-helpers: "npm:^1.0.2" - es-define-property: "npm:^1.0.1" - get-intrinsic: "npm:^1.3.0" - set-function-length: "npm:^1.2.2" - checksum: 10c0/a6621f6da1444481919ce3b4983dff725691e0754d3507ae483ce56e54985f2da7d6f1df512c56dbf28660745cf1ca52553f1fc9aef5557f3ce353ef14fab714 - languageName: node - linkType: hard - -"call-bound@npm:^1.0.3, call-bound@npm:^1.0.4": - version: 1.0.4 - resolution: "call-bound@npm:1.0.4" - dependencies: - call-bind-apply-helpers: "npm:^1.0.2" - get-intrinsic: "npm:^1.3.0" - checksum: 10c0/f4796a6a0941e71c766aea672f63b72bc61234c4f4964dc6d7606e3664c307e7d77845328a8f3359ce39ddb377fed67318f9ee203dea1d47e46165dcf2917644 - languageName: node - linkType: hard - "callsites@npm:^3.0.0, callsites@npm:^3.1.0": version: 3.1.0 resolution: "callsites@npm:3.1.0" @@ -3027,17 +2991,6 @@ __metadata: languageName: node linkType: hard -"cipher-base@npm:^1.0.1": - version: 1.0.7 - resolution: "cipher-base@npm:1.0.7" - dependencies: - inherits: "npm:^2.0.4" - safe-buffer: "npm:^5.2.1" - to-buffer: "npm:^1.2.2" - checksum: 10c0/53c5046a9d9b60c586479b8f13fde263c3f905e13f11e8e04c7a311ce399c91d9c3ec96642332e0de077d356e1014ee12bba96f74fbaad0de750f49122258836 - languageName: node - linkType: hard - "cjs-module-lexer@npm:^1.0.0": version: 1.4.3 resolution: "cjs-module-lexer@npm:1.4.3" @@ -3571,19 +3524,6 @@ __metadata: languageName: node linkType: hard -"create-hash@npm:^1.2.0": - version: 1.2.0 - resolution: "create-hash@npm:1.2.0" - dependencies: - cipher-base: "npm:^1.0.1" - inherits: "npm:^2.0.1" - md5.js: "npm:^1.3.4" - ripemd160: "npm:^2.0.1" - sha.js: "npm:^2.4.0" - checksum: 10c0/d402e60e65e70e5083cb57af96d89567954d0669e90550d7cec58b56d49c4b193d35c43cec8338bc72358198b8cbf2f0cac14775b651e99238e1cf411490f915 - languageName: node - linkType: hard - "cross-fetch@npm:^3.1.8": version: 3.2.0 resolution: "cross-fetch@npm:3.2.0" @@ -3924,17 +3864,6 @@ __metadata: languageName: node linkType: hard -"define-data-property@npm:^1.1.4": - version: 1.1.4 - resolution: "define-data-property@npm:1.1.4" - dependencies: - es-define-property: "npm:^1.0.0" - es-errors: "npm:^1.3.0" - gopd: "npm:^1.0.1" - checksum: 10c0/dea0606d1483eb9db8d930d4eac62ca0fa16738b0b3e07046cddfacf7d8c868bbe13fa0cb263eb91c7d0d527960dc3f2f2471a69ed7816210307f6744fe62e37 - languageName: node - linkType: hard - "delayed-stream@npm:~1.0.0": version: 1.0.0 resolution: "delayed-stream@npm:1.0.0" @@ -4230,7 +4159,7 @@ __metadata: languageName: node linkType: hard -"es-define-property@npm:^1.0.0, es-define-property@npm:^1.0.1": +"es-define-property@npm:^1.0.1": version: 1.0.1 resolution: "es-define-property@npm:1.0.1" checksum: 10c0/3f54eb49c16c18707949ff25a1456728c883e81259f045003499efba399c08bad00deebf65cccde8c0e07908c1a225c9d472b7107e558f2a48e28d530e34527c @@ -4826,15 +4755,6 @@ __metadata: languageName: node linkType: hard -"for-each@npm:^0.3.5": - version: 0.3.5 - resolution: "for-each@npm:0.3.5" - dependencies: - is-callable: "npm:^1.2.7" - checksum: 10c0/0e0b50f6a843a282637d43674d1fb278dda1dd85f4f99b640024cfb10b85058aac0cc781bf689d5fe50b4b7f638e91e548560723a4e76e04fe96ae35ef039cee - languageName: node - linkType: hard - "form-data@npm:^3.0.0": version: 3.0.5 resolution: "form-data@npm:3.0.5" @@ -4925,13 +4845,6 @@ __metadata: languageName: node linkType: hard -"generator-function@npm:^2.0.0": - version: 2.0.1 - resolution: "generator-function@npm:2.0.1" - checksum: 10c0/8a9f59df0f01cfefafdb3b451b80555e5cf6d76487095db91ac461a0e682e4ff7a9dbce15f4ecec191e53586d59eece01949e05a4b4492879600bbbe8e28d6b8 - languageName: node - linkType: hard - "gensequence@npm:^6.0.0": version: 6.0.0 resolution: "gensequence@npm:6.0.0" @@ -4953,27 +4866,6 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.3.0": - version: 1.3.1 - resolution: "get-intrinsic@npm:1.3.1" - dependencies: - async-function: "npm:^1.0.0" - async-generator-function: "npm:^1.0.0" - call-bind-apply-helpers: "npm:^1.0.2" - es-define-property: "npm:^1.0.1" - es-errors: "npm:^1.3.0" - es-object-atoms: "npm:^1.1.1" - function-bind: "npm:^1.1.2" - generator-function: "npm:^2.0.0" - get-proto: "npm:^1.0.1" - gopd: "npm:^1.2.0" - has-symbols: "npm:^1.1.0" - hasown: "npm:^2.0.2" - math-intrinsics: "npm:^1.1.0" - checksum: 10c0/9f4ab0cf7efe0fd2c8185f52e6f637e708f3a112610c88869f8f041bb9ecc2ce44bf285dfdbdc6f4f7c277a5b88d8e94a432374d97cca22f3de7fc63795deb5d - languageName: node - linkType: hard - "get-intrinsic@npm:^1.2.6": version: 1.3.0 resolution: "get-intrinsic@npm:1.3.0" @@ -5222,7 +5114,7 @@ __metadata: languageName: node linkType: hard -"gopd@npm:^1.0.1, gopd@npm:^1.2.0": +"gopd@npm:^1.2.0": version: 1.2.0 resolution: "gopd@npm:1.2.0" checksum: 10c0/50fff1e04ba2b7737c097358534eacadad1e68d24cccee3272e04e007bed008e68d2614f3987788428fd192a5ae3889d08fb2331417e4fc4a9ab366b2043cead @@ -5317,15 +5209,6 @@ __metadata: languageName: node linkType: hard -"has-property-descriptors@npm:^1.0.2": - version: 1.0.2 - resolution: "has-property-descriptors@npm:1.0.2" - dependencies: - es-define-property: "npm:^1.0.0" - checksum: 10c0/253c1f59e80bb476cf0dde8ff5284505d90c3bdb762983c3514d36414290475fe3fd6f574929d84de2a8eec00d35cf07cb6776205ff32efd7c50719125f00236 - languageName: node - linkType: hard - "has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0": version: 1.1.0 resolution: "has-symbols@npm:1.1.0" @@ -5358,18 +5241,6 @@ __metadata: languageName: node linkType: hard -"hash-base@npm:^3.0.0, hash-base@npm:^3.1.2": - version: 3.1.2 - resolution: "hash-base@npm:3.1.2" - dependencies: - inherits: "npm:^2.0.4" - readable-stream: "npm:^2.3.8" - safe-buffer: "npm:^5.2.1" - to-buffer: "npm:^1.2.1" - checksum: 10c0/f3b7fae1853b31340048dd659f40f5260ca6f3ff53b932f807f4ab701ee09039f6e9dbe1841723ff61e20f3f69d6387a352e4ccc5f997dedb0d375c7d88bc15e - languageName: node - linkType: hard - "hasown@npm:^2.0.2": version: 2.0.2 resolution: "hasown@npm:2.0.2" @@ -5586,7 +5457,7 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3, inherits@npm:~2.0.4": +"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3, inherits@npm:~2.0.4": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 @@ -5637,13 +5508,6 @@ __metadata: languageName: node linkType: hard -"is-callable@npm:^1.2.7": - version: 1.2.7 - resolution: "is-callable@npm:1.2.7" - checksum: 10c0/ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f - languageName: node - linkType: hard - "is-ci@npm:^2.0.0": version: 2.0.0 resolution: "is-ci@npm:2.0.0" @@ -5794,15 +5658,6 @@ __metadata: languageName: node linkType: hard -"is-typed-array@npm:^1.1.14": - version: 1.1.15 - resolution: "is-typed-array@npm:1.1.15" - dependencies: - which-typed-array: "npm:^1.1.16" - checksum: 10c0/415511da3669e36e002820584e264997ffe277ff136643a3126cc949197e6ca3334d0f12d084e83b1994af2e9c8141275c741cf2b7da5a2ff62dd0cac26f76c4 - languageName: node - linkType: hard - "is-typedarray@npm:^1.0.0": version: 1.0.0 resolution: "is-typedarray@npm:1.0.0" @@ -5831,13 +5686,6 @@ __metadata: languageName: node linkType: hard -"isarray@npm:^2.0.5": - version: 2.0.5 - resolution: "isarray@npm:2.0.5" - checksum: 10c0/4199f14a7a13da2177c66c31080008b7124331956f47bca57dd0b6ea9f11687aa25e565a2c7a2b519bc86988d10398e3049a1f5df13c9f6b7664154690ae79fd - languageName: node - linkType: hard - "isarray@npm:~1.0.0": version: 1.0.0 resolution: "isarray@npm:1.0.0" @@ -6983,17 +6831,6 @@ __metadata: languageName: node linkType: hard -"md5.js@npm:^1.3.4": - version: 1.3.5 - resolution: "md5.js@npm:1.3.5" - dependencies: - hash-base: "npm:^3.0.0" - inherits: "npm:^2.0.1" - safe-buffer: "npm:^5.1.2" - checksum: 10c0/b7bd75077f419c8e013fc4d4dada48be71882e37d69a44af65a2f2804b91e253441eb43a0614423a1c91bb830b8140b0dc906bc797245e2e275759584f4efcc5 - languageName: node - linkType: hard - "mdurl@npm:^2.0.0": version: 2.0.0 resolution: "mdurl@npm:2.0.0" @@ -7890,13 +7727,6 @@ __metadata: languageName: node linkType: hard -"possible-typed-array-names@npm:^1.0.0": - version: 1.1.0 - resolution: "possible-typed-array-names@npm:1.1.0" - checksum: 10c0/c810983414142071da1d644662ce4caebce890203eb2bc7bf119f37f3fe5796226e117e6cca146b521921fa6531072674174a3325066ac66fce089a53e1e5196 - languageName: node - linkType: hard - "prelude-ls@npm:^1.2.1": version: 1.2.1 resolution: "prelude-ls@npm:1.2.1" @@ -8176,21 +8006,6 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^2.3.8": - version: 2.3.8 - resolution: "readable-stream@npm:2.3.8" - dependencies: - core-util-is: "npm:~1.0.0" - inherits: "npm:~2.0.3" - isarray: "npm:~1.0.0" - process-nextick-args: "npm:~2.0.0" - safe-buffer: "npm:~5.1.1" - string_decoder: "npm:~1.1.1" - util-deprecate: "npm:~1.0.1" - checksum: 10c0/7efdb01f3853bc35ac62ea25493567bf588773213f5f4a79f9c365e1ad13bab845ac0dae7bc946270dc40c3929483228415e92a3fc600cc7e4548992f41ee3fa - languageName: node - linkType: hard - "readable-stream@npm:^3.5.0": version: 3.6.2 resolution: "readable-stream@npm:3.6.2" @@ -8477,16 +8292,6 @@ __metadata: languageName: node linkType: hard -"ripemd160@npm:^2.0.1": - version: 2.0.3 - resolution: "ripemd160@npm:2.0.3" - dependencies: - hash-base: "npm:^3.1.2" - inherits: "npm:^2.0.4" - checksum: 10c0/3f472fb453241cfe692a77349accafca38dbcdc9d96d5848c088b2932ba41eb968630ecff7b175d291c7487a4945aee5a81e30c064d1f94e36070f7e0c37ed6c - languageName: node - linkType: hard - "run-parallel@npm:^1.1.9": version: 1.1.9 resolution: "run-parallel@npm:1.1.9" @@ -8494,13 +8299,6 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0": - version: 5.2.1 - resolution: "safe-buffer@npm:5.2.1" - checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 - languageName: node - linkType: hard - "safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": version: 5.1.2 resolution: "safe-buffer@npm:5.1.2" @@ -8508,6 +8306,13 @@ __metadata: languageName: node linkType: hard +"safe-buffer@npm:~5.2.0": + version: 5.2.1 + resolution: "safe-buffer@npm:5.2.1" + checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 + languageName: node + linkType: hard + "safer-buffer@npm:>= 2.1.2 < 3": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" @@ -8623,20 +8428,6 @@ __metadata: languageName: node linkType: hard -"set-function-length@npm:^1.2.2": - version: 1.2.2 - resolution: "set-function-length@npm:1.2.2" - dependencies: - define-data-property: "npm:^1.1.4" - es-errors: "npm:^1.3.0" - function-bind: "npm:^1.1.2" - get-intrinsic: "npm:^1.2.4" - gopd: "npm:^1.0.1" - has-property-descriptors: "npm:^1.0.2" - checksum: 10c0/82850e62f412a258b71e123d4ed3873fa9377c216809551192bb6769329340176f109c2eeae8c22a8d386c76739855f78e8716515c818bcaef384b51110f0f3c - languageName: node - linkType: hard - "setprototypeof@npm:1.2.0": version: 1.2.0 resolution: "setprototypeof@npm:1.2.0" @@ -8644,19 +8435,6 @@ __metadata: languageName: node linkType: hard -"sha.js@npm:^2.4.0": - version: 2.4.12 - resolution: "sha.js@npm:2.4.12" - dependencies: - inherits: "npm:^2.0.4" - safe-buffer: "npm:^5.2.1" - to-buffer: "npm:^1.2.0" - bin: - sha.js: bin.js - checksum: 10c0/9d36bdd76202c8116abbe152a00055ccd8a0099cb28fc17c01fa7bb2c8cffb9ca60e2ab0fe5f274ed6c45dc2633d8c39cf7ab050306c231904512ba9da4d8ab1 - languageName: node - linkType: hard - "shallow-clone@npm:^3.0.0": version: 3.0.1 resolution: "shallow-clone@npm:3.0.1" @@ -9288,17 +9066,6 @@ __metadata: languageName: node linkType: hard -"to-buffer@npm:^1.2.0, to-buffer@npm:^1.2.1, to-buffer@npm:^1.2.2": - version: 1.2.2 - resolution: "to-buffer@npm:1.2.2" - dependencies: - isarray: "npm:^2.0.5" - safe-buffer: "npm:^5.2.1" - typed-array-buffer: "npm:^1.0.3" - checksum: 10c0/56bc56352f14a2c4a0ab6277c5fc19b51e9534882b98eb068b39e14146591e62fa5b06bf70f7fed1626230463d7e60dca81e815096656e5e01c195c593873d12 - languageName: node - linkType: hard - "to-fast-properties@npm:^2.0.0": version: 2.0.0 resolution: "to-fast-properties@npm:2.0.0" @@ -9535,17 +9302,6 @@ __metadata: languageName: node linkType: hard -"typed-array-buffer@npm:^1.0.3": - version: 1.0.3 - resolution: "typed-array-buffer@npm:1.0.3" - dependencies: - call-bound: "npm:^1.0.3" - es-errors: "npm:^1.3.0" - is-typed-array: "npm:^1.1.14" - checksum: 10c0/1105071756eb248774bc71646bfe45b682efcad93b55532c6ffa4518969fb6241354e4aa62af679ae83899ec296d69ef88f1f3763657cdb3a4d29321f7b83079 - languageName: node - linkType: hard - "typedarray-to-buffer@npm:^3.1.5": version: 3.1.5 resolution: "typedarray-to-buffer@npm:3.1.5" @@ -9608,6 +9364,13 @@ __metadata: languageName: node linkType: hard +"undici-types@npm:~8.3.0": + version: 8.3.0 + resolution: "undici-types@npm:8.3.0" + checksum: 10c0/c8aa7e2fbebfce519654dafadc0ece59be888d2ccaf180fb4495da875e7b536d2456345c384069c7e6f3e9c9ab7435f074957da306f142343eee86ff8048855a + languageName: node + linkType: hard + "undici@npm:^6.25.0": version: 6.27.0 resolution: "undici@npm:6.27.0" @@ -9988,21 +9751,6 @@ __metadata: languageName: node linkType: hard -"which-typed-array@npm:^1.1.16": - version: 1.1.22 - resolution: "which-typed-array@npm:1.1.22" - dependencies: - available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.9" - call-bound: "npm:^1.0.4" - for-each: "npm:^0.3.5" - get-proto: "npm:^1.0.1" - gopd: "npm:^1.2.0" - has-tostringtag: "npm:^1.0.2" - checksum: 10c0/e59db184a4e78b461fac3b05fafc1e7badbbedafbf04a967ee1de73717f1f9723a79699e7b5de71d449541cb5da8353efc01a4f8a72a152479850e54fa196c40 - languageName: node - linkType: hard - "which@npm:^2.0.1": version: 2.0.2 resolution: "which@npm:2.0.2" From 26b03436165297c36320d9d75c597e165aaa256a Mon Sep 17 00:00:00 2001 From: mt-btanner Date: Thu, 30 Jul 2026 10:01:28 +0900 Subject: [PATCH 6/8] feat(helper): add makeUrlSafe helper --- src/__tests__/makeUrlSafe.test.ts | 11 +++++++++++ src/makeUrlSafe.ts | 8 ++++++++ 2 files changed, 19 insertions(+) create mode 100644 src/__tests__/makeUrlSafe.test.ts create mode 100644 src/makeUrlSafe.ts diff --git a/src/__tests__/makeUrlSafe.test.ts b/src/__tests__/makeUrlSafe.test.ts new file mode 100644 index 00000000..99c4a80c --- /dev/null +++ b/src/__tests__/makeUrlSafe.test.ts @@ -0,0 +1,11 @@ +import { makeUrlSafe } from '../makeUrlSafe'; + +describe('makeUrlSafe', () => { + it('replaces "+" with "-"', () => { + expect(makeUrlSafe('test+string')).toEqual('test-string'); + }); + + it('replaces "/" with "_"', () => { + expect(makeUrlSafe('test/string')).toEqual('test_string'); + }); +}); diff --git a/src/makeUrlSafe.ts b/src/makeUrlSafe.ts new file mode 100644 index 00000000..943bd0b4 --- /dev/null +++ b/src/makeUrlSafe.ts @@ -0,0 +1,8 @@ +const ENC: Record = { + '+': '-', + '/': '_' +}; + +export function makeUrlSafe(string: string) { + return string.replace(/[+/]/g, (m) => ENC[m]); +} From 6aeb8809ab8ebaad63d6888550e040a6b7fde578 Mon Sep 17 00:00:00 2001 From: mt-btanner Date: Thu, 30 Jul 2026 10:39:17 +0900 Subject: [PATCH 7/8] refactor(deps): use makeUrlSafe & remove unused url-safe-base64 package --- package.json | 4 +--- sample/yarn.lock | 1 - src/helper.ts | 4 ++-- yarn.lock | 16 ---------------- 4 files changed, 3 insertions(+), 22 deletions(-) diff --git a/package.json b/package.json index fc3e3d3c..495ef575 100644 --- a/package.json +++ b/package.json @@ -33,8 +33,7 @@ "buffer": "^6.0.3", "process": "^0.11.10", "snake-case": "^3.0.4", - "stream-browserify": "^3.0.0", - "url-safe-base64": "^1.1.1" + "stream-browserify": "^3.0.0" }, "devDependencies": { "@commitlint/cli": "^12.1.4", @@ -43,7 +42,6 @@ "@types/create-hash": "^1.2.6", "@types/jest": "^27", "@types/node": "^26.1.2", - "@types/url-safe-base64": "^1.1.0", "@types/uuid": "^8.3.0", "@typescript-eslint/eslint-plugin": "^4.23.0", "@typescript-eslint/parser": "^4.23.0", diff --git a/sample/yarn.lock b/sample/yarn.lock index 869c9c98..b1ce936f 100644 --- a/sample/yarn.lock +++ b/sample/yarn.lock @@ -73,7 +73,6 @@ __metadata: process: "npm:^0.11.10" snake-case: "npm:^3.0.4" stream-browserify: "npm:^3.0.0" - url-safe-base64: "npm:^1.1.1" languageName: node linkType: soft diff --git a/src/helper.ts b/src/helper.ts index 972a8e68..28dc1ce3 100644 --- a/src/helper.ts +++ b/src/helper.ts @@ -1,7 +1,6 @@ declare const __VERSION__: string; import { snakeCase } from 'snake-case'; -import { encode } from 'url-safe-base64'; import { v4 as uuid } from 'uuid'; import storage from './storage'; @@ -19,6 +18,7 @@ import { import { MY_ACCOUNT_DOMAINS } from './server-paths'; import type { QueryData } from './api/open-service-url'; import { createBase64Hash } from './createBase64Hash'; +import { makeUrlSafe } from './makeUrlSafe'; export function constructScopes(scopes: Scopes = ''): string | undefined { return (Array.isArray(scopes) ? scopes.join(' ') : scopes) || undefined; @@ -139,7 +139,7 @@ export async function generateCodeChallenge(): Promise { storage.set('cv', codeVerifier); - return encode(await createBase64Hash(codeVerifier)); + return makeUrlSafe(await createBase64Hash(codeVerifier)); } export function generateSdkHeaderInfo(): { diff --git a/yarn.lock b/yarn.lock index 64f38f70..a2b6d243 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1414,7 +1414,6 @@ __metadata: "@types/create-hash": "npm:^1.2.6" "@types/jest": "npm:^27" "@types/node": "npm:^26.1.2" - "@types/url-safe-base64": "npm:^1.1.0" "@types/uuid": "npm:^8.3.0" "@typescript-eslint/eslint-plugin": "npm:^4.23.0" "@typescript-eslint/parser": "npm:^4.23.0" @@ -1436,7 +1435,6 @@ __metadata: ts-loader: "npm:^9" typedoc: "npm:^0.28.20" typescript: "npm:^4.2.4" - url-safe-base64: "npm:^1.1.1" webpack: "npm:^5" webpack-cli: "npm:^5" languageName: unknown @@ -1822,13 +1820,6 @@ __metadata: languageName: node linkType: hard -"@types/url-safe-base64@npm:^1.1.0": - version: 1.1.0 - resolution: "@types/url-safe-base64@npm:1.1.0" - checksum: 10c0/7061bc6c3e8abc6c0e3ed2e70fafe8bdb7e392f40f94ee7af11c7e9887cedbe01823a818a3844055c66797021ea68e8389813185a11531e7f2e5c03689d94d64 - languageName: node - linkType: hard - "@types/uuid@npm:^8.3.0": version: 8.3.0 resolution: "@types/uuid@npm:8.3.0" @@ -9487,13 +9478,6 @@ __metadata: languageName: node linkType: hard -"url-safe-base64@npm:^1.1.1": - version: 1.1.1 - resolution: "url-safe-base64@npm:1.1.1" - checksum: 10c0/00c18311a7c61ee1d83f04f8a78543573078e1542a8885d28fdf9a19b8b9cb31fb4093cf7e17d139f6fc6769fcc14ef9eb344550d6431215a7663d8fea3d518c - languageName: node - linkType: hard - "util-deprecate@npm:^1.0.1, util-deprecate@npm:~1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" From bfe1f0c9d2fbc0880f0a747cc54763d98e27169e Mon Sep 17 00:00:00 2001 From: mt-btanner Date: Thu, 30 Jul 2026 10:57:32 +0900 Subject: [PATCH 8/8] refactor(deps): replace uuid with browser/Node API --- package.json | 1 - src/helper.ts | 3 +-- yarn.lock | 8 -------- 3 files changed, 1 insertion(+), 11 deletions(-) diff --git a/package.json b/package.json index 495ef575..48cb9df8 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,6 @@ "@types/create-hash": "^1.2.6", "@types/jest": "^27", "@types/node": "^26.1.2", - "@types/uuid": "^8.3.0", "@typescript-eslint/eslint-plugin": "^4.23.0", "@typescript-eslint/parser": "^4.23.0", "conventional-changelog-cli": "^2.1.1", diff --git a/src/helper.ts b/src/helper.ts index 28dc1ce3..dc1fa212 100644 --- a/src/helper.ts +++ b/src/helper.ts @@ -1,7 +1,6 @@ declare const __VERSION__: string; import { snakeCase } from 'snake-case'; -import { v4 as uuid } from 'uuid'; import storage from './storage'; import { @@ -135,7 +134,7 @@ export async function generateConfigs( } export async function generateCodeChallenge(): Promise { - const codeVerifier = uuid(); + const codeVerifier = crypto.randomUUID(); storage.set('cv', codeVerifier); diff --git a/yarn.lock b/yarn.lock index a2b6d243..ad208265 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1414,7 +1414,6 @@ __metadata: "@types/create-hash": "npm:^1.2.6" "@types/jest": "npm:^27" "@types/node": "npm:^26.1.2" - "@types/uuid": "npm:^8.3.0" "@typescript-eslint/eslint-plugin": "npm:^4.23.0" "@typescript-eslint/parser": "npm:^4.23.0" buffer: "npm:^6.0.3" @@ -1820,13 +1819,6 @@ __metadata: languageName: node linkType: hard -"@types/uuid@npm:^8.3.0": - version: 8.3.0 - resolution: "@types/uuid@npm:8.3.0" - checksum: 10c0/b39ede3212609c3460b14446629796ab6acb61227a249e89d4d188fed84acfe71569b7d01b30a39f4443703810bf2b0959e586e0334d7088f11ec8606d373cde - languageName: node - linkType: hard - "@types/yargs-parser@npm:*": version: 15.0.0 resolution: "@types/yargs-parser@npm:15.0.0"