diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 866f0a12b..39edb1c58 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -4,7 +4,7 @@ "libs/providers/flagd": "0.13.3", "libs/providers/flagd-web": "0.7.3", "libs/providers/env-var": "0.3.1", - "libs/providers/config-cat": "0.7.4", + "libs/providers/config-cat": "0.7.5", "libs/providers/launchdarkly-client": "0.3.2", "libs/providers/go-feature-flag-web": "0.2.5", "libs/shared/flagd-core": "1.0.0", @@ -17,7 +17,7 @@ "libs/providers/multi-provider": "0.1.2", "libs/providers/multi-provider-web": "0.0.3", "libs/providers/growthbook-client": "0.1.2", - "libs/providers/config-cat-web": "0.1.5", + "libs/providers/config-cat-web": "0.1.6", "libs/shared/config-cat-core": "0.1.1", "libs/providers/unleash-web": "0.1.1", "libs/providers/growthbook": "0.1.2", diff --git a/CODEOWNERS b/CODEOWNERS index d6e561d63..23c36d46e 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -3,4 +3,4 @@ # # Managed by Peribolos: https://github.com/open-feature/community/blob/main/config/open-feature/sdk-javascript/workgroup.yaml # -* @open-feature/sdk-javascript-maintainers +* @open-feature/sdk-javascript-maintainers @open-feature/maintainers diff --git a/libs/providers/config-cat-web/CHANGELOG.md b/libs/providers/config-cat-web/CHANGELOG.md index 2cc16a399..7f5b2e6c0 100644 --- a/libs/providers/config-cat-web/CHANGELOG.md +++ b/libs/providers/config-cat-web/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.1.6](https://github.com/open-feature/js-sdk-contrib/compare/config-cat-web-provider-v0.1.5...config-cat-web-provider-v0.1.6) (2025-04-09) + + +### 🐛 Bug Fixes + +* **config-cat:** Rework error reporting ([#1242](https://github.com/open-feature/js-sdk-contrib/issues/1242)) ([0425619](https://github.com/open-feature/js-sdk-contrib/commit/04256197bf6e7da70afd4ac1c31bdaf55ce4b789)) + ## [0.1.5](https://github.com/open-feature/js-sdk-contrib/compare/config-cat-web-provider-v0.1.4...config-cat-web-provider-v0.1.5) (2025-03-14) diff --git a/libs/providers/config-cat-web/package-lock.json b/libs/providers/config-cat-web/package-lock.json index 301cf3651..3697f786c 100644 --- a/libs/providers/config-cat-web/package-lock.json +++ b/libs/providers/config-cat-web/package-lock.json @@ -1,12 +1,12 @@ { "name": "@openfeature/config-cat-web-provider", - "version": "0.1.5", + "version": "0.1.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@openfeature/config-cat-web-provider", - "version": "0.1.5", + "version": "0.1.6", "peerDependencies": { "@openfeature/web-sdk": "^1.0.0", "configcat-js-ssr": "^8.4.3" diff --git a/libs/providers/config-cat-web/package.json b/libs/providers/config-cat-web/package.json index fb8bfe49d..a3ca6df43 100644 --- a/libs/providers/config-cat-web/package.json +++ b/libs/providers/config-cat-web/package.json @@ -1,6 +1,6 @@ { "name": "@openfeature/config-cat-web-provider", - "version": "0.1.5", + "version": "0.1.6", "license": "Apache-2.0", "scripts": { "publish-if-not-exists": "cp $NPM_CONFIG_USERCONFIG .npmrc && if [ \"$(npm show $npm_package_name@$npm_package_version version)\" = \"$(npm run current-version -s)\" ]; then echo 'already published, skipping'; else npm publish --access public; fi", diff --git a/libs/providers/config-cat-web/src/lib/config-cat-web-provider.spec.ts b/libs/providers/config-cat-web/src/lib/config-cat-web-provider.spec.ts index e8f08808a..837d7a2d1 100644 --- a/libs/providers/config-cat-web/src/lib/config-cat-web-provider.spec.ts +++ b/libs/providers/config-cat-web/src/lib/config-cat-web-provider.spec.ts @@ -3,6 +3,7 @@ import { createConsoleLogger, createFlagOverridesFromMap, HookEvents, + IConfigCatCache, ISettingUnion, LogLevel, OverrideBehaviour, @@ -81,30 +82,47 @@ describe('ConfigCatWebProvider', () => { }); }); - it('should emit PROVIDER_ERROR event', () => { - const handler = jest.fn(); - const eventData: [string, unknown] = ['error', { error: 'error' }]; + it("should emit PROVIDER_READY event when underlying client is initialized after provider's initialize", async () => { + const cacheValue = '253370761200000\nW/"12345678-90a"\n{"f":{"booleanTrue":{"t":0,"v":{"b":true}}}}'; + + const fakeSharedCache = new (class implements IConfigCatCache { + private _value?: string; + get(key: string) { + return this._value; + } + set(key: string, value: string) { + this._value = value; + } + })(); + + const provider = ConfigCatWebProvider.create('configcat-sdk-1/1234567890123456789012/1234567890123456789012', { + cache: fakeSharedCache, + logger: createConsoleLogger(LogLevel.Off), + offline: true, + maxInitWaitTimeSeconds: 1, + }); - provider.events.addHandler(ProviderEvents.Error, handler); - configCatEmitter.emit('clientError', ...eventData); + const readyHandler = jest.fn(); + provider.events.addHandler(ProviderEvents.Ready, readyHandler); - expect(handler).toHaveBeenCalledWith({ - message: eventData[0], - metadata: eventData[1], - }); - }); + try { + await provider.initialize(); + } catch (err) { + expect((err as Error).message).toContain('underlying ConfigCat client could not initialize'); + } - it('should emit PROVIDER_READY event after successful evaluation during ERROR condition', async () => { - const errorHandler = jest.fn(); - provider.events.addHandler(ProviderEvents.Error, errorHandler); + expect(readyHandler).toHaveBeenCalledTimes(0); - configCatEmitter.emit('clientError', 'error', { error: 'error' }); - expect(errorHandler).toHaveBeenCalled(); + fakeSharedCache.set('', cacheValue); - const readyHandler = jest.fn(); - provider.events.addHandler(ProviderEvents.Ready, readyHandler); + // Make sure that the internal cache is refreshed. + await provider.configCatClient?.forceRefreshAsync(); + + provider.resolveBooleanEvaluation('booleanTrue', false, { targetingKey }); + + // Wait a little while for the Ready event to be emitted. + await new Promise((resolve) => setTimeout(resolve, 100)); - await provider.resolveBooleanEvaluation('booleanTrue', false, { targetingKey }); expect(readyHandler).toHaveBeenCalled(); }); }); diff --git a/libs/providers/config-cat-web/src/lib/config-cat-web-provider.ts b/libs/providers/config-cat-web/src/lib/config-cat-web-provider.ts index 897a9e0a5..08c874844 100644 --- a/libs/providers/config-cat-web/src/lib/config-cat-web-provider.ts +++ b/libs/providers/config-cat-web/src/lib/config-cat-web-provider.ts @@ -19,6 +19,7 @@ import { transformContext, } from '@openfeature/config-cat-core'; import { + ClientCacheState, getClient, IConfig, IConfigCatClient, @@ -30,7 +31,7 @@ import { export class ConfigCatWebProvider implements Provider { public readonly events = new OpenFeatureEventEmitter(); private readonly _clientFactory: (provider: ConfigCatWebProvider) => IConfigCatClient; - private _hasError = false; + private _isProviderReady = false; private _client?: IConfigCatClient; public runsOn: Paradigm = 'client'; @@ -53,19 +54,11 @@ export class ConfigCatWebProvider implements Provider { options.setupHooks = (hooks) => { oldSetupHooks?.(hooks); - hooks.on('configChanged', (projectConfig: IConfig | undefined) => + hooks.on('configChanged', (config: IConfig) => provider.events.emit(ProviderEvents.ConfigurationChanged, { - flagsChanged: projectConfig ? Object.keys(projectConfig.settings) : undefined, + flagsChanged: Object.keys(config.settings), }), ); - - hooks.on('clientError', (message: string, error) => { - provider._hasError = true; - provider.events.emit(ProviderEvents.Error, { - message: message, - metadata: error, - }); - }); }; return getClient(sdkKey, PollingMode.AutoPoll, options); @@ -74,8 +67,19 @@ export class ConfigCatWebProvider implements Provider { public async initialize(): Promise { const client = this._clientFactory(this); - await client.waitForReady(); + const clientCacheState = await client.waitForReady(); this._client = client; + + if (clientCacheState !== ClientCacheState.NoFlagData) { + this._isProviderReady = true; + } else { + // OpenFeature provider defines ready state like this: "The provider is ready to resolve flags." + // However, ConfigCat client's behavior is different: in some cases ready state may be reached + // even if the client's internal, in-memory cache hasn't been populated yet, that is, + // the client is not able to evaluate feature flags yet. In such cases we throw an error to + // prevent the provider from being set ready right away, and check for the ready state later. + throw Error('The underlying ConfigCat client could not initialize within maxInitWaitTimeSeconds.'); + } } public get configCatClient() { @@ -137,13 +141,22 @@ export class ConfigCatWebProvider implements Provider { const configCatDefaultValue = flagType !== 'object' ? (defaultValue as SettingValue) : JSON.stringify(defaultValue); - const { value, ...evaluationData } = this._client - .snapshot() - .getValueDetails(flagKey, configCatDefaultValue, transformContext(context)); + const snapshot = this._client.snapshot(); + + const { value, ...evaluationData } = snapshot.getValueDetails( + flagKey, + configCatDefaultValue, + transformContext(context), + ); + + if (!this._isProviderReady && snapshot.cacheState !== ClientCacheState.NoFlagData) { + // Ideally, we would check ConfigCat client's initialization state in its "background" polling loop. + // This is not possible at the moment, so as a workaround, we do the check on feature flag evaluation. + // There are plans to improve this situation, so let's revise this + // as soon as ConfigCat SDK implements the necessary event. - if (this._hasError && !evaluationData.errorMessage && !evaluationData.errorException) { - this._hasError = false; - this.events.emit(ProviderEvents.Ready); + this._isProviderReady = true; + setTimeout(() => this.events.emit(ProviderEvents.Ready), 0); } if (evaluationData.isDefaultValue) { diff --git a/libs/providers/config-cat/CHANGELOG.md b/libs/providers/config-cat/CHANGELOG.md index 58b388067..8881863f4 100644 --- a/libs/providers/config-cat/CHANGELOG.md +++ b/libs/providers/config-cat/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.7.5](https://github.com/open-feature/js-sdk-contrib/compare/config-cat-provider-v0.7.4...config-cat-provider-v0.7.5) (2025-04-09) + + +### 🐛 Bug Fixes + +* **config-cat:** Rework error reporting ([#1242](https://github.com/open-feature/js-sdk-contrib/issues/1242)) ([0425619](https://github.com/open-feature/js-sdk-contrib/commit/04256197bf6e7da70afd4ac1c31bdaf55ce4b789)) + ## [0.7.4](https://github.com/open-feature/js-sdk-contrib/compare/config-cat-provider-v0.7.3...config-cat-provider-v0.7.4) (2025-03-14) diff --git a/libs/providers/config-cat/package-lock.json b/libs/providers/config-cat/package-lock.json index bd3737178..41257c5b6 100644 --- a/libs/providers/config-cat/package-lock.json +++ b/libs/providers/config-cat/package-lock.json @@ -1,12 +1,12 @@ { "name": "@openfeature/config-cat-provider", - "version": "0.7.4", + "version": "0.7.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@openfeature/config-cat-provider", - "version": "0.7.4", + "version": "0.7.5", "peerDependencies": { "@openfeature/server-sdk": "^1.13.5", "configcat-node": "^11.3.1" diff --git a/libs/providers/config-cat/package.json b/libs/providers/config-cat/package.json index 7132a8a19..2637fd76d 100644 --- a/libs/providers/config-cat/package.json +++ b/libs/providers/config-cat/package.json @@ -1,6 +1,6 @@ { "name": "@openfeature/config-cat-provider", - "version": "0.7.4", + "version": "0.7.5", "license": "Apache-2.0", "scripts": { "publish-if-not-exists": "cp $NPM_CONFIG_USERCONFIG .npmrc && if [ \"$(npm show $npm_package_name@$npm_package_version version)\" = \"$(npm run current-version -s)\" ]; then echo 'already published, skipping'; else npm publish --access public; fi", diff --git a/libs/providers/config-cat/src/lib/config-cat-provider.spec.ts b/libs/providers/config-cat/src/lib/config-cat-provider.spec.ts index 561c916b5..776abd1cb 100644 --- a/libs/providers/config-cat/src/lib/config-cat-provider.spec.ts +++ b/libs/providers/config-cat/src/lib/config-cat-provider.spec.ts @@ -4,6 +4,7 @@ import { createConsoleLogger, createFlagOverridesFromMap, HookEvents, + IConfigCatCache, ISettingUnion, LogLevel, OverrideBehaviour, @@ -82,30 +83,51 @@ describe('ConfigCatProvider', () => { }); }); - it('should emit PROVIDER_ERROR event', () => { - const handler = jest.fn(); - const eventData: [string, unknown] = ['error', { error: 'error' }]; + it("should emit PROVIDER_READY event when underlying client is initialized after provider's initialize", async () => { + const cacheValue = '253370761200000\nW/"12345678-90a"\n{"f":{"booleanTrue":{"t":0,"v":{"b":true}}}}'; + + const fakeSharedCache = new (class implements IConfigCatCache { + private _value?: string; + get(key: string) { + return this._value; + } + set(key: string, value: string) { + this._value = value; + } + })(); + + const provider = ConfigCatProvider.create( + 'configcat-sdk-1/1234567890123456789012/1234567890123456789012', + PollingMode.AutoPoll, + { + cache: fakeSharedCache, + logger: createConsoleLogger(LogLevel.Off), + offline: true, + maxInitWaitTimeSeconds: 1, + }, + ); - provider.events.addHandler(ProviderEvents.Error, handler); - configCatEmitter.emit('clientError', ...eventData); + const readyHandler = jest.fn(); + provider.events.addHandler(ProviderEvents.Ready, readyHandler); - expect(handler).toHaveBeenCalledWith({ - message: eventData[0], - metadata: eventData[1], - }); - }); + try { + await provider.initialize(); + } catch (err) { + expect((err as Error).message).toContain('underlying ConfigCat client could not initialize'); + } - it('should emit PROVIDER_READY event after successful evaluation during ERROR condition', async () => { - const errorHandler = jest.fn(); - provider.events.addHandler(ProviderEvents.Error, errorHandler); + expect(readyHandler).toHaveBeenCalledTimes(0); - configCatEmitter.emit('clientError', 'error', { error: 'error' }); - expect(errorHandler).toHaveBeenCalled(); + fakeSharedCache.set('', cacheValue); - const readyHandler = jest.fn(); - provider.events.addHandler(ProviderEvents.Ready, readyHandler); + // Make sure that the internal cache is refreshed. + await provider.configCatClient?.forceRefreshAsync(); + + provider.resolveBooleanEvaluation('booleanTrue', false, { targetingKey }); + + // Wait a little while for the Ready event to be emitted. + await new Promise((resolve) => setTimeout(resolve, 100)); - await provider.resolveBooleanEvaluation('booleanTrue', false, { targetingKey }); expect(readyHandler).toHaveBeenCalled(); }); }); diff --git a/libs/providers/config-cat/src/lib/config-cat-provider.ts b/libs/providers/config-cat/src/lib/config-cat-provider.ts index bdd8832e2..b54b586a0 100644 --- a/libs/providers/config-cat/src/lib/config-cat-provider.ts +++ b/libs/providers/config-cat/src/lib/config-cat-provider.ts @@ -18,13 +18,14 @@ import { toResolutionDetails, transformContext, } from '@openfeature/config-cat-core'; -import { PollingMode, SettingValue } from 'configcat-common'; +import { ClientCacheState, PollingMode, SettingValue } from 'configcat-common'; import { IConfigCatClient, getClient, IConfig, OptionsForPollingMode } from 'configcat-node'; export class ConfigCatProvider implements Provider { public readonly events = new OpenFeatureEventEmitter(); private readonly _clientFactory: (provider: ConfigCatProvider) => IConfigCatClient; - private _hasError = false; + private readonly _pollingMode: PollingMode; + private _isProviderReady = false; private _client?: IConfigCatClient; public runsOn: Paradigm = 'server'; @@ -33,8 +34,9 @@ export class ConfigCatProvider implements Provider { name: ConfigCatProvider.name, }; - protected constructor(clientFactory: (provider: ConfigCatProvider) => IConfigCatClient) { + protected constructor(clientFactory: (provider: ConfigCatProvider) => IConfigCatClient, pollingMode: PollingMode) { this._clientFactory = clientFactory; + this._pollingMode = pollingMode; } public static create( @@ -50,29 +52,32 @@ export class ConfigCatProvider implements Provider { options.setupHooks = (hooks) => { oldSetupHooks?.(hooks); - hooks.on('configChanged', (projectConfig: IConfig | undefined) => + hooks.on('configChanged', (config: IConfig) => provider.events.emit(ProviderEvents.ConfigurationChanged, { - flagsChanged: projectConfig ? Object.keys(projectConfig.settings) : undefined, + flagsChanged: Object.keys(config.settings), }), ); - - hooks.on('clientError', (message: string, error) => { - provider._hasError = true; - provider.events.emit(ProviderEvents.Error, { - message: message, - metadata: error, - }); - }); }; return getClient(sdkKey, pollingMode, options); - }); + }, pollingMode ?? PollingMode.AutoPoll); } public async initialize(): Promise { const client = this._clientFactory(this); - await client.waitForReady(); + const clientCacheState = await client.waitForReady(); this._client = client; + + if (this._pollingMode !== PollingMode.AutoPoll || clientCacheState !== ClientCacheState.NoFlagData) { + this._isProviderReady = true; + } else { + // OpenFeature provider defines ready state like this: "The provider is ready to resolve flags." + // However, ConfigCat client's behavior is different: in some cases ready state may be reached + // even if the client's internal, in-memory cache hasn't been populated yet, that is, + // the client is not able to evaluate feature flags yet. In such cases we throw an error to + // prevent the provider from being set ready right away, and check for the ready state later. + throw Error('The underlying ConfigCat client could not initialize within maxInitWaitTimeSeconds.'); + } } public get configCatClient() { @@ -140,9 +145,14 @@ export class ConfigCatProvider implements Provider { transformContext(context), ); - if (this._hasError && !evaluationData.errorMessage && !evaluationData.errorException) { - this._hasError = false; - this.events.emit(ProviderEvents.Ready); + if (!this._isProviderReady && this._client.snapshot().cacheState !== ClientCacheState.NoFlagData) { + // Ideally, we would check ConfigCat client's initialization state in its "background" polling loop. + // This is not possible at the moment, so as a workaround, we do the check on feature flag evaluation. + // There are plans to improve this situation, so let's revise this + // as soon as ConfigCat SDK implements the necessary event. + + this._isProviderReady = true; + setTimeout(() => this.events.emit(ProviderEvents.Ready), 0); } if (evaluationData.isDefaultValue) { diff --git a/libs/providers/flipt-web/README.md b/libs/providers/flipt-web/README.md index 96bd21e8d..0435f0017 100644 --- a/libs/providers/flipt-web/README.md +++ b/libs/providers/flipt-web/README.md @@ -2,7 +2,7 @@ [Flipt](https://www.flipt.io/) is an open source developer friendly feature flagging solution, that allows for easy management and fast feature evaluation. -This provider is an implementation on top of the official [Flipt Browser Client Side SDK](https://www.npmjs.com/package/@flipt-io/flipt-client-browser). +This provider is an implementation on top of the official [Flipt JavaScript Client Side SDK](https://www.npmjs.com/package/@flipt-io/flipt-client-js). The main difference between this provider and [`@openfeature/flipt-provider`](https://www.npmjs.com/package/@openfeature/flipt-provider) is that it uses a **static evaluation context**. This provider is more sustainable for client-side implementation. diff --git a/libs/providers/flipt-web/package-lock.json b/libs/providers/flipt-web/package-lock.json index 286306740..a9ff91732 100644 --- a/libs/providers/flipt-web/package-lock.json +++ b/libs/providers/flipt-web/package-lock.json @@ -7,21 +7,33 @@ "": { "name": "@openfeature/flipt-web-provider", "version": "0.1.2", - "dependencies": { - "@flipt-io/flipt-client-browser": "^0.3.1", - "tslib": "^2.3.0" - }, - "devDependencies": { - "undici": "^6.13.0" - }, + "license": "Apache-2.0", "peerDependencies": { - "@openfeature/web-sdk": "^1.0.0" + "@flipt-io/flipt-client-js": "^0.0.1", + "@openfeature/web-sdk": "^1.0.0", + "undici": "^5.0.0" + } + }, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "peer": true, + "engines": { + "node": ">=14" } }, - "node_modules/@flipt-io/flipt-client-browser": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@flipt-io/flipt-client-browser/-/flipt-client-browser-0.3.1.tgz", - "integrity": "sha512-1MFuQuHRENnzVooxrfQjFBLNBfE5uGBJmF2NuPFXTYMZn+sGelFovuNVuKlHqegI3Dqzz9Al2qJlkeFo+MhHxg==" + "node_modules/@flipt-io/flipt-client-js": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@flipt-io/flipt-client-js/-/flipt-client-js-0.0.1.tgz", + "integrity": "sha512-/bNcrfJZSxYeW80sNAo9YhbL2x+5f+ejhjaEJYCjaHvOE7WWmRdFANyM3RT/kGlpEcQGsWqI1Ca87eqlpzNVDQ==", + "peer": true, + "dependencies": { + "node-fetch": "^3.3.0" + }, + "engines": { + "node": ">=14" + } }, "node_modules/@openfeature/core": { "version": "1.4.0", @@ -38,18 +50,106 @@ "@openfeature/core": "1.4.0" } }, - "node_modules/tslib": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", - "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==" + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "peer": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "peer": true, + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "peer": true, + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "peer": true, + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "peer": true, + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } }, "node_modules/undici": { - "version": "6.20.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.20.1.tgz", - "integrity": "sha512-AjQF1QsmqfJys+LXfGTNum+qw4S88CojRInG/6t31W/1fk6G59s92bnAvGz5Cmur+kQv2SURXEvvudLmbrE8QA==", - "dev": true, + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz", + "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==", + "peer": true, + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "peer": true, "engines": { - "node": ">=18.17" + "node": ">= 8" } } } diff --git a/libs/providers/flipt-web/package.json b/libs/providers/flipt-web/package.json index 269e5e97b..f914b3641 100644 --- a/libs/providers/flipt-web/package.json +++ b/libs/providers/flipt-web/package.json @@ -9,13 +9,8 @@ "current-version": "echo $npm_package_version" }, "peerDependencies": { - "@openfeature/web-sdk": "^1.0.0" - }, - "devDependencies": { - "undici": "^6.13.0" - }, - "dependencies": { - "@flipt-io/flipt-client-browser": "^0.3.1", + "@openfeature/web-sdk": "^1.0.0", + "@flipt-io/flipt-client-js": "^0.0.1", "undici": "^5.0.0" } } diff --git a/libs/providers/flipt-web/src/lib/flipt-web-provider.spec.ts b/libs/providers/flipt-web/src/lib/flipt-web-provider.spec.ts index 274c6055b..a08778c55 100644 --- a/libs/providers/flipt-web/src/lib/flipt-web-provider.spec.ts +++ b/libs/providers/flipt-web/src/lib/flipt-web-provider.spec.ts @@ -28,12 +28,12 @@ describe('FliptWebProvider', () => { describe('method resolveStringEvaluation', () => { it('should throw general error for non-existent flag', () => { expect(() => { - provider.resolveStringEvaluation('nonExistent', 'default', { fizz: 'buzz' }); + provider.resolveStringEvaluation('nonExistent', 'default', { targetingKey: '1234', fizz: 'buzz' }); }).toThrow(GeneralError); }); it('should return right value if key exists', () => { - const value = provider.resolveStringEvaluation('flag_string', 'default', { fizz: 'buzz' }); + const value = provider.resolveStringEvaluation('flag_string', 'default', { targetingKey: '1234', fizz: 'buzz' }); expect(value).toHaveProperty('value', 'variant1'); expect(value).toHaveProperty('reason', 'TARGETING_MATCH'); }); @@ -42,12 +42,12 @@ describe('FliptWebProvider', () => { describe('method resolveNumberEvaluation', () => { it('should throw general error for non-existent flag', () => { expect(() => { - provider.resolveNumberEvaluation('nonExistent', 1, { fizz: 'buzz' }); + provider.resolveNumberEvaluation('nonExistent', 1, { targetingKey: '1234', fizz: 'buzz' }); }).toThrow(GeneralError); }); it('should return right value if key exists', () => { - const value = provider.resolveNumberEvaluation('flag_number', 0, { fizz: 'buzz' }); + const value = provider.resolveNumberEvaluation('flag_number', 0, { targetingKey: '1234', fizz: 'buzz' }); expect(value).toHaveProperty('value', 5); expect(value).toHaveProperty('reason', 'TARGETING_MATCH'); }); @@ -56,12 +56,12 @@ describe('FliptWebProvider', () => { describe('method resolveBooleanEvaluation', () => { it('should throw general error for non-existent flag', () => { expect(() => { - provider.resolveBooleanEvaluation('nonExistent', false, { fizz: 'buzz' }); + provider.resolveBooleanEvaluation('nonExistent', false, { targetingKey: '1234', fizz: 'buzz' }); }).toThrow(GeneralError); }); it('should return right value if key exists', () => { - const value = provider.resolveBooleanEvaluation('flag_boolean', false, { fizz: 'buzz' }); + const value = provider.resolveBooleanEvaluation('flag_boolean', false, { targetingKey: '1234', fizz: 'buzz' }); expect(value).toHaveProperty('value', true); expect(value).toHaveProperty('reason', 'TARGETING_MATCH'); }); @@ -70,12 +70,16 @@ describe('FliptWebProvider', () => { describe('method resolveObjectEvaluation', () => { it('should throw general error for non-existent flag', () => { expect(() => { - provider.resolveObjectEvaluation('nonExistent', {}, { fizz: 'buzz' }); + provider.resolveObjectEvaluation('nonExistent', {}, { targetingKey: '1234', fizz: 'buzz' }); }).toThrow(GeneralError); }); it('should return right value if key exists', () => { - const value = provider.resolveObjectEvaluation('flag_object', { fizz: 'buzz' }, { fizz: 'buzz' }); + const value = provider.resolveObjectEvaluation( + 'flag_object', + { fizz: 'buzz' }, + { targetingKey: '1234', fizz: 'buzz' }, + ); expect(value).toHaveProperty('value', { foo: 'bar' }); expect(value).toHaveProperty('reason', 'TARGETING_MATCH'); }); @@ -83,7 +87,7 @@ describe('FliptWebProvider', () => { it('should throw TypeMismatchError on non-number value', () => { expect(() => { - provider.resolveNumberEvaluation('flag_string', 0, { fizz: 'buzz' }); + provider.resolveNumberEvaluation('flag_string', 0, { targetingKey: '1234', fizz: 'buzz' }); }).toThrow(TypeMismatchError); }); }); diff --git a/libs/providers/flipt-web/src/lib/flipt-web-provider.ts b/libs/providers/flipt-web/src/lib/flipt-web-provider.ts index 9761e399e..073b10eb2 100644 --- a/libs/providers/flipt-web/src/lib/flipt-web-provider.ts +++ b/libs/providers/flipt-web/src/lib/flipt-web-provider.ts @@ -9,7 +9,7 @@ import { GeneralError, ProviderFatalError, } from '@openfeature/web-sdk'; -import { FliptEvaluationClient } from '@flipt-io/flipt-client-browser'; +import { FliptClient } from '@flipt-io/flipt-client-js/browser'; import { EvaluationReason, FliptWebProviderOptions } from './models'; import { transformContext } from './context-transformer'; @@ -28,7 +28,7 @@ export class FliptWebProvider implements Provider { private _options?: FliptWebProviderOptions; // client is the Flipt client reference - private _client?: FliptEvaluationClient; + private _client?: FliptClient; readonly runsOn = 'client'; @@ -48,7 +48,8 @@ export class FliptWebProvider implements Provider { async initializeClient() { try { - this._client = await FliptEvaluationClient.init(this._namespace || 'default', { + this._client = await FliptClient.init({ + namespace: this._namespace || 'default', url: this._options?.url || 'http://localhost:8080', fetcher: this._options?.fetcher, authentication: this._options?.authentication, @@ -70,7 +71,11 @@ export class FliptWebProvider implements Provider { const evalContext: Record = transformContext(context); try { - const result = this._client?.evaluateBoolean(flagKey, context.targetingKey ?? '', evalContext); + const result = this._client?.evaluateBoolean({ + flagKey, + entityId: context.targetingKey ?? '', + context: evalContext, + }); switch (result?.reason) { case EvaluationReason.DEFAULT: @@ -135,7 +140,11 @@ export class FliptWebProvider implements Provider { const evalContext: Record = transformContext(context); try { - const result = this._client?.evaluateVariant(flagKey, context.targetingKey ?? '', evalContext); + const result = this._client?.evaluateVariant({ + flagKey, + entityId: context.targetingKey ?? '', + context: evalContext, + }); if (result?.reason === EvaluationReason.FLAG_DISABLED) { return { diff --git a/package-lock.json b/package-lock.json index 3b9bdefa7..09472114e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "@connectrpc/connect": "^1.4.0", "@connectrpc/connect-web": "^1.4.0", "@flipt-io/flipt": "^1.2.0", - "@flipt-io/flipt-client-browser": "^0.3.1", + "@flipt-io/flipt-client-js": "^0.0.1", "@growthbook/growthbook": "^1.3.1", "@grpc/grpc-js": "^1.9.13", "@opentelemetry/api": "^1.3.0", @@ -87,7 +87,8 @@ "ts-jest": "29.2.5", "ts-node": "10.9.2", "typescript": "5.7.3", - "undici": "^5.0.0" + "undici": "^5.0.0", + "verdaccio": "^5.0.4" } }, "node_modules/@ampproject/remapping": { @@ -2899,8 +2900,6 @@ "integrity": "sha512-fi0eVdCOtKu5Ed6+E8mYxUF6ZTFJDZvHogCBelM0xVXmrDEkyM22gRArQzq1YcHPm1V47Vf/iAD+WgVdUlJCGg==", "dev": true, "license": "Apache-2.0", - "optional": true, - "peer": true, "dependencies": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -2931,8 +2930,6 @@ "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, "license": "BSD-3-Clause", - "optional": true, - "peer": true, "dependencies": { "side-channel": "^1.0.6" }, @@ -2949,8 +2946,6 @@ "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", "dev": true, "license": "BSD-3-Clause", - "optional": true, - "peer": true, "dependencies": { "tldts": "^6.1.32" }, @@ -2964,8 +2959,6 @@ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "bin": { "uuid": "dist/bin/uuid" } @@ -3170,11 +3163,33 @@ "integrity": "sha512-LapnGsMxaf01aJmjeUmfYBwGiFx7+qImv10WfQJjBNGIv9fwmzmA3IzFyod5EtIJ1ck0gEW2C9EK03BQz4/C6Q==", "license": "MIT" }, - "node_modules/@flipt-io/flipt-client-browser": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@flipt-io/flipt-client-browser/-/flipt-client-browser-0.3.1.tgz", - "integrity": "sha512-1MFuQuHRENnzVooxrfQjFBLNBfE5uGBJmF2NuPFXTYMZn+sGelFovuNVuKlHqegI3Dqzz9Al2qJlkeFo+MhHxg==", - "license": "MIT" + "node_modules/@flipt-io/flipt-client-js": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@flipt-io/flipt-client-js/-/flipt-client-js-0.0.1.tgz", + "integrity": "sha512-/bNcrfJZSxYeW80sNAo9YhbL2x+5f+ejhjaEJYCjaHvOE7WWmRdFANyM3RT/kGlpEcQGsWqI1Ca87eqlpzNVDQ==", + "dependencies": { + "node-fetch": "^3.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@flipt-io/flipt-client-js/node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } }, "node_modules/@growthbook/growthbook": { "version": "1.4.1", @@ -7527,8 +7542,6 @@ "integrity": "sha512-sPmHdnYuRSMgABCsTJEfz8tb/smONsWVg0g4KK2QycyYZ/A+RwZLV1JLiQb4wzu9zvS0HSloqWqkWlyNHW3mtw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "@verdaccio/config": "8.0.0-next-8.1", "@verdaccio/core": "8.0.0-next-8.1", @@ -7554,8 +7567,6 @@ "integrity": "sha512-28XRwpKiE3Z6KsnwE7o8dEM+zGWOT+Vef7RVJyUlG176JVDbGGip3HfCmFioE1a9BklLyGEFTu6D69BzfbRkzA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "lockfile": "1.0.4" }, @@ -7574,8 +7585,6 @@ "dev": true, "hasInstallScript": true, "license": "MIT", - "optional": true, - "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" @@ -7587,8 +7596,6 @@ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "ms": "^2.1.3" }, @@ -7607,8 +7614,6 @@ "integrity": "sha512-BfvmO+ZdbwfttOwrdTPD6Bccr1ZfZ9Tk/9wpXamxdWB/XPWlk3FtyGsvqCmxsInRLPhQ/FSk9c3zRCGvICTFYg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "@verdaccio/core": "8.0.0-next-8.1", "@verdaccio/file-locking": "13.0.0-next-8.0", @@ -7633,8 +7638,6 @@ "integrity": "sha512-F/YZANu4DmpcEV0jronzI7v2fGVWkQ5Mwi+bVmV+ACJ+EzR0c9Jbhtbe5QyLUuzR97t8R5E/Xe53O0cc2LukdQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "http-errors": "2.0.0", "http-status-codes": "2.2.0" @@ -7652,9 +7655,7 @@ "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.2.0.tgz", "integrity": "sha512-feERVo9iWxvnejp3SEfm/+oNG517npqL2/PIA8ORjyOZjGC7TwCRQsZylciLS64i6pJ0wRYz3rkXLRwbtFa8Ng==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/@verdaccio/config": { "version": "8.0.0-next-8.1", @@ -7662,8 +7663,6 @@ "integrity": "sha512-goDVOH4e8xMUxjHybJpi5HwIecVFqzJ9jeNFrRUgtUUn0PtFuNMHgxOeqDKRVboZhc5HK90yed8URK/1O6VsUw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "@verdaccio/core": "8.0.0-next-8.1", "@verdaccio/utils": "7.0.1-next-8.1", @@ -7686,8 +7685,6 @@ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "ms": "^2.1.3" }, @@ -7706,8 +7703,6 @@ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "argparse": "^2.0.1" }, @@ -7721,8 +7716,6 @@ "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", "dev": true, "license": "ISC", - "optional": true, - "peer": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -7739,8 +7732,6 @@ "integrity": "sha512-kQRCB2wgXEh8H88G51eQgAFK9IxmnBtkQ8sY5FbmB6PbBkyHrbGcCp+2mtRqqo36j0W1VAlfM3XzoknMy6qQnw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "ajv": "8.17.1", "core-js": "3.37.1", @@ -7764,8 +7755,6 @@ "dev": true, "hasInstallScript": true, "license": "MIT", - "optional": true, - "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" @@ -7777,8 +7766,6 @@ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "license": "ISC", - "optional": true, - "peer": true, "bin": { "semver": "bin/semver.js" }, @@ -7792,8 +7779,6 @@ "integrity": "sha512-oqYLfv3Yg3mAgw9qhASBpjD50osj2AX4IwbkUtyuhhKGyoFU9eZdrbeW6tpnqUnj6yBMtAPm2eGD4BwQuX400g==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "lockfile": "1.0.4" }, @@ -7811,8 +7796,6 @@ "integrity": "sha512-mqGCUBs862g8mICZwX8CG92p1EZ1Un0DJ2DB7+iVu2TYaEeKoHoIdafabVdiYrbOjLcAOOBrMKE1Wnn14eLxpA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "@verdaccio/logger": "8.0.0-next-8.1", "debug": "4.3.7", @@ -7832,8 +7815,6 @@ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "ms": "^2.1.3" }, @@ -7852,8 +7833,6 @@ "integrity": "sha512-7AXG7qlcVFmF+Nue2oKaraprGRtaBvrQIOvc/E89+7hAe399V01KnZI6E/ET56u7U9fq0MSlp92HBcdotlpUXg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "@verdaccio/commons-api": "10.2.0", "@verdaccio/file-locking": "10.3.1", @@ -7877,9 +7856,7 @@ "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/@verdaccio/local-storage-legacy/node_modules/debug": { "version": "4.3.4", @@ -7887,8 +7864,6 @@ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "ms": "2.1.2" }, @@ -7906,9 +7881,7 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/@verdaccio/logger": { "version": "8.0.0-next-8.1", @@ -7916,8 +7889,6 @@ "integrity": "sha512-w5kR0/umQkfH2F4PK5Fz9T6z3xz+twewawKLPTUfAgrVAOiWxcikGhhcHWhSGiJ0lPqIa+T0VYuLWMeVeDirGw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "@verdaccio/logger-commons": "8.0.0-next-8.1", "pino": "8.17.2" @@ -7936,8 +7907,6 @@ "integrity": "sha512-V+/B1Wnct3IZ90q6HkI1a3dqbS0ds7s/5WPrS5cmBeLEw78/OGgF76XkhI2+lett7Un1CjVow7mcebOWcZ/Sqw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "@verdaccio/logger-commons": "8.0.0-next-8.1", "pino": "7.11.0" @@ -7956,8 +7925,6 @@ "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "end-of-stream": "^1.4.1", "inherits": "^2.0.3", @@ -7970,9 +7937,7 @@ "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz", "integrity": "sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/@verdaccio/logger-7/node_modules/pino": { "version": "7.11.0", @@ -7980,8 +7945,6 @@ "integrity": "sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "atomic-sleep": "^1.0.0", "fast-redact": "^3.0.0", @@ -8005,8 +7968,6 @@ "integrity": "sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "duplexify": "^4.1.2", "split2": "^4.0.0" @@ -8017,9 +7978,7 @@ "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz", "integrity": "sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/@verdaccio/logger-7/node_modules/real-require": { "version": "0.1.0", @@ -8027,8 +7986,6 @@ "integrity": "sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">= 12.13.0" } @@ -8039,8 +7996,6 @@ "integrity": "sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "atomic-sleep": "^1.0.0" } @@ -8051,8 +8006,6 @@ "integrity": "sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "real-require": "^0.1.0" } @@ -8063,8 +8016,6 @@ "integrity": "sha512-jCge//RT4uaK7MarhpzcJeJ5Uvtu/DbJ1wvJQyGiFe+9AvxDGm3EUFXvawLFZ0lzYhmLt1nvm7kevcc3vOm2ZQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "@verdaccio/core": "8.0.0-next-8.1", "@verdaccio/logger-prettify": "8.0.0-next-8.0", @@ -8085,8 +8036,6 @@ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "ms": "^2.1.3" }, @@ -8105,8 +8054,6 @@ "integrity": "sha512-7mAFHZF2NPTubrOXYp2+fbMjRW5MMWXMeS3LcpupMAn5uPp6jkKEM8NC4IVJEevC5Ph4vPVZqpoPDpgXHEaV3Q==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "colorette": "2.0.20", "dayjs": "1.11.13", @@ -8128,8 +8075,6 @@ "integrity": "sha512-GpAdJYky1WmOERpxPoCkVSwTTJIsVAjqf2a2uQNvi7R3UZhs059JKhWcZjJMVCGV0uz9xgQvtb3DEuYGHqyaOg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "@verdaccio/config": "8.0.0-next-8.1", "@verdaccio/core": "8.0.0-next-8.1", @@ -8156,8 +8101,6 @@ "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">= 0.6" } @@ -8168,8 +8111,6 @@ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "ms": "^2.1.3" }, @@ -8188,8 +8129,6 @@ "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -8233,8 +8172,6 @@ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "ms": "2.0.0" } @@ -8244,9 +8181,7 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/@verdaccio/middleware/node_modules/lru-cache": { "version": "7.18.3", @@ -8254,8 +8189,6 @@ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, "license": "ISC", - "optional": true, - "peer": true, "engines": { "node": ">=12" } @@ -8266,8 +8199,6 @@ "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "bin": { "mime": "cli.js" }, @@ -8280,9 +8211,7 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/@verdaccio/middleware/node_modules/qs": { "version": "6.13.0", @@ -8290,8 +8219,6 @@ "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, "license": "BSD-3-Clause", - "optional": true, - "peer": true, "dependencies": { "side-channel": "^1.0.6" }, @@ -8308,8 +8235,6 @@ "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -8335,8 +8260,6 @@ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "ms": "2.0.0" } @@ -8346,9 +8269,7 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/@verdaccio/middleware/node_modules/send/node_modules/encodeurl": { "version": "1.0.2", @@ -8356,8 +8277,6 @@ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">= 0.8" } @@ -8368,8 +8287,6 @@ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "bin": { "mime": "cli.js" }, @@ -8383,8 +8300,6 @@ "integrity": "sha512-VS9axVt8XAueiPceVCgaj9nlvYj5s/T4MkAILSf2rVZeFFOMUyxU3mddUCajSHzL+YpqCuzLLL9865sRRzOJ9w==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">=12" }, @@ -8399,8 +8314,6 @@ "integrity": "sha512-klcc2UlCvQxXDV65Qewo2rZOfv7S1y8NekS/8uurSaCTjU35T+fz+Pbqz1S9XK9oQlMp4vCQ7w3iMPWQbvphEQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "debug": "4.3.7", "jsonwebtoken": "9.0.2" @@ -8419,8 +8332,6 @@ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "ms": "^2.1.3" }, @@ -8439,8 +8350,6 @@ "integrity": "sha512-OojIG/f7UYKxC4dYX8x5ax8QhRx1b8OYUAMz82rUottCuzrssX/4nn5QE7Ank0DUSX3C9l/HPthc4d9uKRJqJQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">=12", "npm": ">=5" @@ -8456,8 +8365,6 @@ "integrity": "sha512-58uimU2Bqt9+s+9ixy7wK/nPCqbOXhhhr/MQjl+otIlsUhSeATndhFzEctz/W+4MhUDg0tUnE9HC2yeNHHAo1Q==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "@verdaccio/core": "8.0.0-next-8.1", "@verdaccio/url": "13.0.0-next-8.1", @@ -8481,8 +8388,6 @@ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "ms": "^2.1.3" }, @@ -8500,9 +8405,7 @@ "resolved": "https://registry.npmjs.org/@verdaccio/ui-theme/-/ui-theme-8.0.0-next-8.1.tgz", "integrity": "sha512-9PxV8+jE2Tr+iy9DQW/bzny4YqOlW0mCZ9ct6jhcUW4GdfzU//gY2fBN/DDtQVmfbTy8smuj4Enyv5f0wCsnYg==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/@verdaccio/url": { "version": "13.0.0-next-8.1", @@ -8510,8 +8413,6 @@ "integrity": "sha512-h6pkJf+YtogImKgOrmPP9UVG3p3gtb67gqkQU0bZnK+SEKQt6Rkek/QvtJ8MbmciagYS18bDhpI8DxqLHjDfZQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "@verdaccio/core": "8.0.0-next-8.1", "debug": "4.3.7", @@ -8532,8 +8433,6 @@ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "ms": "^2.1.3" }, @@ -8552,8 +8451,6 @@ "integrity": "sha512-cyJdRrVa+8CS7UuIQb3K3IJFjMe64v38tYiBnohSmhRbX7dX9IT3jWbjrwkqWh4KeS1CS6BYENrGG1evJ2ggrQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "@verdaccio/core": "8.0.0-next-8.1", "lodash": "4.17.21", @@ -8574,8 +8471,6 @@ "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", "dev": true, "license": "ISC", - "optional": true, - "peer": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -8592,8 +8487,6 @@ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "license": "ISC", - "optional": true, - "peer": true, "bin": { "semver": "bin/semver.js" }, @@ -8820,8 +8713,6 @@ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -8836,8 +8727,6 @@ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">= 0.6" } @@ -9011,8 +8900,6 @@ "integrity": "sha512-FCAJojipPn0bXjuEpjOOOMN8FZDkxfWWp4JGN9mifU2IhxvKyXZYqpzPHdnTSUpmPDy+tsslB6Z1g+Vg6nVbYA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">=8" } @@ -9216,9 +9103,7 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/array-union": { "version": "2.1.0", @@ -9260,8 +9145,6 @@ "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">=0.8" } @@ -9292,8 +9175,6 @@ "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">=8.0.0" } @@ -9370,8 +9251,6 @@ "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", "dev": true, "license": "Apache-2.0", - "optional": true, - "peer": true, "engines": { "node": "*" } @@ -9381,9 +9260,7 @@ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/axios": { "version": "1.8.2", @@ -10032,9 +9909,7 @@ "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/bin-version": { "version": "6.0.0", @@ -10089,8 +9964,6 @@ "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.5", @@ -10116,8 +9989,6 @@ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "ms": "2.0.0" } @@ -10127,9 +9998,7 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/body-parser/node_modules/qs": { "version": "6.13.0", @@ -10137,8 +10006,6 @@ "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, "license": "BSD-3-Clause", - "optional": true, - "peer": true, "dependencies": { "side-channel": "^1.0.6" }, @@ -10191,8 +10058,6 @@ "integrity": "sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "pako": "~0.2.0" } @@ -10293,9 +10158,7 @@ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "peer": true + "license": "BSD-3-Clause" }, "node_modules/buffer-from": { "version": "1.1.2", @@ -10330,8 +10193,6 @@ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">= 0.8" } @@ -10473,9 +10334,7 @@ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", "dev": true, - "license": "Apache-2.0", - "optional": true, - "peer": true + "license": "Apache-2.0" }, "node_modules/chalk": { "version": "4.1.2", @@ -10583,8 +10442,6 @@ "integrity": "sha512-CXkMQxU6s9GklO/1f714dkKBMu1lopS1WFF0B8o4AxPykR1hpozxSiUZ5ZUeBjfPgCWqbcNOtZVFhB8Lkfp1+Q==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "workspaces": [ "website" ], @@ -10794,8 +10651,6 @@ "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "mime-db": ">= 1.43.0 < 2" }, @@ -10809,8 +10664,6 @@ "integrity": "sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "bytes": "3.1.2", "compressible": "~2.0.18", @@ -10830,8 +10683,6 @@ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "ms": "2.0.0" } @@ -10841,9 +10692,7 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/concat-map": { "version": "0.0.1", @@ -10932,8 +10781,6 @@ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">= 0.6" } @@ -10960,9 +10807,7 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/copy-anything": { "version": "3.0.5", @@ -11018,8 +10863,6 @@ "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "object-assign": "^4", "vary": "^1" @@ -11398,8 +11241,6 @@ "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "assert-plus": "^1.0.0" }, @@ -11407,6 +11248,14 @@ "node": ">=0.10" } }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "engines": { + "node": ">= 12" + } + }, "node_modules/data-urls": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", @@ -11454,9 +11303,7 @@ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/debug": { "version": "4.4.0", @@ -11613,8 +11460,6 @@ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">= 0.8" } @@ -11625,8 +11470,6 @@ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -11934,8 +11777,6 @@ "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "end-of-stream": "^1.0.0", "inherits": "^2.0.1", @@ -11949,8 +11790,6 @@ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -11966,9 +11805,7 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/duplexify/node_modules/string_decoder": { "version": "1.1.1", @@ -11976,8 +11813,6 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "safe-buffer": "~5.1.0" } @@ -11995,8 +11830,6 @@ "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -12008,8 +11841,6 @@ "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", "dev": true, "license": "Apache-2.0", - "optional": true, - "peer": true, "dependencies": { "safe-buffer": "^5.0.1" } @@ -12019,9 +11850,7 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/ejs": { "version": "3.1.10", @@ -12071,8 +11900,6 @@ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">= 0.8" } @@ -12119,8 +11946,6 @@ "integrity": "sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "bin": { "envinfo": "dist/cli.js" }, @@ -12197,9 +12022,7 @@ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/escape-string-regexp": { "version": "4.0.0", @@ -12607,8 +12430,6 @@ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">= 0.6" } @@ -12696,8 +12517,6 @@ "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -12740,9 +12559,7 @@ "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-5.5.1.tgz", "integrity": "sha512-MTjE2eIbHv5DyfuFz4zLYWxpqVhEhkTiwFGuB74Q9CSou2WHO52nlE5y3Zlg6SIsiYUIPj6ifFxnkPz6O3sIUg==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/express/node_modules/cookie": { "version": "0.7.1", @@ -12750,8 +12567,6 @@ "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">= 0.6" } @@ -12762,8 +12577,6 @@ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "ms": "2.0.0" } @@ -12773,18 +12586,14 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/express/node_modules/path-to-regexp": { "version": "0.1.10", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/express/node_modules/qs": { "version": "6.13.0", @@ -12792,8 +12601,6 @@ "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, "license": "BSD-3-Clause", - "optional": true, - "peer": true, "dependencies": { "side-channel": "^1.0.6" }, @@ -12810,8 +12617,6 @@ "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -12837,8 +12642,6 @@ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">= 0.8" } @@ -12875,9 +12678,7 @@ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/extsprintf": { "version": "1.3.0", @@ -12887,9 +12688,7 @@ "engines": [ "node >=0.6.0" ], - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/fast-deep-equal": { "version": "3.1.3", @@ -12961,8 +12760,6 @@ "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">=6" } @@ -12972,9 +12769,7 @@ "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/fast-uri": { "version": "3.0.6", @@ -13049,6 +12844,28 @@ } } }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, "node_modules/fetch-mock": { "version": "9.11.0", "resolved": "https://registry.npmjs.org/fetch-mock/-/fetch-mock-9.11.0.tgz", @@ -13268,8 +13085,6 @@ "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", @@ -13289,8 +13104,6 @@ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "ms": "2.0.0" } @@ -13300,9 +13113,7 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/find-cache-dir": { "version": "3.3.2", @@ -13488,8 +13299,6 @@ "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", "dev": true, "license": "Apache-2.0", - "optional": true, - "peer": true, "engines": { "node": "*" } @@ -13519,14 +13328,23 @@ "node": ">= 14.17" } }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">= 0.6" } @@ -13551,8 +13369,6 @@ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">= 0.6" } @@ -13728,8 +13544,6 @@ "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "assert-plus": "^1.0.0" } @@ -13902,8 +13716,6 @@ "integrity": "sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "browserify-zlib": "^0.1.4", "is-deflate": "^1.0.0", @@ -13922,8 +13734,6 @@ "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "minimist": "^1.2.5", "neo-async": "^2.6.2", @@ -13946,8 +13756,6 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "license": "BSD-3-Clause", - "optional": true, - "peer": true, "engines": { "node": ">=0.10.0" } @@ -14091,8 +13899,6 @@ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -14168,8 +13974,6 @@ "integrity": "sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "assert-plus": "^1.0.0", "jsprim": "^2.0.2", @@ -14184,9 +13988,7 @@ "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.3.0.tgz", "integrity": "sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/http2-wrapper": { "version": "2.2.1", @@ -14232,8 +14034,6 @@ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -14422,8 +14222,6 @@ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">= 0.10" } @@ -14510,9 +14308,7 @@ "resolved": "https://registry.npmjs.org/is-deflate/-/is-deflate-1.0.0.tgz", "integrity": "sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/is-docker": { "version": "2.2.1", @@ -14597,8 +14393,6 @@ "integrity": "sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">=0.10.0" } @@ -14696,9 +14490,7 @@ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/is-reference": { "version": "1.2.1", @@ -14770,9 +14562,7 @@ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/is-unicode-supported": { "version": "0.1.0", @@ -14831,9 +14621,7 @@ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", @@ -15796,9 +15584,7 @@ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/jsdom": { "version": "20.0.3", @@ -15914,9 +15700,7 @@ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", "dev": true, - "license": "(AFL-2.1 OR BSD-3-Clause)", - "optional": true, - "peer": true + "license": "(AFL-2.1 OR BSD-3-Clause)" }, "node_modules/json-schema-traverse": { "version": "1.0.0", @@ -15936,9 +15720,7 @@ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", "dev": true, - "license": "ISC", - "optional": true, - "peer": true + "license": "ISC" }, "node_modules/json5": { "version": "2.2.3", @@ -15997,9 +15779,7 @@ "engines": [ "node >= 0.2.0" ], - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/JSONStream": { "version": "1.3.5", @@ -16007,8 +15787,6 @@ "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", "dev": true, "license": "(MIT OR Apache-2.0)", - "optional": true, - "peer": true, "dependencies": { "jsonparse": "^1.2.0", "through": ">=2.2.7 <3" @@ -16026,8 +15804,6 @@ "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "jws": "^3.2.2", "lodash.includes": "^4.3.0", @@ -16054,8 +15830,6 @@ "node >=0.6.0" ], "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -16076,8 +15850,6 @@ "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.11", @@ -16090,8 +15862,6 @@ "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "jwa": "^1.4.1", "safe-buffer": "^5.0.1" @@ -16282,8 +16052,6 @@ "integrity": "sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA==", "dev": true, "license": "ISC", - "optional": true, - "peer": true, "dependencies": { "signal-exit": "^3.0.2" } @@ -16321,18 +16089,14 @@ "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/lodash.isboolean": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/lodash.isempty": { "version": "4.4.0", @@ -16352,36 +16116,28 @@ "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/lodash.isnumber": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/lodash.isstring": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/lodash.memoize": { "version": "4.1.2", @@ -16402,9 +16158,7 @@ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/lodash.sortby": { "version": "4.7.0", @@ -16449,8 +16203,6 @@ "integrity": "sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "graceful-fs": "^4.1.3", "is-promise": "^2.1.0", @@ -16468,8 +16220,6 @@ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">=4" } @@ -16561,8 +16311,6 @@ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">= 0.6" } @@ -16573,8 +16321,6 @@ "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "funding": { "url": "https://github.com/sponsors/sindresorhus" } @@ -16602,8 +16348,6 @@ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">= 0.6" } @@ -16900,8 +16644,6 @@ "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "bin": { "ncp": "bin/ncp" } @@ -16912,8 +16654,6 @@ "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">= 0.6" } @@ -16923,9 +16663,7 @@ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/nise": { "version": "6.1.1", @@ -16961,6 +16699,24 @@ "node": ">=16" } }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, "node_modules/node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", @@ -17218,8 +16974,6 @@ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">=0.10.0" } @@ -17300,8 +17054,6 @@ "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">=14.0.0" } @@ -17312,8 +17064,6 @@ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "ee-first": "1.1.1" }, @@ -17327,8 +17077,6 @@ "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">= 0.8" } @@ -17575,9 +17323,7 @@ "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/parent-module": { "version": "1.0.1", @@ -17637,8 +17383,6 @@ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">= 0.8" } @@ -17741,8 +17485,6 @@ "integrity": "sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "buffer-from": "^1.0.0", "duplexify": "^3.5.0", @@ -17761,9 +17503,7 @@ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/picocolors": { "version": "1.1.1", @@ -17804,8 +17544,6 @@ "integrity": "sha512-LA6qKgeDMLr2ux2y/YiUt47EfgQ+S9LznBWOJdN3q1dx2sv0ziDLUBeVpyVv17TEcGCBuWf0zNtg3M5m1NhhWQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "atomic-sleep": "^1.0.0", "fast-redact": "^3.1.1", @@ -17829,8 +17567,6 @@ "integrity": "sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "readable-stream": "^4.0.0", "split2": "^4.0.0" @@ -17856,8 +17592,6 @@ } ], "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -17869,8 +17603,6 @@ "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", @@ -17887,18 +17619,14 @@ "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz", "integrity": "sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/pino/node_modules/process-warning": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/pirates": { "version": "4.0.6", @@ -17939,8 +17667,6 @@ "integrity": "sha512-8xCNE/aT/EXKenuMDZ+xTVwkT8gsoHN2z/Q29l80u0ppGEXVvsKRzNMbtKhg8LS8k1tJLAHHylf6p4VFmP6XUQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">= 0.4.0" } @@ -18704,9 +18430,7 @@ "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz", "integrity": "sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/promise-polyfill": { "version": "8.3.0", @@ -18781,8 +18505,6 @@ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" @@ -18827,8 +18549,6 @@ "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "duplexify": "^3.6.0", "inherits": "^2.0.3", @@ -18841,8 +18561,6 @@ "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -18935,9 +18653,7 @@ "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/quick-lru": { "version": "5.1.1", @@ -18958,8 +18674,6 @@ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">= 0.6" } @@ -18970,8 +18684,6 @@ "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -19033,8 +18745,6 @@ "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">= 12.13.0" } @@ -19576,8 +19286,6 @@ "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">=10" } @@ -19681,8 +19389,6 @@ "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", @@ -19699,8 +19405,6 @@ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "ms": "2.0.0" } @@ -19710,9 +19414,7 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/serve-static/node_modules/send": { "version": "0.19.0", @@ -19720,8 +19422,6 @@ "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -19747,8 +19447,6 @@ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">= 0.8" } @@ -19776,9 +19474,7 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true, - "license": "ISC", - "optional": true, - "peer": true + "license": "ISC" }, "node_modules/shebang-command": { "version": "2.0.0", @@ -19948,8 +19644,6 @@ "integrity": "sha512-ybz6OYOUjoQQCQ/i4LU8kaToD8ACtYP+Cj5qd2AO36bwbdewxWJ3ArmJ2cr6AvxlL2o0PqnCcPGUgkILbfkaCA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "atomic-sleep": "^1.0.0" } @@ -20034,8 +19728,6 @@ "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", "dev": true, "license": "ISC", - "optional": true, - "peer": true, "engines": { "node": ">= 10.x" } @@ -20093,8 +19785,6 @@ "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -20162,8 +19852,6 @@ "integrity": "sha512-EEHMVYHNXFHfGtgjNITnka0aHhiAlo93F7z2/Pwd+g0teG9CnM3JIINM7hVVB5/rhw9voufD7Wukwgtw2uqh6w==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "graceful-fs": "^4.1.3" } @@ -20173,9 +19861,7 @@ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/streamx": { "version": "2.22.0", @@ -20595,8 +20281,6 @@ "integrity": "sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "real-require": "^0.2.0" } @@ -20614,8 +20298,6 @@ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" @@ -20627,8 +20309,6 @@ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -20644,9 +20324,7 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/through2/node_modules/string_decoder": { "version": "1.1.1", @@ -20654,8 +20332,6 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "safe-buffer": "~5.1.0" } @@ -20689,8 +20365,6 @@ "integrity": "sha512-aRGIbCIF3teodtUFAYSdQONVmDRy21REM3o6JnqWn5ZkQBJJ4gHxhw6OfwQ+WkSAi3ASamrS4N4nyazWx6uTYg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "tldts-core": "^6.1.84" }, @@ -20703,9 +20377,7 @@ "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.84.tgz", "integrity": "sha512-NaQa1W76W2aCGjXybvnMYzGSM4x8fvG2AN/pla7qxcg0ZHbooOPhA8kctmOZUDfZyhDL27OGNbwAeig8P4p1vg==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/tmp": { "version": "0.2.3", @@ -20743,8 +20415,6 @@ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">=0.6" } @@ -20955,8 +20625,6 @@ "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, "license": "Apache-2.0", - "optional": true, - "peer": true, "dependencies": { "safe-buffer": "^5.0.1" }, @@ -20977,8 +20645,6 @@ "integrity": "sha512-ZW/lVMRabETuYCd9O9ZvMhAh8GslSqaUjxmK/JLPCh6l73CvLBiuXswj/+7LdnWOgYsQ130FqLzFz5aGT4I3Ug==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "workspaces": [ "website" ] @@ -21025,8 +20691,6 @@ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -21056,7 +20720,6 @@ "dev": true, "license": "BSD-2-Clause", "optional": true, - "peer": true, "bin": { "uglifyjs": "bin/uglifyjs" }, @@ -21178,9 +20841,7 @@ "resolved": "https://registry.npmjs.org/unix-crypt-td-js/-/unix-crypt-td-js-1.1.4.tgz", "integrity": "sha512-8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw==", "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "peer": true + "license": "BSD-3-Clause" }, "node_modules/unleash-proxy-client": { "version": "3.7.3", @@ -21211,8 +20872,6 @@ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">= 0.8" } @@ -21303,8 +20962,6 @@ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">= 0.4.0" } @@ -21361,8 +21018,6 @@ "integrity": "sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">= 0.10" } @@ -21373,8 +21028,6 @@ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">= 0.8" } @@ -21386,8 +21039,6 @@ "deprecated": "this version is deprecated, please migrate to 6.x versions", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "@cypress/request": "3.0.6", "@verdaccio/auth": "8.0.0-next-8.1", @@ -21445,8 +21096,6 @@ "integrity": "sha512-EEfUeC1kHuErtwF9FC670W+EXHhcl+iuigONkcprwRfkPxmdBs+Hx36745hgAMZ9SCqedNECaycnGF3tZ3VYfw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "@verdaccio/config": "8.0.0-next-8.1", "@verdaccio/core": "8.0.0-next-8.1", @@ -21468,8 +21117,6 @@ "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">= 0.6" } @@ -21480,8 +21127,6 @@ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "ms": "2.0.0" } @@ -21491,9 +21136,7 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/verdaccio-audit/node_modules/express": { "version": "4.21.0", @@ -21501,8 +21144,6 @@ "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -21545,9 +21186,7 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/verdaccio-audit/node_modules/qs": { "version": "6.13.0", @@ -21555,8 +21194,6 @@ "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, "license": "BSD-3-Clause", - "optional": true, - "peer": true, "dependencies": { "side-channel": "^1.0.6" }, @@ -21573,8 +21210,6 @@ "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -21600,8 +21235,6 @@ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">= 0.8" } @@ -21612,8 +21245,6 @@ "integrity": "sha512-28XRwpKiE3Z6KsnwE7o8dEM+zGWOT+Vef7RVJyUlG176JVDbGGip3HfCmFioE1a9BklLyGEFTu6D69BzfbRkzA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "lockfile": "1.0.4" }, @@ -21631,8 +21262,6 @@ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -21645,8 +21274,6 @@ "dev": true, "hasInstallScript": true, "license": "MIT", - "optional": true, - "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" @@ -21658,8 +21285,6 @@ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "ms": "^2.1.3" }, @@ -21679,8 +21304,6 @@ "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "license": "ISC", - "optional": true, - "peer": true, "dependencies": { "inflight": "^1.0.4", "inherits": "2", @@ -21698,8 +21321,6 @@ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "argparse": "^2.0.1" }, @@ -21713,8 +21334,6 @@ "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">=6" } @@ -21725,8 +21344,6 @@ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, "license": "ISC", - "optional": true, - "peer": true, "engines": { "node": ">=12" } @@ -21737,8 +21354,6 @@ "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "bin": { "mime": "cli.js" }, @@ -21752,8 +21367,6 @@ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", - "optional": true, - "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -21767,8 +21380,6 @@ "integrity": "sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "mkdirp": "~0.5.1", "ncp": "~2.0.0", @@ -21784,8 +21395,6 @@ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "minimist": "^1.2.6" }, @@ -21800,8 +21409,6 @@ "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "license": "ISC", - "optional": true, - "peer": true, "dependencies": { "glob": "^6.0.1" }, @@ -21815,8 +21422,6 @@ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "license": "ISC", - "optional": true, - "peer": true, "bin": { "semver": "bin/semver.js" }, @@ -21830,8 +21435,6 @@ "integrity": "sha512-BfvmO+ZdbwfttOwrdTPD6Bccr1ZfZ9Tk/9wpXamxdWB/XPWlk3FtyGsvqCmxsInRLPhQ/FSk9c3zRCGvICTFYg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "@verdaccio/core": "8.0.0-next-8.1", "@verdaccio/file-locking": "13.0.0-next-8.0", @@ -21859,8 +21462,6 @@ "node >=0.6.0" ], "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -21913,6 +21514,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "engines": { + "node": ">= 8" + } + }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", @@ -22031,9 +21640,7 @@ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/wrap-ansi": { "version": "6.2.0", @@ -22135,8 +21742,6 @@ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">=0.4" } diff --git a/package.json b/package.json index 3a7d7422b..936563aa8 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "@connectrpc/connect": "^1.4.0", "@connectrpc/connect-web": "^1.4.0", "@flipt-io/flipt": "^1.2.0", - "@flipt-io/flipt-client-browser": "^0.3.1", + "@flipt-io/flipt-client-js": "^0.0.1", "@growthbook/growthbook": "^1.3.1", "@grpc/grpc-js": "^1.9.13", "@opentelemetry/api": "^1.3.0",