diff --git a/.dockerignore b/.dockerignore index ea2347778..8f4008537 100644 --- a/.dockerignore +++ b/.dockerignore @@ -9,5 +9,4 @@ README.md _dev .vscode swagger -uffizzi .husky \ No newline at end of file diff --git a/npm/src/controller/api.ts b/npm/src/controller/api.ts index 22d85b4c6..b03ec100c 100644 --- a/npm/src/controller/api.ts +++ b/npm/src/controller/api.ts @@ -9,6 +9,9 @@ import { SAMLSSOConnectionWithEncodedMetadata, SAMLSSOConnectionWithRawMetadata, OIDCSSOConnection, + JacksonOption, + SAMLSSORecord, + OIDCSSORecord, } from '../typings'; import { JacksonError } from './error'; import { IndexNames } from './utils'; @@ -17,9 +20,11 @@ import samlConnection from './connection/saml'; export class ConnectionAPIController implements IConnectionAPIController { private connectionStore: Storable; + private opts: JacksonOption; - constructor({ connectionStore }) { + constructor({ connectionStore, opts }) { this.connectionStore = connectionStore; + this.opts = opts; } /** @@ -144,6 +149,8 @@ export class ConnectionAPIController implements IConnectionAPIController { * $ref: '#/definitions/validationErrorsPost' * 401: * description: Unauthorized + * 500: + * description: Please set OpenID response handler path (oidcPath) on Jackson * /api/v1/connections: * post: * summary: Create SSO connection @@ -178,21 +185,29 @@ export class ConnectionAPIController implements IConnectionAPIController { */ public async createSAMLConnection( body: SAMLSSOConnectionWithEncodedMetadata | SAMLSSOConnectionWithRawMetadata - ): Promise { + ): Promise { metrics.increment('createConnection'); - const record = await samlConnection.create(body, this.connectionStore); - return record; + + return await samlConnection.create(body, this.connectionStore); } + // For backwards compatibility - public async config(...args: Parameters): Promise { + public async config( + ...args: Parameters + ): Promise { return this.createSAMLConnection(...args); } - public async createOIDCConnection(body: OIDCSSOConnection): Promise { + public async createOIDCConnection(body: OIDCSSOConnection): Promise { metrics.increment('createConnection'); - const record = await oidcConnection.create(body, this.connectionStore); - return record; + + if (!this.opts.oidcPath) { + throw new JacksonError('Please set OpenID response handler path (oidcPath) on Jackson', 500); + } + + return await oidcConnection.create(body, this.connectionStore); } + /** * @swagger * definitions: @@ -324,6 +339,8 @@ export class ConnectionAPIController implements IConnectionAPIController { * $ref: '#/definitions/validationErrorsPatch' * 401: * description: Unauthorized + * 500: + * description: Please set OpenID response handler path (oidcPath) on Jackson */ public async updateSAMLConnection( body: (SAMLSSOConnectionWithEncodedMetadata | SAMLSSOConnectionWithRawMetadata) & { @@ -337,14 +354,20 @@ export class ConnectionAPIController implements IConnectionAPIController { // For backwards compatibility public async updateConfig( ...args: Parameters - ): Promise { + ): Promise { await this.updateSAMLConnection(...args); } + public async updateOIDCConnection( body: OIDCSSOConnection & { clientID: string; clientSecret: string } ): Promise { + if (!this.opts.oidcPath) { + throw new JacksonError('Please set OpenID response handler path (oidcPath) on Jackson', 500); + } + await oidcConnection.update(body, this.connectionStore, this.getConnections.bind(this)); } + /** * @swagger * parameters: @@ -363,6 +386,11 @@ export class ConnectionAPIController implements IConnectionAPIController { * name: clientID * type: string * description: Client ID + * strategyParamGet: + * in: query + * name: strategy + * type: string + * description: Strategy which can help to filter connections with tenant/product query * definitions: * Connection: * type: object @@ -418,6 +446,7 @@ export class ConnectionAPIController implements IConnectionAPIController { * - $ref: '#/parameters/tenantParamGet' * - $ref: '#/parameters/productParamGet' * - $ref: '#/parameters/clientIDParamGet' + * - $ref: '#/parameters/strategyParamGet' * operationId: get-connections * tags: [Connections] * responses: @@ -428,7 +457,7 @@ export class ConnectionAPIController implements IConnectionAPIController { * '401': * $ref: '#/responses/401Get' */ - public async getConnections(body: GetConnectionsQuery): Promise> { + public async getConnections(body: GetConnectionsQuery): Promise> { const clientID = 'clientID' in body ? body.clientID : undefined; const tenant = 'tenant' in body ? body.tenant : undefined; const product = 'product' in body ? body.product : undefined; @@ -475,6 +504,7 @@ export class ConnectionAPIController implements IConnectionAPIController { if (!filteredConnections.length) { return []; } + return filteredConnections; } @@ -528,7 +558,7 @@ export class ConnectionAPIController implements IConnectionAPIController { * '401': * $ref: '#/responses/401Get' */ - public async getConfig(body: GetConfigQuery): Promise { + public async getConfig(body: GetConfigQuery): Promise> { const clientID = 'clientID' in body ? body.clientID : undefined; const tenant = 'tenant' in body ? body.tenant : undefined; const product = 'product' in body ? body.product : undefined; @@ -584,7 +614,7 @@ export class ConnectionAPIController implements IConnectionAPIController { * name: strategy * in: formData * type: string - * description: Strategy + * description: Strategy which can help to filter connections with tenant/product query * /api/v1/connections: * delete: * parameters: @@ -662,6 +692,7 @@ export class ConnectionAPIController implements IConnectionAPIController { if (!connections || !connections.length) { return; } + // filter if strategy is passed const filteredConnections = strategy ? connections.filter((connection) => { @@ -688,6 +719,7 @@ export class ConnectionAPIController implements IConnectionAPIController { throw new JacksonError('Please provide `clientID` and `clientSecret` or `tenant` and `product`.', 400); } + public async deleteConfig(body: DelConnectionsQuery): Promise { await this.deleteConnections({ ...body, strategy: 'saml' }); } diff --git a/npm/src/controller/connection/oidc.ts b/npm/src/controller/connection/oidc.ts index 269cc5df5..896e2cc0a 100644 --- a/npm/src/controller/connection/oidc.ts +++ b/npm/src/controller/connection/oidc.ts @@ -1,5 +1,5 @@ import crypto from 'crypto'; -import { IConnectionAPIController, OIDCSSOConnection, Storable } from '../../typings'; +import { IConnectionAPIController, OIDCSSOConnection, OIDCSSORecord, Storable } from '../../typings'; import * as dbutils from '../../db/utils'; import { extractHostName, @@ -24,22 +24,15 @@ const oidc = { oidcClientSecret = '', } = body; - let connectionClientSecret; + let connectionClientSecret: string; validateSSOConnection(body, 'oidc'); + const redirectUrlList = extractRedirectUrls(redirectUrl); + validateRedirectUrl({ defaultRedirectUrl, redirectUrlList }); - const record: Partial & { - clientID: string; // set by Jackson - clientSecret: string; // set by Jackson - oidcProvider?: { - provider?: string; - discoveryUrl?: string; - clientId?: string; - clientSecret?: string; - }; - } = { + const record: Partial = { defaultRedirectUrl, redirectUrl: redirectUrlList, tenant, @@ -49,6 +42,7 @@ const oidc = { clientID: '', clientSecret: '', }; + // from OpenID Provider record.oidcProvider = { discoveryUrl: oidcDiscoveryUrl, @@ -79,8 +73,9 @@ const oidc = { value: dbutils.keyFromParts(tenant, product), }); - return record; + return record as OIDCSSORecord; }, + update: async ( body: OIDCSSOConnection & { clientID: string; clientSecret: string }, connectionStore: Storable, @@ -96,25 +91,31 @@ const oidc = { oidcClientSecret, ...clientInfo } = body; + if (!clientInfo?.clientID) { throw new JacksonError('Please provide clientID', 400); } + if (!clientInfo?.clientSecret) { throw new JacksonError('Please provide clientSecret', 400); } + if (!clientInfo?.tenant) { throw new JacksonError('Please provide tenant', 400); } + if (!clientInfo?.product) { throw new JacksonError('Please provide product', 400); } + if (description && description.length > 100) { throw new JacksonError('Description should not exceed 100 characters', 400); } + const redirectUrlList = redirectUrl ? extractRedirectUrls(redirectUrl) : null; validateRedirectUrl({ defaultRedirectUrl, redirectUrlList }); - const _savedConnection = (await connectionsGetter(clientInfo))[0]; + const _savedConnection = (await connectionsGetter(clientInfo))[0] as OIDCSSORecord; if (_savedConnection.clientSecret !== clientInfo?.clientSecret) { throw new JacksonError('clientSecret mismatch', 400); @@ -123,6 +124,7 @@ const oidc = { let oidcProvider; if (_savedConnection && typeof _savedConnection.oidcProvider === 'object') { oidcProvider = { ..._savedConnection.oidcProvider }; + if (oidcClientId && typeof oidcClientId === 'string') { const clientID = dbutils.keyDigest( dbutils.keyFromParts(clientInfo.tenant, clientInfo.product, oidcClientId) @@ -131,9 +133,11 @@ const oidc = { throw new JacksonError('Tenant/Product config mismatch with OIDC Provider metadata', 400); } } + if (oidcClientSecret && typeof oidcClientSecret === 'string') { oidcProvider.clientSecret = oidcClientSecret; } + if (oidcDiscoveryUrl && typeof oidcDiscoveryUrl === 'string') { oidcProvider.discoveryUrl = oidcDiscoveryUrl; const providerName = extractHostName(oidcDiscoveryUrl); diff --git a/npm/src/controller/connection/saml.ts b/npm/src/controller/connection/saml.ts index 7e1fd7a12..b06f26b53 100644 --- a/npm/src/controller/connection/saml.ts +++ b/npm/src/controller/connection/saml.ts @@ -1,9 +1,9 @@ import crypto from 'crypto'; import { IConnectionAPIController, - SAMLSSOConnection, SAMLSSOConnectionWithEncodedMetadata, SAMLSSOConnectionWithRawMetadata, + SAMLSSORecord, Storable, } from '../../typings'; import * as dbutils from '../../db/utils'; @@ -35,18 +35,15 @@ const saml = { } = body; const forceAuthn = body.forceAuthn == 'true' || body.forceAuthn == true; - let connectionClientSecret; + let connectionClientSecret: string; validateSSOConnection(body, 'saml'); + const redirectUrlList = extractRedirectUrls(redirectUrl); + validateRedirectUrl({ defaultRedirectUrl, redirectUrlList }); - const record: Partial & { - clientID: string; // set by Jackson - clientSecret: string; // set by Jackson - idpMetadata?: Record; - certs?: Record<'publicKey' | 'privateKey', string>; - } = { + const record: Partial = { defaultRedirectUrl, redirectUrl: redirectUrlList, tenant, @@ -58,17 +55,21 @@ const saml = { forceAuthn, }; - let metaData = rawMetadata; + let metaData = rawMetadata as string; if (encodedRawMetadata) { metaData = Buffer.from(encodedRawMetadata, 'base64').toString(); } - const idpMetadata = await saml20.parseMetadata(metaData!, {}); + const idpMetadata = (await saml20.parseMetadata(metaData, {})) as SAMLSSORecord['idpMetadata']; + + if (!idpMetadata.entityID) { + throw new JacksonError("Couldn't parse EntityID from SAML metadata", 400); + } // extract provider let providerName = extractHostName(idpMetadata.entityID); if (!providerName) { - providerName = extractHostName(idpMetadata.sso.redirectUrl || idpMetadata.sso.postUrl); + providerName = extractHostName(idpMetadata.sso.redirectUrl || idpMetadata.sso.postUrl || ''); } idpMetadata.provider = providerName ? providerName : 'Unknown'; @@ -78,7 +79,7 @@ const saml = { const certs = await x509.generate(); if (!certs) { - throw new Error('Error generating x509 certs'); + throw new JacksonError('Error generating x509 certs'); } record.idpMetadata = idpMetadata; @@ -108,8 +109,9 @@ const saml = { } ); - return record; + return record as SAMLSSORecord; }, + update: async ( body: (SAMLSSOConnectionWithRawMetadata | SAMLSSOConnectionWithEncodedMetadata) & { clientID: string; @@ -128,25 +130,31 @@ const saml = { forceAuthn = false, ...clientInfo } = body; + if (!clientInfo?.clientID) { throw new JacksonError('Please provide clientID', 400); } + if (!clientInfo?.clientSecret) { throw new JacksonError('Please provide clientSecret', 400); } + if (!clientInfo?.tenant) { throw new JacksonError('Please provide tenant', 400); } + if (!clientInfo?.product) { throw new JacksonError('Please provide product', 400); } + if (description && description.length > 100) { throw new JacksonError('Description should not exceed 100 characters', 400); } + const redirectUrlList = redirectUrl ? extractRedirectUrls(redirectUrl) : null; validateRedirectUrl({ defaultRedirectUrl, redirectUrlList }); - const _savedConnection = (await connectionsGetter(clientInfo))[0]; + const _savedConnection = (await connectionsGetter(clientInfo))[0] as SAMLSSORecord; if (_savedConnection.clientSecret !== clientInfo?.clientSecret) { throw new JacksonError('clientSecret mismatch', 400); @@ -156,10 +164,14 @@ const saml = { if (encodedRawMetadata) { metaData = Buffer.from(encodedRawMetadata, 'base64').toString(); } + let newMetadata; if (metaData) { newMetadata = await saml20.parseMetadata(metaData, {}); + if (!newMetadata.entityID) { + throw new JacksonError("Couldn't parse EntityID from SAML metadata", 400); + } // extract provider let providerName = extractHostName(newMetadata.entityID); if (!providerName) { diff --git a/npm/src/controller/oauth.ts b/npm/src/controller/oauth.ts index 3a0efd826..4d7bfe623 100644 --- a/npm/src/controller/oauth.ts +++ b/npm/src/controller/oauth.ts @@ -288,7 +288,7 @@ export class OAuthController implements IOAuthController { if ( requestedOIDCFlow && - (!this.opts.openid.jwtSigningKeys || !isJWSKeyPairLoaded(this.opts.openid.jwtSigningKeys)) + (!this.opts.openid?.jwtSigningKeys || !isJWSKeyPairLoaded(this.opts.openid.jwtSigningKeys)) ) { return { redirect_url: OAuthErrorResponse({ @@ -404,6 +404,16 @@ export class OAuthController implements IOAuthController { // OIDC Connection: Issuer discovery, openid-client init and extraction of authorization endpoint happens here let oidcCodeVerifier: string | undefined; if (connectionIsOIDC) { + if (!this.opts.oidcPath) { + return { + redirect_url: OAuthErrorResponse({ + error: 'server_error', + error_description: 'OpenID response handler path (oidcPath) is not set', + redirect_uri, + state, + }), + }; + } const { discoveryUrl, clientId, clientSecret } = connection.oidcProvider; try { const oidcIssuer = await Issuer.discover(discoveryUrl); @@ -955,7 +965,7 @@ export class OAuthController implements IOAuthController { const requestedOIDCFlow = !!codeVal.requested?.oidc; const requestHasNonce = !!codeVal.requested?.nonce; if (requestedOIDCFlow) { - const { jwtSigningKeys, jwsAlg } = this.opts.openid; + const { jwtSigningKeys, jwsAlg } = this.opts.openid ?? {}; if (!jwtSigningKeys || !isJWSKeyPairLoaded(jwtSigningKeys)) { throw new JacksonError('JWT signing keys are not loaded', 500); } diff --git a/npm/src/controller/oidc-discovery.ts b/npm/src/controller/oidc-discovery.ts index 44e74e327..0a230c36d 100644 --- a/npm/src/controller/oidc-discovery.ts +++ b/npm/src/controller/oidc-discovery.ts @@ -25,7 +25,7 @@ export class OidcDiscoveryController implements IOidcDiscoveryController { } async jwks() { - const { jwtSigningKeys, jwsAlg } = this.opts.openid; + const { jwtSigningKeys, jwsAlg } = this.opts.openid ?? {}; if (!jwtSigningKeys || !isJWSKeyPairLoaded(jwtSigningKeys)) { throw new JacksonError('JWT signing keys are not loaded', 501); } diff --git a/npm/src/index.ts b/npm/src/index.ts index f7adfb1d8..baea26016 100644 --- a/npm/src/index.ts +++ b/npm/src/index.ts @@ -28,10 +28,6 @@ const defaultOpts = (opts: JacksonOption): JacksonOption => { newOpts.scimPath = newOpts.scimPath || '/api/scim/v2.0'; - if (!newOpts.oidcPath) { - throw new Error('oidcPath is required'); - } - newOpts.samlAudience = newOpts.samlAudience || 'https://saml.boxyhq.com'; // path to folder containing static IdP connections that will be preloaded. This is useful for self-hosted deployments that only have to support a single tenant (or small number of known tenants). newOpts.preLoadedConnection = newOpts.preLoadedConnection || ''; @@ -72,7 +68,7 @@ export const controllers = async ( const tokenStore = db.store('oauth:token', opts.db.ttl); const healthCheckStore = db.store('_health:check'); - const connectionAPIController = new ConnectionAPIController({ connectionStore }); + const connectionAPIController = new ConnectionAPIController({ connectionStore, opts }); const adminController = new AdminController({ connectionStore }); const healthCheckController = new HealthCheckController({ healthCheckStore }); await healthCheckController.init(); diff --git a/npm/src/typings.ts b/npm/src/typings.ts index ef57763d2..d8429029b 100644 --- a/npm/src/typings.ts +++ b/npm/src/typings.ts @@ -29,16 +29,53 @@ export interface OIDCSSOConnection extends SSOConnection { oidcClientSecret: string; } +export interface SAMLSSORecord extends SAMLSSOConnection { + clientID: string; // set by Jackson + clientSecret: string; // set by Jackson + idpMetadata: { + entityID: string; + loginType?: string; + provider: string | 'Unknown'; + slo: { + postUrl?: string; + redirectUrl?: string; + }; + sso: { + postUrl?: string; + redirectUrl?: string; + }; + thumbprint?: string; + validTo?: string; + }; + certs: { + privateKey: string; + publicKey: string; + }; +} + +export interface OIDCSSORecord extends SSOConnection { + clientID: string; // set by Jackson + clientSecret: string; // set by Jackson + oidcProvider: { + provider?: string; + discoveryUrl?: string; + clientId?: string; + clientSecret?: string; + }; +} + export type ConnectionType = 'saml' | 'oidc'; type ClientIDQuery = { clientID: string; }; + type TenantQuery = { tenant: string; product: string; strategy?: ConnectionType; }; + export type GetConnectionsQuery = ClientIDQuery | TenantQuery; export type DelConnectionsQuery = (ClientIDQuery & { clientSecret: string }) | TenantQuery; @@ -46,22 +83,34 @@ export type GetConfigQuery = ClientIDQuery | Omit; export type DelConfigQuery = (ClientIDQuery & { clientSecret: string }) | Omit; export interface IConnectionAPIController { - config(body: SAMLSSOConnection): Promise; + /** + * @deprecated Use `createSAMLConnection` instead. + */ + config(body: SAMLSSOConnection): Promise; createSAMLConnection( body: SAMLSSOConnectionWithRawMetadata | SAMLSSOConnectionWithEncodedMetadata - ): Promise; - createOIDCConnection(body: OIDCSSOConnection): Promise; - updateConfig(body: SAMLSSOConnection & { clientID: string; clientSecret: string }): Promise; + ): Promise; + createOIDCConnection(body: OIDCSSOConnection): Promise; + /** + * @deprecated Use `updateSAMLConnection` instead. + */ + updateConfig(body: SAMLSSOConnection & { clientID: string; clientSecret: string }): Promise; updateSAMLConnection( body: (SAMLSSOConnectionWithRawMetadata | SAMLSSOConnectionWithEncodedMetadata) & { clientID: string; clientSecret: string; } - ): Promise; - updateOIDCConnection(body: OIDCSSOConnection & { clientID: string; clientSecret: string }): Promise; - getConnections(body: GetConnectionsQuery): Promise>; - getConfig(body: GetConfigQuery): Promise; + ): Promise; + updateOIDCConnection(body: OIDCSSOConnection & { clientID: string; clientSecret: string }): Promise; + getConnections(body: GetConnectionsQuery): Promise>; + /** + * @deprecated Use `getConnections` instead. + */ + getConfig(body: GetConfigQuery): Promise>; deleteConnections(body: DelConnectionsQuery): Promise; + /** + * @deprecated Use `deleteConnections` instead. + */ deleteConfig(body: DelConfigQuery): Promise; } @@ -123,11 +172,13 @@ export interface OAuthReqBody { export interface OAuthReqBodyWithClientId extends OAuthReqBody { client_id: string; } + export interface OAuthReqBodyWithTenantProduct extends OAuthReqBody { client_id: 'dummy'; tenant: string; product: string; } + export interface OAuthReqBodyWithAccessType extends OAuthReqBody { client_id: 'dummy'; access_type: string; @@ -171,6 +222,7 @@ interface OAuthTokenReqBody { grant_type: 'authorization_code'; redirect_uri: string; } + export interface OAuthTokenReqWithCodeVerifier extends OAuthTokenReqBody { code_verifier: string; client_id?: never; @@ -252,7 +304,7 @@ export interface DatabaseOption { export interface JacksonOption { externalUrl: string; samlPath: string; - oidcPath: string; + oidcPath?: string; samlAudience?: string; preLoadedConfig?: string; preLoadedConnection?: string; @@ -261,7 +313,7 @@ export interface JacksonOption { clientSecretVerifier?: string; idpDiscoveryPath?: string; scimPath?: string; - openid: { + openid?: { jwsAlg?: string; jwtSigningKeys?: { private: string; diff --git a/npm/test/sso/data/metadata/noentityID/boxyhq-noentityID.js b/npm/test/sso/data/metadata/noentityID/boxyhq-noentityID.js new file mode 100644 index 000000000..67d7ce812 --- /dev/null +++ b/npm/test/sso/data/metadata/noentityID/boxyhq-noentityID.js @@ -0,0 +1,9 @@ +// Without Entity ID in XML +module.exports = { + defaultRedirectUrl: 'http://localhost:3366/sso/oauth/completed', + redirectUrl: '["http://localhost:3366"]', + tenant: 'boxyhqnoentityID.com', + product: 'crm', + name: 'testConfig', + description: 'Just a test configuration', +}; diff --git a/npm/test/sso/data/metadata/noentityID/boxyhq-noentityID.xml b/npm/test/sso/data/metadata/noentityID/boxyhq-noentityID.xml new file mode 100644 index 000000000..369de62b8 --- /dev/null +++ b/npm/test/sso/data/metadata/noentityID/boxyhq-noentityID.xml @@ -0,0 +1,33 @@ + + + + + + + + + MIIDdDCCAlygAwIBAgIGAXo6K+u/MA0GCSqGSIb3DQEBCwUAMHsxFDASBgNVBAoTC0dvb2dsZSBJ + bmMuMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MQ8wDQYDVQQDEwZHb29nbGUxGDAWBgNVBAsTD0dv + b2dsZSBGb3IgV29yazELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWEwHhcNMjEwNjIz + MTgzOTUzWhcNMjYwNjIyMTgzOTUzWjB7MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEWMBQGA1UEBxMN + TW91bnRhaW4gVmlldzEPMA0GA1UEAxMGR29vZ2xlMRgwFgYDVQQLEw9Hb29nbGUgRm9yIFdvcmsx + CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A + MIIBCgKCAQEA4qZcxwPiVka9GzGdQ9LVlgVkn3A7O3HtxR6RIm5AMaL4YZziEHt2HgxLdJZyXYJw + yfT1KB2IHt+XDQBkgEpQVXuuwSPI8vhI8Jr+nr8zia3MMoy9vJF8ZG7HuWeakaKEh7tJqjYu1Cl9 + a81rkYdXAFUA+gl2q+stvK26xylAUwptCJSQo0NanWzCq+k5zvX0uLmh58+W5Yv11hDTtAoW+1dH + LWUTHXPfoZINPRy5NGKJ2Onq5/D5XJRimNnUa2iYi0Yv9txp1RRq4dpB9MaVttt3iKyDo4/+8fg/ + bL8BLhguiOeqcP4DEIzMuExi3bZAOu2NC7k7Qf28nA81LzP9DQIDAQABMA0GCSqGSIb3DQEBCwUA + A4IBAQARBNB3+MfmKr5WXNXXE9YwUzUGmpfbqUPXh2y2dOAkj6TzoekAsOLWB0p8oyJ5d1bFlTsx + i1OY9RuFl0tc35Jbo+ae5GfUvJmbnYGi9z8sBL55HY6x3KQNmM/ehof7ttZwvB6nwuRxAiGYG497 + 3tSzrqMQzEskcgX1mlCW0vks/ztCaayprDXcCUxWdP9FaiSZDEXV6PHhFZgGlRNvERsgaMDJgOsq + v6hLX10Q9CtOWzqu18PI4DcfoZ7exWcC29yWvwZzDTfHGaSG1DtUFLwiQmhVUbfd7/fmLV+/iOxV + zI0b5xSYZOJ7Kena7gd5zGVrc2ygKAFKiffiI5GLmLkv + + + + + + urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress + + + diff --git a/npm/test/sso/logout.test.ts b/npm/test/sso/logout.test.ts index bfd64a66b..161d41adc 100644 --- a/npm/test/sso/logout.test.ts +++ b/npm/test/sso/logout.test.ts @@ -66,8 +66,6 @@ tap.test('LogoutController -> createRequest', async (t) => { t.equal(err.message, 'SAML connection not found.'); t.equal(err.statusCode, 403); } - - t.end(); }); t.test("Should throw an error if metadata doesn't present SingleLogoutService URL", async (t) => { @@ -79,8 +77,6 @@ tap.test('LogoutController -> createRequest', async (t) => { t.equal(err.message, `accounts.google.com doesn't support SLO or disabled by IdP.`); t.equal(err.statusCode, 400); } - - t.end(); }); t.test('Should return logoutUrl and logoutForm for a valid logout request', async (t) => { @@ -97,11 +93,7 @@ tap.test('LogoutController -> createRequest', async (t) => { t.ok(params.has('SAMLRequest')); t.ok(params.has('RelayState')); - - t.end(); }); - - t.end(); }); t.test('handleResponse', async (t) => { @@ -136,8 +128,6 @@ tap.test('LogoutController -> createRequest', async (t) => { t.equal(err.message, 'Unable to validate state from the origin request.'); t.equal(err.statusCode, 403); } - - t.end(); }); t.test('Should throw an error is logout request not success', async (t) => { @@ -150,8 +140,6 @@ tap.test('LogoutController -> createRequest', async (t) => { t.equal(err.message, 'SLO failed with status urn:oasis:names:tc:SAML:2.0:status:AuthnFailed.'); t.equal(err.statusCode, 400); } - - t.end(); }); t.test('Should throw an error when request ID mismatch', async (t) => { @@ -168,8 +156,6 @@ tap.test('LogoutController -> createRequest', async (t) => { t.equal(err.message, 'SLO failed with mismatched request ID.'); t.equal(err.statusCode, 400); } - - t.end(); }); t.test('Return the redirectUrl after the post logout', async (t) => { @@ -180,12 +166,6 @@ tap.test('LogoutController -> createRequest', async (t) => { t.ok('redirectUrl' in result); t.match(result.redirectUrl, saml_connection.defaultRedirectUrl); - - t.end(); }); - - t.end(); }); - - t.end(); }); diff --git a/npm/test/sso/oidc_idp_api.test.ts b/npm/test/sso/oidc_idp_api.test.ts index bc181508d..d36d91c86 100644 --- a/npm/test/sso/oidc_idp_api.test.ts +++ b/npm/test/sso/oidc_idp_api.test.ts @@ -2,7 +2,7 @@ import sinon from 'sinon'; import tap from 'tap'; import * as dbutils from '../../src/db/utils'; import controllers from '../../src/index'; -import { IConnectionAPIController, OIDCSSOConnection } from '../../src/typings'; +import { IConnectionAPIController, OIDCSSOConnection, OIDCSSORecord } from '../../src/typings'; import { oidc_connection } from './fixture'; import { databaseOptions } from '../utils'; @@ -30,6 +30,23 @@ tap.test('controller/api', async (t) => { }); t.test('Create the connection', async (t) => { + t.test('should throw when `oidcPath` is not set', async (t) => { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + connectionAPIController.opts.oidcPath = undefined; + const body: OIDCSSOConnection = Object.assign({}, oidc_connection); + try { + await connectionAPIController.createOIDCConnection(body); + t.fail('Expecting JacksonError.'); + } catch (err: any) { + t.equal(err.message, 'Please set OpenID response handler path (oidcPath) on Jackson'); + t.equal(err.statusCode, 500); + } + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + connectionAPIController.opts.oidcPath = databaseOptions.oidcPath; + }); + t.test('when required fields are missing or invalid', async (t) => { t.test('missing discoveryUrl', async (t) => { const body: OIDCSSOConnection = Object.assign({}, oidc_connection); @@ -179,7 +196,7 @@ tap.test('controller/api', async (t) => { await connectionAPIController.getConnections({ clientID: CLIENT_ID_OIDC, }) - )[0]; + )[0] as OIDCSSORecord; t.equal(savedConnection.name, oidc_connection.name); t.equal(savedConnection.oidcProvider.clientId, oidc_connection.oidcClientId); @@ -191,6 +208,34 @@ tap.test('controller/api', async (t) => { t.test('Update the connection', async (t) => { const body_oidc_provider: OIDCSSOConnection = Object.assign({}, oidc_connection); + t.test('should throw when `oidcPath` is not set', async (t) => { + const { clientSecret, clientID } = await connectionAPIController.createOIDCConnection( + body_oidc_provider as OIDCSSOConnection + ); + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + connectionAPIController.opts.oidcPath = undefined; + try { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + await connectionAPIController.updateOIDCConnection({ + clientID, + clientSecret, + defaultRedirectUrl: oidc_connection.defaultRedirectUrl, + redirectUrl: oidc_connection.redirectUrl, + tenant: oidc_connection.tenant, + product: oidc_connection.product, + }); + t.fail('Expecting JacksonError.'); + } catch (err: any) { + t.equal(err.message, 'Please set OpenID response handler path (oidcPath) on Jackson'); + t.equal(err.statusCode, 500); + } + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + connectionAPIController.opts.oidcPath = databaseOptions.oidcPath; + }); + t.test('When clientID is missing', async (t) => { const { clientSecret } = await connectionAPIController.createOIDCConnection( body_oidc_provider as OIDCSSOConnection @@ -211,7 +256,6 @@ tap.test('controller/api', async (t) => { } catch (err: any) { t.equal(err.message, 'Please provide clientID'); t.equal(err.statusCode, 400); - t.end(); } }); @@ -235,7 +279,6 @@ tap.test('controller/api', async (t) => { } catch (err: any) { t.equal(err.message, 'Please provide clientSecret'); t.equal(err.statusCode, 400); - t.end(); } }); diff --git a/npm/test/sso/oidc_idp_oauth.test.ts b/npm/test/sso/oidc_idp_oauth.test.ts index 7f5d2d8ae..51a3651f2 100644 --- a/npm/test/sso/oidc_idp_oauth.test.ts +++ b/npm/test/sso/oidc_idp_oauth.test.ts @@ -43,7 +43,32 @@ tap.test('[OIDCProvider]', async (t) => { t.match(params.get('code_challenge'), codeChallenge, 'codeChallenge present'); stubCodeVerifier.restore(); context.state = params.get('state'); - t.end(); + }); + + t.test('[authorize] Should return error if `oidcPath` is not set', async (t) => { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + oauthController.opts.oidcPath = undefined; + const response = (await oauthController.authorize(authz_request_oidc_provider)) as { + redirect_url: string; + }; + const response_params = new URLSearchParams(new URL(response.redirect_url!).search); + + t.match(response_params.get('error'), 'server_error', 'got server_error when `oidcPath` is not set'); + t.match( + response_params.get('error_description'), + 'OpenID response handler path (oidcPath) is not set', + 'matched error_description when `oidcPath` is not set' + ); + t.match( + response_params.get('state'), + authz_request_oidc_provider.state, + 'state present in error response' + ); + // Restore + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + oauthController.opts.oidcPath = databaseOptions.oidcPath; }); t.test('[oidcAuthzResponse] Should throw an error if `state` is missing', async (t) => { @@ -56,37 +81,29 @@ tap.test('[OIDCProvider]', async (t) => { t.equal(message, 'State from original request is missing.', 'got expected error message'); t.equal(statusCode, 403, 'got expected status code'); } - t.end(); }); t.test('[oidcAuthzResponse] Should throw an error if `code` is missing', async (t) => { - try { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - //@ts-ignore - const { redirect_url } = await oauthController.oidcAuthzResponse({ state: context.state }); - const response_params = new URLSearchParams(new URL(redirect_url!).search); + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + //@ts-ignore + const { redirect_url } = await oauthController.oidcAuthzResponse({ state: context.state }); + const response_params = new URLSearchParams(new URL(redirect_url!).search); - t.match( - response_params.get('error'), - 'server_error', - 'got server_error when unable to retrieve code from provider' - ); - t.match( - response_params.get('error_description'), - 'Authorization code could not be retrieved from OIDC Provider', - 'matched error_description when unable to retrieve code from provider' - ); - t.match( - response_params.get('state'), - authz_request_oidc_provider.state, - 'state present in error response' - ); - } catch (err) { - const { message, statusCode } = err as JacksonError; - t.equal(message, 'Code is missing in AuthzResponse from IdP', 'got expected error message'); - t.equal(statusCode, 403, 'got expected status code'); - } - t.end(); + t.match( + response_params.get('error'), + 'server_error', + 'got server_error when unable to retrieve code from provider' + ); + t.match( + response_params.get('error_description'), + 'Authorization code could not be retrieved from OIDC Provider', + 'matched error_description when unable to retrieve code from provider' + ); + t.match( + response_params.get('state'), + authz_request_oidc_provider.state, + 'state present in error response' + ); }); t.test('[oidcAuthzResponse] Should throw an error if `state` is invalid', async (t) => { @@ -97,7 +114,6 @@ tap.test('[OIDCProvider]', async (t) => { t.equal(message, 'Unable to validate state from the original request.', 'got expected error message'); t.equal(statusCode, 403, 'got expected status code'); } - t.end(); }); t.test('[oidcAuthzResponse] Should forward any provider errors to redirect_uri', async (t) => { @@ -118,7 +134,6 @@ tap.test('[OIDCProvider]', async (t) => { authz_request_oidc_provider.state, 'state present in error response' ); - t.end(); }); t.test( @@ -170,9 +185,6 @@ tap.test('[OIDCProvider]', async (t) => { t.ok(response_params.has('code'), 'redirect_url has code'); t.match(response_params.get('state'), authz_request_oidc_provider.state); sinon.restore(); - t.end(); } ); - - t.end(); }); diff --git a/npm/test/sso/saml_idp_api.test.ts b/npm/test/sso/saml_idp_api.test.ts index 4894c6e72..1d38ef4ec 100644 --- a/npm/test/sso/saml_idp_api.test.ts +++ b/npm/test/sso/saml_idp_api.test.ts @@ -1,4 +1,5 @@ import * as path from 'path'; +import * as fs from 'fs'; import sinon from 'sinon'; import tap from 'tap'; import * as dbutils from '../../src/db/utils'; @@ -8,9 +9,11 @@ import { IConnectionAPIController, SAMLSSOConnection, SAMLSSOConnectionWithEncodedMetadata, + SAMLSSORecord, } from '../../src/typings'; import { saml_connection } from './fixture'; import { databaseOptions } from '../utils'; +import boxyhqNoentityID from './data/metadata/noentityID/boxyhq-noentityID'; let connectionAPIController: IConnectionAPIController; @@ -165,6 +168,25 @@ tap.test('controller/api', async (t) => { }); }); + t.test('When metadata XML is malformed', async (t) => { + t.test('entityID missing in XML', async (t) => { + const body = Object.assign({}, boxyhqNoentityID); + const metadataPath = path.join(__dirname, '/data/metadata/noentityID'); + const files = await fs.promises.readdir(metadataPath); + const rawMetadataFile = files.filter((f) => f.endsWith('.xml'))?.[0]; + const rawMetadata = await fs.promises.readFile(path.join(metadataPath, rawMetadataFile), 'utf8'); + body.encodedRawMetadata = Buffer.from(rawMetadata, 'utf8').toString('base64'); + + try { + await connectionAPIController.createSAMLConnection(body as SAMLSSOConnectionWithEncodedMetadata); + t.fail('Expecting JacksonError.'); + } catch (err: any) { + t.equal(err.message, "Couldn't parse EntityID from SAML metadata"); + t.equal(err.statusCode, 400); + } + }); + }); + t.test('when the request is good', async (t) => { const body = Object.assign({}, saml_connection); @@ -182,7 +204,7 @@ tap.test('controller/api', async (t) => { await connectionAPIController.getConnections({ clientID: CLIENT_ID_SAML, }) - )[0]; + )[0] as SAMLSSORecord; t.equal(savedConnection.name, 'testConfig'); t.equal(savedConnection.forceAuthn, false); @@ -207,7 +229,7 @@ tap.test('controller/api', async (t) => { await connectionAPIController.getConnections({ clientID: CLIENT_ID_SAML, }) - )[0]; + )[0] as SAMLSSORecord; t.equal(savedConnection.forceAuthn, true); @@ -237,7 +259,6 @@ tap.test('controller/api', async (t) => { } catch (err: any) { t.equal(err.message, 'Please provide clientID'); t.equal(err.statusCode, 400); - t.end(); } }); @@ -261,7 +282,6 @@ tap.test('controller/api', async (t) => { } catch (err: any) { t.equal(err.message, 'Please provide clientSecret'); t.equal(err.statusCode, 400); - t.end(); } }); @@ -288,6 +308,35 @@ tap.test('controller/api', async (t) => { t.equal(savedConnection.name, 'A new name'); t.equal(savedConnection.description, 'A new description'); }); + + t.test('When metadata XML is malformed', async (t) => { + t.test('entityID missing in XML', async (t) => { + const { clientID, clientSecret } = await connectionAPIController.createSAMLConnection( + body_saml_provider as SAMLSSOConnectionWithEncodedMetadata + ); + const metadataPath = path.join(__dirname, '/data/metadata/noentityID'); + const files = await fs.promises.readdir(metadataPath); + const rawMetadataFile = files.filter((f) => f.endsWith('.xml'))?.[0]; + const rawMetadata = await fs.promises.readFile(path.join(metadataPath, rawMetadataFile), 'utf8'); + const encodedRawMetadata = Buffer.from(rawMetadata, 'utf8').toString('base64'); + + try { + await connectionAPIController.updateSAMLConnection({ + clientID, + clientSecret, + tenant: body_saml_provider.tenant, + product: body_saml_provider.product, + redirectUrl: saml_connection.redirectUrl, + defaultRedirectUrl: saml_connection.defaultRedirectUrl, + encodedRawMetadata, + }); + t.fail('Expecting JacksonError.'); + } catch (err: any) { + t.equal(err.message, "Couldn't parse EntityID from SAML metadata"); + t.equal(err.statusCode, 400); + } + }); + }); }); t.test('Get the connection', async (t) => { diff --git a/npm/test/sso/saml_idp_oauth.test.ts b/npm/test/sso/saml_idp_oauth.test.ts index 2346d5509..27fda1ca3 100644 --- a/npm/test/sso/saml_idp_oauth.test.ts +++ b/npm/test/sso/saml_idp_oauth.test.ts @@ -92,8 +92,6 @@ tap.test('authorize()', async (t) => { t.equal(message, 'Please specify a redirect URL.', 'got expected error message'); t.equal(statusCode, 400, 'got expected status code'); } - - t.end(); }); t.test('Should return OAuth Error response if `state` is not set', async (t) => { @@ -108,8 +106,6 @@ tap.test('authorize()', async (t) => { `${body.redirect_uri}?error=invalid_request&error_description=Please+specify+a+state+to+safeguard+against+XSRF+attacks`, 'got OAuth error' ); - - t.end(); }); t.test('Should return OAuth Error response if `response_type` is not `code`', async (t) => { @@ -124,8 +120,6 @@ tap.test('authorize()', async (t) => { `${body.redirect_uri}?error=unsupported_response_type&error_description=Only+Authorization+Code+grant+is+supported&state=${body.state}`, 'got OAuth error' ); - - t.end(); }); t.test('Should return OAuth Error response if saml binding could not be retrieved', async (t) => { @@ -140,8 +134,6 @@ tap.test('authorize()', async (t) => { `${body.redirect_uri}?error=invalid_request&error_description=SAML+binding+could+not+be+retrieved&state=${body.state}`, 'got OAuth error' ); - - t.end(); }); t.test('Should return OAuth Error response if request creation fails', async (t) => { @@ -156,7 +148,6 @@ tap.test('authorize()', async (t) => { 'got OAuth error' ); stubSamlRequest.restore(); - t.end(); }); t.test('Should throw an error if `client_id` is invalid', async (t) => { @@ -171,8 +162,6 @@ tap.test('authorize()', async (t) => { t.equal(message, 'IdP connection not found.', 'got expected error message'); t.equal(statusCode, 403, 'got expected status code'); } - - t.end(); }); t.test('Should throw an error if `redirect_uri` is not allowed', async (t) => { @@ -187,8 +176,6 @@ tap.test('authorize()', async (t) => { t.equal(message, 'Redirect URL is not allowed.', 'got expected error message'); t.equal(statusCode, 403, 'got expected status code'); } - - t.end(); }); t.test('Should return the Idp SSO URL', async (t) => { @@ -203,8 +190,6 @@ tap.test('authorize()', async (t) => { t.ok('redirect_url' in response, 'got the Idp authorize URL'); t.ok(params.has('RelayState'), 'RelayState present in the query string'); t.ok(params.has('SAMLRequest'), 'SAMLRequest present in the query string'); - - t.end(); }); t.test('accepts single value in prompt', async (t) => { @@ -216,8 +201,6 @@ tap.test('authorize()', async (t) => { t.ok('redirect_url' in response, 'got the Idp authorize URL'); t.ok(params.has('RelayState'), 'RelayState present in the query string'); t.ok(params.has('SAMLRequest'), 'SAMLRequest present in the query string'); - - t.end(); }); t.test('accepts multiple values in prompt', async (t) => { @@ -229,8 +212,6 @@ tap.test('authorize()', async (t) => { t.ok('redirect_url' in response, 'got the Idp authorize URL'); t.ok(params.has('RelayState'), 'RelayState present in the query string'); t.ok(params.has('SAMLRequest'), 'SAMLRequest present in the query string'); - - t.end(); }); t.test('accepts access_type', async (t) => { @@ -244,8 +225,6 @@ tap.test('authorize()', async (t) => { t.ok('redirect_url' in response, 'got the Idp authorize URL'); t.ok(params.has('RelayState'), 'RelayState present in the query string'); t.ok(params.has('SAMLRequest'), 'SAMLRequest present in the query string'); - - t.end(); }); t.test('accepts resource', async (t) => { @@ -259,8 +238,6 @@ tap.test('authorize()', async (t) => { t.ok('redirect_url' in response, 'got the Idp authorize URL'); t.ok(params.has('RelayState'), 'RelayState present in the query string'); t.ok(params.has('SAMLRequest'), 'SAMLRequest present in the query string'); - - t.end(); }); t.test('accepts scope', async (t) => { @@ -274,12 +251,8 @@ tap.test('authorize()', async (t) => { t.ok('redirect_url' in response, 'got the Idp authorize URL'); t.ok(params.has('RelayState'), 'RelayState present in the query string'); t.ok(params.has('SAMLRequest'), 'SAMLRequest present in the query string'); - - t.end(); }); }); - - t.end(); }); tap.test('samlResponse()', async (t) => { @@ -312,8 +285,6 @@ tap.test('samlResponse()', async (t) => { t.equal(statusCode, 403, 'got expected status code'); } - - t.end(); }); t.test('Should return OAuth Error response if response validation fails', async (t) => { @@ -331,8 +302,6 @@ tap.test('samlResponse()', async (t) => { t.match(params.get('error_description'), 'Internal error: Fatal'); stubValidate.restore(); - - t.end(); }); t.test('Should return a URL with code and state as query params', async (t) => { @@ -362,14 +331,10 @@ tap.test('samlResponse()', async (t) => { stubRandomBytes.restore(); stubValidate.restore(); - - t.end(); }); - - t.end(); }); -tap.test('token()', (t) => { +tap.test('token()', async (t) => { t.test('Should throw an error if `grant_type` is not `authorization_code`', async (t) => { const body = { grant_type: 'authorization_code_1', @@ -384,8 +349,6 @@ tap.test('token()', (t) => { t.equal(message, 'Unsupported grant_type', 'got expected error message'); t.equal(statusCode, 400, 'got expected status code'); } - - t.end(); }); t.test('Should throw an error if `tenant` is invalid', async (t) => { @@ -400,8 +363,6 @@ tap.test('token()', (t) => { t.equal(message, 'Invalid tenant or product'); t.equal(statusCode, 401, 'got expected status code'); } - - t.end(); }); t.test('Should throw an error if `product` is invalid', async (t) => { @@ -416,8 +377,6 @@ tap.test('token()', (t) => { t.equal(message, 'Invalid tenant or product'); t.equal(statusCode, 401, 'got expected status code'); } - - t.end(); }); t.test('Should throw an error if `tenant` and `product` is invalid', async (t) => { @@ -432,8 +391,6 @@ tap.test('token()', (t) => { t.equal(message, 'Invalid tenant or product'); t.equal(statusCode, 401, 'got expected status code'); } - - t.end(); }); t.test('Should throw an error if `code` is missing', async (t) => { @@ -450,8 +407,6 @@ tap.test('token()', (t) => { t.equal(message, 'Please specify code', 'got expected error message'); t.equal(statusCode, 400, 'got expected status code'); } - - t.end(); }); t.test('Should throw an error if `code` or `client_secret` is invalid', async (t) => { @@ -516,8 +471,6 @@ tap.test('token()', (t) => { t.equal(message, 'Invalid client_secret', 'got expected error message'); t.equal(statusCode, 401, 'got expected status code'); } - - t.end(); }); t.test( @@ -544,8 +497,6 @@ tap.test('token()', (t) => { t.match(response.expires_in, 300); stubRandomBytes.restore(); - - t.end(); }); t.test('unencoded client_id', async (t) => { @@ -599,8 +550,6 @@ tap.test('token()', (t) => { stubRandomBytes.restore(); stubValidate.restore(); - - t.end(); }); t.test('openid flow', async (t) => { @@ -643,7 +592,7 @@ tap.test('token()', (t) => { if (tokenRes.id_token) { const claims = jose.decodeJwt(tokenRes.id_token); const { protectedHeader } = await jose.jwtVerify(tokenRes.id_token, keyPair.publicKey); - t.match(protectedHeader.alg, databaseOptions.openid.jwsAlg); + t.match(protectedHeader.alg, databaseOptions.openid?.jwsAlg); t.match(claims.aud, authz_request_normal_oidc_flow.client_id); t.match(claims.iss, databaseOptions.samlAudience); } @@ -668,8 +617,6 @@ tap.test('token()', (t) => { stubRandomBytes.restore(); stubValidate.restore(); stubLoadJWSPrivateKey.restore(); - - t.end(); }); t.test('PKCE check', async (t) => { @@ -733,13 +680,9 @@ tap.test('token()', (t) => { stubRandomBytes.restore(); stubValidate.restore(); - - t.end(); }); } ); - - t.end(); }); tap.test('IdP initiated flow should return token and profile', async (t) => { @@ -774,5 +717,4 @@ tap.test('IdP initiated flow should return token and profile', async (t) => { t.equal(profile.id, 'id'); stubRandomBytes.restore(); stubValidate.restore(); - t.end(); }); diff --git a/package-lock.json b/package-lock.json index d3b76a94f..e9b67f09b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "jackson", - "version": "1.3.0", + "version": "1.3.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "jackson", - "version": "1.3.0", + "version": "1.3.1", "license": "Apache 2.0", "dependencies": { "@boxyhq/saml-jackson": "file:./npm", @@ -69,7 +69,6 @@ "version": "2.2.0", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "@jridgewell/gen-mapping": "^0.1.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -150,7 +149,6 @@ "version": "7.19.0", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=6.9.0" } @@ -159,7 +157,6 @@ "version": "7.19.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", @@ -226,7 +223,6 @@ "version": "7.19.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/compat-data": "^7.19.0", "@babel/helper-validator-option": "^7.18.6", @@ -306,7 +302,6 @@ "version": "7.18.6", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/types": "^7.18.6" }, @@ -318,7 +313,6 @@ "version": "7.19.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", @@ -371,7 +365,6 @@ "version": "7.18.6", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/types": "^7.18.6" }, @@ -410,7 +403,6 @@ "version": "7.18.6", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=6.9.0" } @@ -419,7 +411,6 @@ "version": "7.19.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/template": "^7.18.10", "@babel/traverse": "^7.19.0", @@ -774,7 +765,6 @@ "version": "0.1.1", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jridgewell/set-array": "^1.0.0", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -1054,6 +1044,41 @@ "dev": true, "license": "MIT" }, + "node_modules/@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", + "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@sinonjs/samsam": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.1.1.tgz", + "integrity": "sha512-cZ7rKJTLiE7u7Wi/v9Hc2fs3Ucc3jrWeMgPHbbTCeVAB2S0wOBbYlkJVeNSL04i7fdhT8wIbDq1zhC/PXTD2SA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.6.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" + } + }, + "node_modules/@sinonjs/text-encoding": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", + "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", + "dev": true + }, "node_modules/@swc/helpers": { "version": "0.4.11", "license": "MIT", @@ -1712,7 +1737,6 @@ }, "node_modules/ansi-regex": { "version": "5.0.1", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -1720,7 +1744,6 @@ }, "node_modules/ansi-styles": { "version": "4.3.0", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -1901,7 +1924,6 @@ }, "node_modules/balanced-match": { "version": "1.0.2", - "dev": true, "license": "MIT" }, "node_modules/base64-js": { @@ -1931,7 +1953,6 @@ }, "node_modules/brace-expansion": { "version": "1.1.11", - "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -2068,7 +2089,6 @@ }, "node_modules/chalk": { "version": "4.1.2", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -2295,14 +2315,12 @@ }, "node_modules/concat-map": { "version": "0.0.1", - "dev": true, "license": "MIT" }, "node_modules/convert-source-map": { "version": "1.8.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "safe-buffer": "~5.1.1" } @@ -3518,7 +3536,6 @@ }, "node_modules/fs.realpath": { "version": "1.0.0", - "dev": true, "license": "ISC" }, "node_modules/fsevents": { @@ -3565,14 +3582,12 @@ "version": "1.0.0-beta.2", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=6.9.0" } }, "node_modules/get-caller-file": { "version": "2.0.5", - "dev": true, "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" @@ -3709,7 +3724,6 @@ }, "node_modules/has-flag": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3986,7 +4000,6 @@ }, "node_modules/inflight": { "version": "1.0.6", - "dev": true, "license": "ISC", "dependencies": { "once": "^1.3.0", @@ -4303,6 +4316,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, "node_modules/isexe": { "version": "2.0.0", "dev": true, @@ -4380,6 +4399,12 @@ "node": ">=4.0" } }, + "node_modules/just-extend": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", + "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", + "dev": true + }, "node_modules/kleur": { "version": "4.1.5", "license": "MIT", @@ -5432,7 +5457,6 @@ }, "node_modules/minimatch": { "version": "3.1.2", - "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -5635,6 +5659,19 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/nise": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.1.tgz", + "integrity": "sha512-yr5kW2THW1AkxVmCnKEh4nbYkJdB3I7LUkiUgOvEkOp414mc2UMaHMA7pjq1nYowhdoJZGwEKGaQVbxfpWj10A==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.8.3", + "@sinonjs/fake-timers": ">=5", + "@sinonjs/text-encoding": "^0.7.1", + "just-extend": "^4.0.2", + "path-to-regexp": "^1.7.0" + } + }, "node_modules/node-abi": { "version": "3.24.0", "license": "MIT", @@ -5977,7 +6014,6 @@ }, "node_modules/path-is-absolute": { "version": "1.0.1", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -5995,6 +6031,15 @@ "version": "1.0.7", "license": "MIT" }, + "node_modules/path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dev": true, + "dependencies": { + "isarray": "0.0.1" + } + }, "node_modules/path-type": { "version": "4.0.0", "dev": true, @@ -6289,7 +6334,6 @@ }, "node_modules/punycode": { "version": "2.1.1", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -6626,7 +6670,6 @@ }, "node_modules/require-directory": { "version": "2.1.1", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -6921,6 +6964,33 @@ "is-arrayish": "^0.3.1" } }, + "node_modules/sinon": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-14.0.1.tgz", + "integrity": "sha512-JhJ0jCiyBWVAHDS+YSjgEbDn7Wgz9iIjA1/RK+eseJN0vAAWIWiXBdrnb92ELPyjsfreCYntD1ORtLSfIrlvSQ==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.8.3", + "@sinonjs/fake-timers": "^9.1.2", + "@sinonjs/samsam": "^6.1.1", + "diff": "^5.0.0", + "nise": "^5.1.1", + "supports-color": "^7.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" + } + }, + "node_modules/sinon/node_modules/diff": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/slash": { "version": "3.0.0", "dev": true, @@ -7121,7 +7191,6 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", - "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -7188,7 +7257,6 @@ }, "node_modules/supports-color": { "version": "7.2.0", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -7543,6 +7611,15 @@ "node": ">= 0.8.0" } }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/type-fest": { "version": "0.21.3", "dev": true, @@ -7911,7 +7988,6 @@ }, "node_modules/wrap-ansi": { "version": "7.0.0", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -7927,12 +8003,10 @@ }, "node_modules/wrap-ansi/node_modules/emoji-regex": { "version": "8.0.0", - "dev": true, "license": "MIT" }, "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -7940,7 +8014,6 @@ }, "node_modules/wrap-ansi/node_modules/string-width": { "version": "4.2.3", - "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -8177,10 +8250,10 @@ "@typescript-eslint/eslint-plugin": "5.40.0", "@typescript-eslint/parser": "5.38.1", "cross-env": "7.0.3", - "eslint": "8.24.0", + "eslint": "8.25.0", "eslint-config-prettier": "8.5.0", "prettier": "2.7.1", - "sinon": "14.0.0", + "sinon": "14.0.1", "tap": "16.3.0", "ts-node": "10.9.1", "tsconfig-paths": "4.1.0", @@ -8190,18 +8263,6 @@ "node": ">=14.18.1 <=16.x" } }, - "npm/node_modules/@ampproject/remapping": { - "version": "2.2.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, "npm/node_modules/@authenio/xml-encryption": { "name": "xml-encryption", "version": "2.0.0", @@ -8215,374 +8276,6 @@ "node": ">=12" } }, - "npm/node_modules/@babel/code-frame": { - "version": "7.18.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "npm/node_modules/@babel/compat-data": { - "version": "7.18.8", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "npm/node_modules/@babel/core": { - "version": "7.18.10", - "dev": true, - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.10", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helpers": "^7.18.9", - "@babel/parser": "^7.18.10", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.18.10", - "@babel/types": "^7.18.10", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "npm/node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "npm/node_modules/@babel/generator": { - "version": "7.18.10", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.18.10", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "npm/node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "npm/node_modules/@babel/helper-compilation-targets": { - "version": "7.18.9", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.20.2", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "npm/node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "npm/node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "npm/node_modules/@babel/helper-function-name": { - "version": "7.18.9", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "npm/node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "npm/node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "npm/node_modules/@babel/helper-module-transforms": { - "version": "7.18.9", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "npm/node_modules/@babel/helper-simple-access": { - "version": "7.18.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "npm/node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "npm/node_modules/@babel/helper-string-parser": { - "version": "7.18.10", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "npm/node_modules/@babel/helper-validator-identifier": { - "version": "7.18.6", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "npm/node_modules/@babel/helper-validator-option": { - "version": "7.18.6", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "npm/node_modules/@babel/helpers": { - "version": "7.18.9", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "npm/node_modules/@babel/highlight": { - "version": "7.18.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "npm/node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "npm/node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "npm/node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "npm/node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "dev": true, - "license": "MIT" - }, - "npm/node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "npm/node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "npm/node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "npm/node_modules/@babel/parser": { - "version": "7.18.10", - "dev": true, - "license": "MIT", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "npm/node_modules/@babel/template": { - "version": "7.18.10", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "npm/node_modules/@babel/traverse": { - "version": "7.18.10", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.10", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "npm/node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "npm/node_modules/@babel/types": { - "version": "7.18.10", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.18.10", - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "npm/node_modules/@boxyhq/saml20": { "version": "1.0.7", "license": "MIT", @@ -8597,26 +8290,6 @@ "xmlbuilder": "15.1.1" } }, - "npm/node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "npm/node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, "npm/node_modules/@faker-js/faker": { "version": "7.5.0", "dev": true, @@ -8626,45 +8299,6 @@ "npm": ">=6.0.0" } }, - "npm/node_modules/@humanwhocodes/config-array": { - "version": "0.10.5", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "npm/node_modules/@humanwhocodes/gitignore-to-minimatch": { - "version": "1.0.2", - "dev": true, - "license": "Apache-2.0", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "npm/node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "npm/node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "dev": true, - "license": "BSD-3-Clause" - }, "npm/node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "dev": true, @@ -8764,94 +8398,6 @@ "node": ">=8" } }, - "npm/node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "npm/node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "npm/node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "npm/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "devOptional": true, - "license": "MIT" - }, - "npm/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.14", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "npm/node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "npm/node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "npm/node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "npm/node_modules/@opentelemetry/api": { - "version": "1.0.4", - "license": "Apache-2.0", - "engines": { - "node": ">=8.0.0" - } - }, - "npm/node_modules/@opentelemetry/api-metrics": { - "version": "0.27.0", - "license": "Apache-2.0", - "engines": { - "node": ">=8.0.0" - } - }, "npm/node_modules/@redis/bloom": { "version": "1.0.2", "license": "MIT", @@ -8899,61 +8445,10 @@ "@redis/client": "^1.0.0" } }, - "npm/node_modules/@sinonjs/commons": { - "version": "1.8.3", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "npm/node_modules/@sinonjs/fake-timers": { - "version": "9.1.2", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, - "npm/node_modules/@sinonjs/samsam": { - "version": "6.1.1", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^1.6.0", - "lodash.get": "^4.4.2", - "type-detect": "^4.0.8" - } - }, - "npm/node_modules/@sinonjs/text-encoding": { - "version": "0.7.2", - "dev": true, - "license": "(Unlicense OR Apache-2.0)" - }, "npm/node_modules/@sqltools/formatter": { "version": "1.2.3", "license": "MIT" }, - "npm/node_modules/@tsconfig/node10": { - "version": "1.0.9", - "devOptional": true, - "license": "MIT" - }, - "npm/node_modules/@tsconfig/node12": { - "version": "1.0.11", - "devOptional": true, - "license": "MIT" - }, - "npm/node_modules/@tsconfig/node14": { - "version": "1.0.3", - "devOptional": true, - "license": "MIT" - }, - "npm/node_modules/@tsconfig/node16": { - "version": "1.0.3", - "devOptional": true, - "license": "MIT" - }, "npm/node_modules/@types/node": { "version": "18.8.3", "license": "MIT" @@ -9207,88 +8702,10 @@ "node": ">=10.0.0" } }, - "npm/node_modules/acorn": { - "version": "8.8.0", - "devOptional": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "npm/node_modules/acorn-walk": { - "version": "8.2.0", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "npm/node_modules/aggregate-error": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "npm/node_modules/ajv": { - "version": "6.12.6", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "npm/node_modules/ansi-regex": { - "version": "5.0.1", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "npm/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "npm/node_modules/any-promise": { "version": "1.3.0", "license": "MIT" }, - "npm/node_modules/anymatch": { - "version": "3.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, "npm/node_modules/app-root-path": { "version": "3.0.0", "license": "MIT", @@ -9312,23 +8729,10 @@ "dev": true, "license": "MIT" }, - "npm/node_modules/arg": { - "version": "4.1.3", - "devOptional": true, - "license": "MIT" - }, "npm/node_modules/argparse": { "version": "2.0.1", "license": "Python-2.0" }, - "npm/node_modules/array-union": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "npm/node_modules/async-hook-domain": { "version": "2.0.4", "dev": true, @@ -9350,36 +8754,6 @@ "proxy-from-env": "^1.1.0" } }, - "npm/node_modules/balanced-match": { - "version": "1.0.2", - "license": "MIT" - }, - "npm/node_modules/base64-js": { - "version": "1.5.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "npm/node_modules/binary-extensions": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "npm/node_modules/bind-obj-methods": { "version": "3.0.0", "dev": true, @@ -9388,52 +8762,6 @@ "node": ">=10" } }, - "npm/node_modules/brace-expansion": { - "version": "1.1.11", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "npm/node_modules/braces": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "npm/node_modules/browserslist": { - "version": "4.21.3", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "license": "MIT", - "dependencies": { - "caniuse-lite": "^1.0.30001370", - "electron-to-chromium": "^1.4.202", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.5" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, "npm/node_modules/bson": { "version": "4.7.0", "license": "Apache-2.0", @@ -9444,28 +8772,6 @@ "node": ">=6.9.0" } }, - "npm/node_modules/buffer": { - "version": "5.7.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, "npm/node_modules/buffer-from": { "version": "1.1.2", "dev": true, @@ -9492,88 +8798,6 @@ "node": ">=8" } }, - "npm/node_modules/camelcase": { - "version": "5.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "npm/node_modules/caniuse-lite": { - "version": "1.0.30001373", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ], - "license": "CC-BY-4.0" - }, - "npm/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "npm/node_modules/chokidar": { - "version": "3.5.3", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "npm/node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "npm/node_modules/clean-stack": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "npm/node_modules/cli-highlight": { "version": "2.1.11", "license": "ISC", @@ -9639,20 +8863,6 @@ "node": ">=0.10.0" } }, - "npm/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "npm/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, "npm/node_modules/color-support": { "version": "1.1.3", "dev": true, @@ -9676,58 +8886,6 @@ "dev": true, "license": "MIT" }, - "npm/node_modules/concat-map": { - "version": "0.0.1", - "license": "MIT" - }, - "npm/node_modules/convert-source-map": { - "version": "1.8.0", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "npm/node_modules/convert-source-map/node_modules/safe-buffer": { - "version": "5.1.2", - "dev": true, - "license": "MIT" - }, - "npm/node_modules/create-require": { - "version": "1.1.1", - "devOptional": true, - "license": "MIT" - }, - "npm/node_modules/cross-env": { - "version": "7.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.1" - }, - "bin": { - "cross-env": "src/bin/cross-env.js", - "cross-env-shell": "src/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=10.14", - "npm": ">=6", - "yarn": ">=1" - } - }, - "npm/node_modules/cross-spawn": { - "version": "7.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, "npm/node_modules/date-fns": { "version": "2.29.1", "license": "MIT", @@ -9739,34 +8897,6 @@ "url": "https://opencollective.com/date-fns" } }, - "npm/node_modules/debug": { - "version": "4.3.4", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "npm/node_modules/decamelize": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "npm/node_modules/deep-is": { - "version": "0.1.4", - "dev": true, - "license": "MIT" - }, "npm/node_modules/default-require-extensions": { "version": "3.0.0", "dev": true, @@ -9792,36 +8922,6 @@ "node": ">=0.10" } }, - "npm/node_modules/diff": { - "version": "5.1.0", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "npm/node_modules/dir-glob": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "npm/node_modules/doctrine": { - "version": "3.0.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, "npm/node_modules/dotenv": { "version": "16.0.1", "license": "BSD-2-Clause", @@ -9829,11 +8929,6 @@ "node": ">=12" } }, - "npm/node_modules/electron-to-chromium": { - "version": "1.4.210", - "dev": true, - "license": "ISC" - }, "npm/node_modules/emoji-regex": { "version": "8.0.0", "license": "MIT" @@ -9843,273 +8938,15 @@ "dev": true, "license": "MIT" }, - "npm/node_modules/escalade": { - "version": "3.1.1", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "npm/node_modules/escape-html": { "version": "1.0.3", "license": "MIT" }, - "npm/node_modules/escape-string-regexp": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "npm/node_modules/eslint": { - "version": "8.24.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint/eslintrc": "^1.3.2", - "@humanwhocodes/config-array": "^0.10.5", - "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", - "@humanwhocodes/module-importer": "^1.0.1", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.1", - "globals": "^13.15.0", - "globby": "^11.1.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "npm/node_modules/eslint-config-prettier": { - "version": "8.5.0", - "dev": true, - "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "npm/node_modules/eslint-utils": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "npm/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10" - } - }, - "npm/node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "npm/node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "npm/node_modules/esprima": { - "version": "4.0.1", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "npm/node_modules/esquery": { - "version": "1.4.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "npm/node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "npm/node_modules/esrecurse": { - "version": "4.3.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "npm/node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "npm/node_modules/esutils": { - "version": "2.0.3", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, "npm/node_modules/events-to-array": { "version": "1.1.2", "dev": true, "license": "ISC" }, - "npm/node_modules/fast-deep-equal": { - "version": "3.1.3", - "dev": true, - "license": "MIT" - }, - "npm/node_modules/fast-glob": { - "version": "3.2.11", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "npm/node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "npm/node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "dev": true, - "license": "MIT" - }, - "npm/node_modules/fast-levenshtein": { - "version": "2.0.6", - "dev": true, - "license": "MIT" - }, - "npm/node_modules/fastq": { - "version": "1.13.0", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "npm/node_modules/file-entry-cache": { - "version": "6.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "npm/node_modules/fill-range": { - "version": "7.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "npm/node_modules/find-cache-dir": { "version": "3.3.2", "dev": true, @@ -10126,43 +8963,11 @@ "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "npm/node_modules/find-up": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "npm/node_modules/findit": { "version": "2.0.0", "dev": true, "license": "MIT" }, - "npm/node_modules/flat-cache": { - "version": "3.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "npm/node_modules/flatted": { - "version": "3.2.6", - "dev": true, - "license": "ISC" - }, "npm/node_modules/follow-redirects": { "version": "1.15.2", "funding": [ @@ -10229,22 +9034,6 @@ "dev": true, "license": "ISC" }, - "npm/node_modules/fs.realpath": { - "version": "1.0.0", - "license": "ISC" - }, - "npm/node_modules/fsevents": { - "version": "2.3.2", - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "npm/node_modules/function-loop": { "version": "2.0.1", "dev": true, @@ -10264,21 +9053,6 @@ "node": ">= 4" } }, - "npm/node_modules/gensync": { - "version": "1.0.0-beta.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "npm/node_modules/get-caller-file": { - "version": "2.0.5", - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, "npm/node_modules/get-package-type": { "version": "0.1.0", "dev": true, @@ -10305,67 +9079,11 @@ "url": "https://github.com/sponsors/isaacs" } }, - "npm/node_modules/glob-parent": { - "version": "6.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "npm/node_modules/globals": { - "version": "13.17.0", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "npm/node_modules/globby": { - "version": "11.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "npm/node_modules/graceful-fs": { "version": "4.2.10", "dev": true, "license": "ISC" }, - "npm/node_modules/grapheme-splitter": { - "version": "1.0.4", - "dev": true, - "license": "MIT" - }, - "npm/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "npm/node_modules/hash-base": { "version": "3.1.0", "license": "MIT", @@ -10401,13 +9119,6 @@ "node": ">=8" } }, - "npm/node_modules/highlight.js": { - "version": "10.7.3", - "license": "BSD-3-Clause", - "engines": { - "node": "*" - } - }, "npm/node_modules/html-escaper": { "version": "2.0.2", "dev": true, @@ -10423,83 +9134,10 @@ "node": ">=0.10.0" } }, - "npm/node_modules/ieee754": { - "version": "1.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "npm/node_modules/ignore": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "npm/node_modules/imurmurhash": { - "version": "0.1.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "npm/node_modules/indent-string": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "npm/node_modules/inflight": { - "version": "1.0.6", - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "npm/node_modules/inherits": { - "version": "2.0.4", - "license": "ISC" - }, "npm/node_modules/ip": { "version": "2.0.0", "license": "MIT" }, - "npm/node_modules/is-binary-path": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "npm/node_modules/is-extglob": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "npm/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "license": "MIT", @@ -10507,25 +9145,6 @@ "node": ">=8" } }, - "npm/node_modules/is-glob": { - "version": "4.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "npm/node_modules/is-number": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, "npm/node_modules/is-property": { "version": "1.0.2", "license": "MIT" @@ -10554,16 +9173,6 @@ "node": ">=0.10.0" } }, - "npm/node_modules/isarray": { - "version": "0.0.1", - "dev": true, - "license": "MIT" - }, - "npm/node_modules/isexe": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, "npm/node_modules/istanbul-lib-coverage": { "version": "3.2.0", "dev": true, @@ -10677,16 +9286,6 @@ "url": "https://github.com/sponsors/panva" } }, - "npm/node_modules/js-sdsl": { - "version": "4.1.4", - "dev": true, - "license": "MIT" - }, - "npm/node_modules/js-tokens": { - "version": "4.0.0", - "dev": true, - "license": "MIT" - }, "npm/node_modules/js-yaml": { "version": "4.1.0", "license": "MIT", @@ -10697,55 +9296,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "npm/node_modules/jsesc": { - "version": "2.5.2", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "npm/node_modules/json-schema-traverse": { - "version": "0.4.1", - "dev": true, - "license": "MIT" - }, - "npm/node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "npm/node_modules/json5": { - "version": "2.2.1", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "npm/node_modules/just-extend": { - "version": "4.2.1", - "dev": true, - "license": "MIT" - }, - "npm/node_modules/levn": { - "version": "0.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "npm/node_modules/libtap": { "version": "1.4.0", "dev": true, @@ -10780,20 +9330,6 @@ "node": ">=0.3.1" } }, - "npm/node_modules/locate-path": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "npm/node_modules/lodash": { "version": "4.17.21", "license": "MIT" @@ -10803,30 +9339,10 @@ "dev": true, "license": "MIT" }, - "npm/node_modules/lodash.get": { - "version": "4.4.2", - "dev": true, - "license": "MIT" - }, - "npm/node_modules/lodash.merge": { - "version": "4.6.2", - "dev": true, - "license": "MIT" - }, "npm/node_modules/long": { "version": "4.0.0", "license": "Apache-2.0" }, - "npm/node_modules/lru-cache": { - "version": "6.0.0", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "npm/node_modules/make-dir": { "version": "3.1.0", "dev": true, @@ -10849,11 +9365,6 @@ "semver": "bin/semver.js" } }, - "npm/node_modules/make-error": { - "version": "1.3.6", - "devOptional": true, - "license": "ISC" - }, "npm/node_modules/marked": { "version": "4.1.1", "license": "MIT", @@ -10869,26 +9380,6 @@ "license": "MIT", "optional": true }, - "npm/node_modules/merge2": { - "version": "1.4.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "npm/node_modules/micromatch": { - "version": "4.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, "npm/node_modules/mime-db": { "version": "1.52.0", "license": "MIT", @@ -10906,21 +9397,6 @@ "node": ">= 0.6" } }, - "npm/node_modules/minimatch": { - "version": "3.1.2", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "npm/node_modules/minimist": { - "version": "1.2.6", - "dev": true, - "license": "MIT" - }, "npm/node_modules/minipass": { "version": "3.3.4", "dev": true, @@ -10966,10 +9442,6 @@ "whatwg-url": "^11.0.0" } }, - "npm/node_modules/ms": { - "version": "2.1.2", - "license": "MIT" - }, "npm/node_modules/mysql2": { "version": "2.3.3", "license": "MIT", @@ -11018,23 +9490,6 @@ "version": "2.1.2", "license": "ISC" }, - "npm/node_modules/natural-compare": { - "version": "1.4.0", - "dev": true, - "license": "MIT" - }, - "npm/node_modules/nise": { - "version": "5.1.1", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^1.8.3", - "@sinonjs/fake-timers": ">=5", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "path-to-regexp": "^1.7.0" - } - }, "npm/node_modules/node-forge": { "version": "1.3.1", "license": "(BSD-3-Clause OR GPL-2.0)", @@ -11053,19 +9508,6 @@ "node": ">=8" } }, - "npm/node_modules/node-releases": { - "version": "2.0.6", - "dev": true, - "license": "MIT" - }, - "npm/node_modules/normalize-path": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "npm/node_modules/nyc": { "version": "15.1.0", "dev": true, @@ -11162,34 +9604,6 @@ "node": ">=8" } }, - "npm/node_modules/object-assign": { - "version": "4.1.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "npm/node_modules/object-hash": { - "version": "2.2.0", - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "npm/node_modules/oidc-token-hash": { - "version": "5.0.1", - "license": "MIT", - "engines": { - "node": "^10.13.0 || >=12.0.0" - } - }, - "npm/node_modules/once": { - "version": "1.4.0", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, "npm/node_modules/opener": { "version": "1.5.2", "dev": true, @@ -11211,22 +9625,6 @@ "url": "https://github.com/sponsors/panva" } }, - "npm/node_modules/optionator": { - "version": "0.9.1", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "npm/node_modules/own-or": { "version": "1.0.0", "dev": true, @@ -11240,34 +9638,6 @@ "own-or": "^1.0.0" } }, - "npm/node_modules/p-limit": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "npm/node_modules/p-locate": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "npm/node_modules/p-map": { "version": "3.0.0", "dev": true, @@ -11320,45 +9690,6 @@ "version": "6.0.1", "license": "MIT" }, - "npm/node_modules/path-exists": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "npm/node_modules/path-is-absolute": { - "version": "1.0.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "npm/node_modules/path-key": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "npm/node_modules/path-to-regexp": { - "version": "1.8.0", - "dev": true, - "license": "MIT", - "dependencies": { - "isarray": "0.0.1" - } - }, - "npm/node_modules/path-type": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "npm/node_modules/pg": { "version": "8.8.0", "license": "MIT", @@ -11426,22 +9757,6 @@ "split2": "^4.1.0" } }, - "npm/node_modules/picocolors": { - "version": "1.0.0", - "dev": true, - "license": "ISC" - }, - "npm/node_modules/picomatch": { - "version": "2.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "npm/node_modules/pkg-dir": { "version": "4.2.0", "dev": true, @@ -11532,28 +9847,6 @@ "node": ">=0.10.0" } }, - "npm/node_modules/prelude-ls": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "npm/node_modules/prettier": { - "version": "2.7.1", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, "npm/node_modules/process-on-spawn": { "version": "1.0.0", "dev": true, @@ -11573,59 +9866,10 @@ "version": "1.0.2", "license": "ISC" }, - "npm/node_modules/punycode": { - "version": "2.1.1", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "npm/node_modules/queue-microtask": { - "version": "1.2.3", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, "npm/node_modules/rambda": { "version": "7.2.1", "license": "MIT" }, - "npm/node_modules/readable-stream": { - "version": "3.6.0", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "npm/node_modules/readdirp": { - "version": "3.6.0", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, "npm/node_modules/redis": { "version": "4.3.1", "license": "MIT", @@ -11645,17 +9889,6 @@ "version": "0.1.13", "license": "Apache-2.0" }, - "npm/node_modules/regexpp": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, "npm/node_modules/release-zalgo": { "version": "1.0.0", "dev": true, @@ -11667,41 +9900,6 @@ "node": ">=4" } }, - "npm/node_modules/require-directory": { - "version": "2.1.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "npm/node_modules/require-main-filename": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "npm/node_modules/reusify": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "npm/node_modules/rimraf": { - "version": "3.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "npm/node_modules/ripemd160": { "version": "2.0.2", "license": "MIT", @@ -11710,28 +9908,6 @@ "inherits": "^2.0.1" } }, - "npm/node_modules/run-parallel": { - "version": "1.2.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, "npm/node_modules/safe-buffer": { "version": "5.2.1", "funding": [ @@ -11750,10 +9926,6 @@ ], "license": "MIT" }, - "npm/node_modules/safer-buffer": { - "version": "2.1.2", - "license": "MIT" - }, "npm/node_modules/saslprep": { "version": "1.0.3", "license": "MIT", @@ -11786,11 +9958,6 @@ "npm/node_modules/seq-queue": { "version": "0.0.5" }, - "npm/node_modules/set-blocking": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, "npm/node_modules/sha.js": { "version": "2.4.11", "license": "(MIT AND BSD-3-Clause)", @@ -11802,55 +9969,6 @@ "sha.js": "bin.js" } }, - "npm/node_modules/shebang-command": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "npm/node_modules/shebang-regex": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "npm/node_modules/signal-exit": { - "version": "3.0.7", - "dev": true, - "license": "ISC" - }, - "npm/node_modules/sinon": { - "version": "14.0.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^1.8.3", - "@sinonjs/fake-timers": "^9.1.2", - "@sinonjs/samsam": "^6.1.1", - "diff": "^5.0.0", - "nise": "^5.1.1", - "supports-color": "^7.2.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/sinon" - } - }, - "npm/node_modules/slash": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "npm/node_modules/smart-buffer": { "version": "4.2.0", "license": "MIT", @@ -11919,11 +10037,6 @@ "node": ">= 10.x" } }, - "npm/node_modules/sprintf-js": { - "version": "1.0.3", - "dev": true, - "license": "BSD-3-Clause" - }, "npm/node_modules/sqlstring": { "version": "2.3.3", "license": "MIT", @@ -11950,13 +10063,6 @@ "node": ">=8" } }, - "npm/node_modules/string_decoder": { - "version": "1.3.0", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, "npm/node_modules/string-width": { "version": "4.2.3", "license": "MIT", @@ -11969,16 +10075,6 @@ "node": ">=8" } }, - "npm/node_modules/strip-ansi": { - "version": "6.0.1", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "npm/node_modules/strip-bom": { "version": "4.0.0", "dev": true, @@ -11987,16 +10083,6 @@ "node": ">=8" } }, - "npm/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "npm/node_modules/tap": { "version": "16.3.0", "bundleDependencies": [ @@ -14025,11 +12111,6 @@ "node": ">=8" } }, - "npm/node_modules/text-table": { - "version": "0.2.0", - "dev": true, - "license": "MIT" - }, "npm/node_modules/thenify": { "version": "3.3.1", "license": "MIT", @@ -14051,25 +12132,6 @@ "version": "0.0.1", "license": "MIT" }, - "npm/node_modules/to-fast-properties": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "npm/node_modules/to-regex-range": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, "npm/node_modules/tr46": { "version": "3.0.0", "license": "MIT", @@ -14085,130 +12147,6 @@ "dev": true, "license": "ISC" }, - "npm/node_modules/ts-node": { - "version": "10.9.1", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "npm/node_modules/ts-node/node_modules/diff": { - "version": "4.0.2", - "devOptional": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "npm/node_modules/tsconfig-paths": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "json5": "^2.2.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "npm/node_modules/tsconfig-paths/node_modules/strip-bom": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "npm/node_modules/tslib": { - "version": "2.4.0", - "license": "0BSD" - }, - "npm/node_modules/tsutils": { - "version": "3.21.0", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "npm/node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "dev": true, - "license": "0BSD" - }, - "npm/node_modules/type-check": { - "version": "0.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "npm/node_modules/type-detect": { - "version": "4.0.8", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "npm/node_modules/type-fest": { - "version": "0.20.2", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "npm/node_modules/typedarray-to-buffer": { "version": "3.1.5", "dev": true, @@ -14403,55 +12341,6 @@ "node": ">=0.10.0" } }, - "npm/node_modules/update-browserslist-db": { - "version": "1.0.5", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "npm/node_modules/uri-js": { - "version": "4.4.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "npm/node_modules/util-deprecate": { - "version": "1.0.2", - "license": "MIT" - }, - "npm/node_modules/uuid": { - "version": "8.3.2", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "npm/node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "devOptional": true, - "license": "MIT" - }, "npm/node_modules/webidl-conversions": { "version": "7.0.0", "license": "BSD-2-Clause", @@ -14470,52 +12359,6 @@ "node": ">=12" } }, - "npm/node_modules/which": { - "version": "2.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "npm/node_modules/which-module": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "npm/node_modules/word-wrap": { - "version": "1.2.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "npm/node_modules/wrap-ansi": { - "version": "7.0.0", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "npm/node_modules/wrappy": { - "version": "1.0.2", - "license": "ISC" - }, "npm/node_modules/write-file-atomic": { "version": "3.0.3", "dev": true, @@ -14577,22 +12420,6 @@ "node": ">=0.6.0" } }, - "npm/node_modules/xtend": { - "version": "4.0.2", - "license": "MIT", - "engines": { - "node": ">=0.4" - } - }, - "npm/node_modules/y18n": { - "version": "4.0.3", - "dev": true, - "license": "ISC" - }, - "npm/node_modules/yallist": { - "version": "4.0.0", - "license": "ISC" - }, "npm/node_modules/yaml": { "version": "1.10.2", "dev": true, @@ -14600,136 +12427,12 @@ "engines": { "node": ">= 6" } - }, - "npm/node_modules/yargs": { - "version": "15.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "npm/node_modules/yargs-parser": { - "version": "18.1.3", - "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "npm/node_modules/yargs/node_modules/cliui": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "npm/node_modules/yargs/node_modules/find-up": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "npm/node_modules/yargs/node_modules/locate-path": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "npm/node_modules/yargs/node_modules/p-limit": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "npm/node_modules/yargs/node_modules/p-locate": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "npm/node_modules/yargs/node_modules/wrap-ansi": { - "version": "6.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "npm/node_modules/yn": { - "version": "3.1.1", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "npm/node_modules/yocto-queue": { - "version": "0.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } } }, "dependencies": { "@ampproject/remapping": { "version": "2.2.0", "dev": true, - "peer": true, "requires": { "@jridgewell/gen-mapping": "^0.1.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -14784,13 +12487,11 @@ }, "@babel/compat-data": { "version": "7.19.0", - "dev": true, - "peer": true + "dev": true }, "@babel/core": { "version": "7.19.0", "dev": true, - "peer": true, "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", @@ -14839,7 +12540,6 @@ "@babel/helper-compilation-targets": { "version": "7.19.0", "dev": true, - "peer": true, "requires": { "@babel/compat-data": "^7.19.0", "@babel/helper-validator-option": "^7.18.6", @@ -14889,7 +12589,6 @@ "@babel/helper-module-imports": { "version": "7.18.6", "dev": true, - "peer": true, "requires": { "@babel/types": "^7.18.6" } @@ -14897,7 +12596,6 @@ "@babel/helper-module-transforms": { "version": "7.19.0", "dev": true, - "peer": true, "requires": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", @@ -14934,7 +12632,6 @@ "@babel/helper-simple-access": { "version": "7.18.6", "dev": true, - "peer": true, "requires": { "@babel/types": "^7.18.6" } @@ -14956,13 +12653,11 @@ }, "@babel/helper-validator-option": { "version": "7.18.6", - "dev": true, - "peer": true + "dev": true }, "@babel/helpers": { "version": "7.19.0", "dev": true, - "peer": true, "requires": { "@babel/template": "^7.18.10", "@babel/traverse": "^7.19.0", @@ -15108,7 +12803,7 @@ "@typescript-eslint/parser": "5.38.1", "axios": "1.1.2", "cross-env": "7.0.3", - "eslint": "8.24.0", + "eslint": "8.25.0", "eslint-config-prettier": "8.5.0", "jose": "4.10.0", "marked": "4.1.1", @@ -15121,7 +12816,7 @@ "redis": "4.3.1", "reflect-metadata": "0.1.13", "ripemd160": "2.0.2", - "sinon": "14.0.0", + "sinon": "14.0.1", "tap": "16.3.0", "ts-node": "10.9.1", "tsconfig-paths": "4.1.0", @@ -15131,14 +12826,6 @@ "xmlbuilder": "15.1.1" }, "dependencies": { - "@ampproject/remapping": { - "version": "2.2.0", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, "@authenio/xml-encryption": { "version": "npm:xml-encryption@2.0.0", "requires": { @@ -15147,252 +12834,6 @@ "xpath": "0.0.32" } }, - "@babel/code-frame": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "@babel/compat-data": { - "version": "7.18.8", - "dev": true - }, - "@babel/core": { - "version": "7.18.10", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.10", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helpers": "^7.18.9", - "@babel/parser": "^7.18.10", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.18.10", - "@babel/types": "^7.18.10", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.18.10", - "dev": true, - "requires": { - "@babel/types": "^7.18.10", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - } - } - }, - "@babel/helper-compilation-targets": { - "version": "7.18.9", - "dev": true, - "requires": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.20.2", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "dev": true - } - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.18.9", - "dev": true, - "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-imports": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-transforms": { - "version": "7.18.9", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-simple-access": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-string-parser": { - "version": "7.18.10", - "dev": true - }, - "@babel/helper-validator-identifier": { - "version": "7.18.6", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.18.6", - "dev": true - }, - "@babel/helpers": { - "version": "7.18.9", - "dev": true, - "requires": { - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" - } - }, - "@babel/highlight": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/parser": { - "version": "7.18.10", - "dev": true - }, - "@babel/template": { - "version": "7.18.10", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" - } - }, - "@babel/traverse": { - "version": "7.18.10", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.10", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "globals": { - "version": "11.12.0", - "dev": true - } - } - }, - "@babel/types": { - "version": "7.18.10", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.18.10", - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - }, "@boxyhq/saml20": { "version": "1.0.7", "requires": { @@ -15406,48 +12847,10 @@ "xmlbuilder": "15.1.1" } }, - "@cspotcode/source-map-support": { - "version": "0.8.1", - "devOptional": true, - "requires": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "dependencies": { - "@jridgewell/trace-mapping": { - "version": "0.3.9", - "devOptional": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - } - } - }, "@faker-js/faker": { "version": "7.5.0", "dev": true }, - "@humanwhocodes/config-array": { - "version": "0.10.5", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - } - }, - "@humanwhocodes/gitignore-to-minimatch": { - "version": "1.0.2", - "dev": true - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "dev": true - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "dev": true - }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", "dev": true, @@ -15513,60 +12916,6 @@ "version": "0.1.3", "dev": true }, - "@jridgewell/gen-mapping": { - "version": "0.1.1", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "devOptional": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "devOptional": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.14", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@opentelemetry/api": { - "version": "1.0.4" - }, - "@opentelemetry/api-metrics": { - "version": "0.27.0" - }, "@redis/bloom": { "version": "1.0.2", "requires": {} @@ -15595,52 +12944,9 @@ "version": "1.0.3", "requires": {} }, - "@sinonjs/commons": { - "version": "1.8.3", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - }, - "@sinonjs/fake-timers": { - "version": "9.1.2", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.7.0" - } - }, - "@sinonjs/samsam": { - "version": "6.1.1", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.6.0", - "lodash.get": "^4.4.2", - "type-detect": "^4.0.8" - } - }, - "@sinonjs/text-encoding": { - "version": "0.7.2", - "dev": true - }, "@sqltools/formatter": { "version": "1.2.3" }, - "@tsconfig/node10": { - "version": "1.0.9", - "devOptional": true - }, - "@tsconfig/node12": { - "version": "1.0.11", - "devOptional": true - }, - "@tsconfig/node14": { - "version": "1.0.3", - "devOptional": true - }, - "@tsconfig/node16": { - "version": "1.0.3", - "devOptional": true - }, "@types/node": { "version": "18.8.3" }, @@ -15773,52 +13079,9 @@ "@xmldom/xmldom": { "version": "0.8.2" }, - "acorn": { - "version": "8.8.0", - "devOptional": true - }, - "acorn-walk": { - "version": "8.2.0", - "devOptional": true - }, - "aggregate-error": { - "version": "3.1.0", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "6.12.6", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-regex": { - "version": "5.0.1" - }, - "ansi-styles": { - "version": "4.3.0", - "requires": { - "color-convert": "^2.0.1" - } - }, "any-promise": { "version": "1.3.0" }, - "anymatch": { - "version": "3.1.2", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, "app-root-path": { "version": "3.0.0" }, @@ -15833,17 +13096,9 @@ "version": "1.0.0", "dev": true }, - "arg": { - "version": "4.1.3", - "devOptional": true - }, "argparse": { "version": "2.0.1" }, - "array-union": { - "version": "2.1.0", - "dev": true - }, "async-hook-domain": { "version": "2.0.4", "dev": true @@ -15859,57 +13114,16 @@ "proxy-from-env": "^1.1.0" } }, - "balanced-match": { - "version": "1.0.2" - }, - "base64-js": { - "version": "1.5.1" - }, - "binary-extensions": { - "version": "2.2.0", - "dev": true - }, "bind-obj-methods": { "version": "3.0.0", "dev": true }, - "brace-expansion": { - "version": "1.1.11", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browserslist": { - "version": "4.21.3", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001370", - "electron-to-chromium": "^1.4.202", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.5" - } - }, "bson": { "version": "4.7.0", "requires": { "buffer": "^5.6.0" } }, - "buffer": { - "version": "5.7.1", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, "buffer-from": { "version": "1.1.2", "dev": true @@ -15927,48 +13141,6 @@ "write-file-atomic": "^3.0.0" } }, - "camelcase": { - "version": "5.3.1", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001373", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "chokidar": { - "version": "3.5.3", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "clean-stack": { - "version": "2.2.0", - "dev": true - }, "cli-highlight": { "version": "2.1.11", "requires": { @@ -16011,15 +13183,6 @@ "cluster-key-slot": { "version": "1.1.0" }, - "color-convert": { - "version": "2.0.1", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4" - }, "color-support": { "version": "1.1.3", "dev": true @@ -16034,59 +13197,9 @@ "version": "1.0.1", "dev": true }, - "concat-map": { - "version": "0.0.1" - }, - "convert-source-map": { - "version": "1.8.0", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "dev": true - } - } - }, - "create-require": { - "version": "1.1.1", - "devOptional": true - }, - "cross-env": { - "version": "7.0.3", - "dev": true, - "requires": { - "cross-spawn": "^7.0.1" - } - }, - "cross-spawn": { - "version": "7.0.3", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, "date-fns": { "version": "2.29.1" }, - "debug": { - "version": "4.3.4", - "requires": { - "ms": "2.1.2" - } - }, - "decamelize": { - "version": "1.2.0", - "dev": true - }, - "deep-is": { - "version": "0.1.4", - "dev": true - }, "default-require-extensions": { "version": "3.0.0", "dev": true, @@ -16100,31 +13213,9 @@ "denque": { "version": "2.1.0" }, - "diff": { - "version": "5.1.0", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, "dotenv": { "version": "16.0.1" }, - "electron-to-chromium": { - "version": "1.4.210", - "dev": true - }, "emoji-regex": { "version": "8.0.0" }, @@ -16132,184 +13223,13 @@ "version": "4.1.1", "dev": true }, - "escalade": { - "version": "3.1.1" - }, "escape-html": { "version": "1.0.3" }, - "escape-string-regexp": { - "version": "4.0.0", - "dev": true - }, - "eslint": { - "version": "8.24.0", - "dev": true, - "requires": { - "@eslint/eslintrc": "^1.3.2", - "@humanwhocodes/config-array": "^0.10.5", - "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", - "@humanwhocodes/module-importer": "^1.0.1", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.1", - "globals": "^13.15.0", - "globby": "^11.1.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "dependencies": { - "eslint-scope": { - "version": "7.1.1", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "dev": true - } - } - }, - "eslint-config-prettier": { - "version": "8.5.0", - "dev": true, - "requires": {} - }, - "eslint-utils": { - "version": "3.0.0", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "dev": true - } - } - }, - "esprima": { - "version": "4.0.1", - "dev": true - }, - "esquery": { - "version": "1.4.0", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "dev": true - } - } - }, - "esutils": { - "version": "2.0.3", - "dev": true - }, "events-to-array": { "version": "1.1.2", "dev": true }, - "fast-deep-equal": { - "version": "3.1.3", - "dev": true - }, - "fast-glob": { - "version": "3.2.11", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "dev": true - }, - "fastq": { - "version": "1.13.0", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, "find-cache-dir": { "version": "3.3.2", "dev": true, @@ -16319,30 +13239,10 @@ "pkg-dir": "^4.1.0" } }, - "find-up": { - "version": "5.0.0", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, "findit": { "version": "2.0.0", "dev": true }, - "flat-cache": { - "version": "3.0.4", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.6", - "dev": true - }, "follow-redirects": { "version": "1.15.2" }, @@ -16370,14 +13270,6 @@ "version": "1.0.0", "dev": true }, - "fs.realpath": { - "version": "1.0.0" - }, - "fsevents": { - "version": "2.3.2", - "dev": true, - "optional": true - }, "function-loop": { "version": "2.0.1", "dev": true @@ -16391,13 +13283,6 @@ "generic-pool": { "version": "3.8.2" }, - "gensync": { - "version": "1.0.0-beta.2", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5" - }, "get-package-type": { "version": "0.1.0", "dev": true @@ -16413,43 +13298,10 @@ "path-is-absolute": "^1.0.0" } }, - "glob-parent": { - "version": "6.0.2", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "globals": { - "version": "13.17.0", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "globby": { - "version": "11.1.0", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, "graceful-fs": { "version": "4.2.10", "dev": true }, - "grapheme-splitter": { - "version": "1.0.4", - "dev": true - }, - "has-flag": { - "version": "4.0.0" - }, "hash-base": { "version": "3.1.0", "requires": { @@ -16472,9 +13324,6 @@ } } }, - "highlight.js": { - "version": "10.7.3" - }, "html-escaper": { "version": "2.0.2", "dev": true @@ -16485,59 +13334,12 @@ "safer-buffer": ">= 2.1.2 < 3.0.0" } }, - "ieee754": { - "version": "1.2.1" - }, - "ignore": { - "version": "5.2.0", - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4" - }, "ip": { "version": "2.0.0" }, - "is-binary-path": { - "version": "2.1.0", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "dev": true - }, "is-fullwidth-code-point": { "version": "3.0.0" }, - "is-glob": { - "version": "4.0.3", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "dev": true - }, "is-property": { "version": "1.0.2" }, @@ -16553,14 +13355,6 @@ "version": "1.0.2", "dev": true }, - "isarray": { - "version": "0.0.1", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "dev": true - }, "istanbul-lib-coverage": { "version": "3.2.0", "dev": true @@ -16636,48 +13430,12 @@ "jose": { "version": "4.10.0" }, - "js-sdsl": { - "version": "4.1.4", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "dev": true - }, "js-yaml": { "version": "4.1.0", "requires": { "argparse": "^2.0.1" } }, - "jsesc": { - "version": "2.5.2", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "dev": true - }, - "json5": { - "version": "2.2.1", - "dev": true - }, - "just-extend": { - "version": "4.2.1", - "dev": true - }, - "levn": { - "version": "0.4.1", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, "libtap": { "version": "1.4.0", "dev": true, @@ -16703,13 +13461,6 @@ } } }, - "locate-path": { - "version": "6.0.0", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, "lodash": { "version": "4.17.21" }, @@ -16717,23 +13468,9 @@ "version": "4.4.0", "dev": true }, - "lodash.get": { - "version": "4.4.2", - "dev": true - }, - "lodash.merge": { - "version": "4.6.2", - "dev": true - }, "long": { "version": "4.0.0" }, - "lru-cache": { - "version": "6.0.0", - "requires": { - "yallist": "^4.0.0" - } - }, "make-dir": { "version": "3.1.0", "dev": true, @@ -16747,10 +13484,6 @@ } } }, - "make-error": { - "version": "1.3.6", - "devOptional": true - }, "marked": { "version": "4.1.1" }, @@ -16758,18 +13491,6 @@ "version": "1.5.0", "optional": true }, - "merge2": { - "version": "1.4.1", - "dev": true - }, - "micromatch": { - "version": "4.0.5", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, "mime-db": { "version": "1.52.0" }, @@ -16779,16 +13500,6 @@ "mime-db": "1.52.0" } }, - "minimatch": { - "version": "3.1.2", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.6", - "dev": true - }, "minipass": { "version": "3.3.4", "dev": true, @@ -16816,9 +13527,6 @@ "whatwg-url": "^11.0.0" } }, - "ms": { - "version": "2.1.2" - }, "mysql2": { "version": "2.3.3", "requires": { @@ -16858,21 +13566,6 @@ } } }, - "natural-compare": { - "version": "1.4.0", - "dev": true - }, - "nise": { - "version": "5.1.1", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.8.3", - "@sinonjs/fake-timers": ">=5", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "path-to-regexp": "^1.7.0" - } - }, "node-forge": { "version": "1.3.1" }, @@ -16883,14 +13576,6 @@ "process-on-spawn": "^1.0.0" } }, - "node-releases": { - "version": "2.0.6", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "dev": true - }, "nyc": { "version": "15.1.0", "dev": true, @@ -16959,21 +13644,6 @@ } } }, - "object-assign": { - "version": "4.1.1" - }, - "object-hash": { - "version": "2.2.0" - }, - "oidc-token-hash": { - "version": "5.0.1" - }, - "once": { - "version": "1.4.0", - "requires": { - "wrappy": "1" - } - }, "opener": { "version": "1.5.2", "dev": true @@ -16987,18 +13657,6 @@ "oidc-token-hash": "^5.0.1" } }, - "optionator": { - "version": "0.9.1", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, "own-or": { "version": "1.0.0", "dev": true @@ -17010,20 +13668,6 @@ "own-or": "^1.0.0" } }, - "p-limit": { - "version": "3.1.0", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, "p-map": { "version": "3.0.0", "dev": true, @@ -17062,28 +13706,6 @@ } } }, - "path-exists": { - "version": "4.0.0", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1" - }, - "path-key": { - "version": "3.1.1", - "dev": true - }, - "path-to-regexp": { - "version": "1.8.0", - "dev": true, - "requires": { - "isarray": "0.0.1" - } - }, - "path-type": { - "version": "4.0.0", - "dev": true - }, "pg": { "version": "8.8.0", "requires": { @@ -17125,14 +13747,6 @@ "split2": "^4.1.0" } }, - "picocolors": { - "version": "1.0.0", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "dev": true - }, "pkg-dir": { "version": "4.2.0", "dev": true, @@ -17186,14 +13800,6 @@ "xtend": "^4.0.0" } }, - "prelude-ls": { - "version": "1.2.1", - "dev": true - }, - "prettier": { - "version": "2.7.1", - "dev": true - }, "process-on-spawn": { "version": "1.0.0", "dev": true, @@ -17207,31 +13813,9 @@ "pseudomap": { "version": "1.0.2" }, - "punycode": { - "version": "2.1.1" - }, - "queue-microtask": { - "version": "1.2.3", - "dev": true - }, "rambda": { "version": "7.2.1" }, - "readable-stream": { - "version": "3.6.0", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, "redis": { "version": "4.3.1", "requires": { @@ -17246,10 +13830,6 @@ "reflect-metadata": { "version": "0.1.13" }, - "regexpp": { - "version": "3.2.0", - "dev": true - }, "release-zalgo": { "version": "1.0.0", "dev": true, @@ -17257,24 +13837,6 @@ "es6-error": "^4.0.1" } }, - "require-directory": { - "version": "2.1.1" - }, - "require-main-filename": { - "version": "2.0.0", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, "ripemd160": { "version": "2.0.2", "requires": { @@ -17282,19 +13844,9 @@ "inherits": "^2.0.1" } }, - "run-parallel": { - "version": "1.2.0", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, "safe-buffer": { "version": "5.2.1" }, - "safer-buffer": { - "version": "2.1.2" - }, "saslprep": { "version": "1.0.3", "optional": true, @@ -17315,10 +13867,6 @@ "seq-queue": { "version": "0.0.5" }, - "set-blocking": { - "version": "2.0.0", - "dev": true - }, "sha.js": { "version": "2.4.11", "requires": { @@ -17326,37 +13874,6 @@ "safe-buffer": "^5.0.1" } }, - "shebang-command": { - "version": "2.0.0", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "dev": true - }, - "signal-exit": { - "version": "3.0.7", - "dev": true - }, - "sinon": { - "version": "14.0.0", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.8.3", - "@sinonjs/fake-timers": "^9.1.2", - "@sinonjs/samsam": "^6.1.1", - "diff": "^5.0.0", - "nise": "^5.1.1", - "supports-color": "^7.2.0" - } - }, - "slash": { - "version": "3.0.0", - "dev": true - }, "smart-buffer": { "version": "4.2.0" }, @@ -17401,10 +13918,6 @@ "split2": { "version": "4.1.0" }, - "sprintf-js": { - "version": "1.0.3", - "dev": true - }, "sqlstring": { "version": "2.3.3" }, @@ -17421,12 +13934,6 @@ } } }, - "string_decoder": { - "version": "1.3.0", - "requires": { - "safe-buffer": "~5.2.0" - } - }, "string-width": { "version": "4.2.3", "requires": { @@ -17435,22 +13942,10 @@ "strip-ansi": "^6.0.1" } }, - "strip-ansi": { - "version": "6.0.1", - "requires": { - "ansi-regex": "^5.0.1" - } - }, "strip-bom": { "version": "4.0.0", "dev": true }, - "supports-color": { - "version": "7.2.0", - "requires": { - "has-flag": "^4.0.0" - } - }, "tap": { "version": "16.3.0", "dev": true, @@ -18768,10 +15263,6 @@ "minimatch": "^3.0.4" } }, - "text-table": { - "version": "0.2.0", - "dev": true - }, "thenify": { "version": "3.3.1", "requires": { @@ -18787,17 +15278,6 @@ "thumbprint": { "version": "0.0.1" }, - "to-fast-properties": { - "version": "2.0.0", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, "tr46": { "version": "3.0.0", "requires": { @@ -18808,77 +15288,6 @@ "version": "1.0.1", "dev": true }, - "ts-node": { - "version": "10.9.1", - "devOptional": true, - "requires": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "dependencies": { - "diff": { - "version": "4.0.2", - "devOptional": true - } - } - }, - "tsconfig-paths": { - "version": "4.1.0", - "dev": true, - "requires": { - "json5": "^2.2.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "strip-bom": { - "version": "3.0.0", - "dev": true - } - } - }, - "tslib": { - "version": "2.4.0" - }, - "tsutils": { - "version": "3.21.0", - "dev": true, - "requires": { - "tslib": "^1.8.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "dev": true - } - } - }, - "type-check": { - "version": "0.4.0", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-detect": { - "version": "4.0.8", - "dev": true - }, - "type-fest": { - "version": "0.20.2", - "dev": true - }, "typedarray-to-buffer": { "version": "3.1.5", "dev": true, @@ -18956,31 +15365,6 @@ } } }, - "update-browserslist-db": { - "version": "1.0.5", - "dev": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2" - }, - "uuid": { - "version": "8.3.2" - }, - "v8-compile-cache-lib": { - "version": "3.0.1", - "devOptional": true - }, "webidl-conversions": { "version": "7.0.0" }, @@ -18991,32 +15375,6 @@ "webidl-conversions": "^7.0.0" } }, - "which": { - "version": "2.0.2", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "dev": true - }, - "word-wrap": { - "version": "1.2.3", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "wrappy": { - "version": "1.0.2" - }, "write-file-atomic": { "version": "3.0.3", "dev": true, @@ -19057,101 +15415,9 @@ "xpath": { "version": "0.0.32" }, - "xtend": { - "version": "4.0.2" - }, - "y18n": { - "version": "4.0.3", - "dev": true - }, - "yallist": { - "version": "4.0.0" - }, "yaml": { "version": "1.10.2", "dev": true - }, - "yargs": { - "version": "15.4.1", - "dev": true, - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "dependencies": { - "cliui": { - "version": "6.0.0", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "find-up": { - "version": "4.1.0", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "wrap-ansi": { - "version": "6.2.0", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "yargs-parser": { - "version": "18.1.3", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "yn": { - "version": "3.1.1", - "devOptional": true - }, - "yocto-queue": { - "version": "0.1.0", - "dev": true } } }, @@ -19265,7 +15531,6 @@ "@jridgewell/gen-mapping": { "version": "0.1.1", "dev": true, - "peer": true, "requires": { "@jridgewell/set-array": "^1.0.0", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -19429,6 +15694,41 @@ "version": "1.1.4", "dev": true }, + "@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", + "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@sinonjs/samsam": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.1.1.tgz", + "integrity": "sha512-cZ7rKJTLiE7u7Wi/v9Hc2fs3Ucc3jrWeMgPHbbTCeVAB2S0wOBbYlkJVeNSL04i7fdhT8wIbDq1zhC/PXTD2SA==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.6.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" + } + }, + "@sinonjs/text-encoding": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", + "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", + "dev": true + }, "@swc/helpers": { "version": "0.4.11", "requires": { @@ -19841,12 +16141,10 @@ } }, "ansi-regex": { - "version": "5.0.1", - "dev": true + "version": "5.0.1" }, "ansi-styles": { "version": "4.3.0", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -19945,8 +16243,7 @@ "version": "2.0.2" }, "balanced-match": { - "version": "1.0.2", - "dev": true + "version": "1.0.2" }, "base64-js": { "version": "1.5.1" @@ -19956,7 +16253,6 @@ }, "brace-expansion": { "version": "1.1.11", - "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -20020,7 +16316,6 @@ }, "chalk": { "version": "4.1.2", - "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -20156,13 +16451,11 @@ "dev": true }, "concat-map": { - "version": "0.0.1", - "dev": true + "version": "0.0.1" }, "convert-source-map": { "version": "1.8.0", "dev": true, - "peer": true, "requires": { "safe-buffer": "~5.1.1" } @@ -20947,8 +17240,7 @@ "version": "1.0.0" }, "fs.realpath": { - "version": "1.0.0", - "dev": true + "version": "1.0.0" }, "fsevents": { "version": "2.3.2", @@ -20973,12 +17265,10 @@ }, "gensync": { "version": "1.0.0-beta.2", - "dev": true, - "peer": true + "dev": true }, "get-caller-file": { - "version": "2.0.5", - "dev": true + "version": "2.0.5" }, "get-intrinsic": { "version": "1.1.2", @@ -21057,8 +17347,7 @@ "dev": true }, "has-flag": { - "version": "4.0.0", - "dev": true + "version": "4.0.0" }, "has-property-descriptors": { "version": "1.0.0", @@ -21203,7 +17492,6 @@ }, "inflight": { "version": "1.0.6", - "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -21363,6 +17651,12 @@ "call-bind": "^1.0.2" } }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, "isexe": { "version": "2.0.0", "dev": true @@ -21409,6 +17703,12 @@ "object.assign": "^4.1.2" } }, + "just-extend": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", + "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", + "dev": true + }, "kleur": { "version": "4.1.5" }, @@ -21991,7 +18291,6 @@ }, "minimatch": { "version": "3.1.2", - "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -22091,6 +18390,19 @@ "vfile-matter": "^3.0.1" } }, + "nise": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.1.tgz", + "integrity": "sha512-yr5kW2THW1AkxVmCnKEh4nbYkJdB3I7LUkiUgOvEkOp414mc2UMaHMA7pjq1nYowhdoJZGwEKGaQVbxfpWj10A==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.8.3", + "@sinonjs/fake-timers": ">=5", + "@sinonjs/text-encoding": "^0.7.1", + "just-extend": "^4.0.2", + "path-to-regexp": "^1.7.0" + } + }, "node-abi": { "version": "3.24.0", "requires": { @@ -22291,8 +18603,7 @@ "dev": true }, "path-is-absolute": { - "version": "1.0.1", - "dev": true + "version": "1.0.1" }, "path-key": { "version": "3.1.1", @@ -22301,6 +18612,15 @@ "path-parse": { "version": "1.0.7" }, + "path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dev": true, + "requires": { + "isarray": "0.0.1" + } + }, "path-type": { "version": "4.0.0", "dev": true @@ -22448,8 +18768,7 @@ } }, "punycode": { - "version": "2.1.1", - "dev": true + "version": "2.1.1" }, "queue-microtask": { "version": "1.2.3" @@ -22629,8 +18948,7 @@ } }, "require-directory": { - "version": "2.1.1", - "dev": true + "version": "2.1.1" }, "require-from-string": { "version": "2.0.2", @@ -22795,6 +19113,28 @@ "is-arrayish": "^0.3.1" } }, + "sinon": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-14.0.1.tgz", + "integrity": "sha512-JhJ0jCiyBWVAHDS+YSjgEbDn7Wgz9iIjA1/RK+eseJN0vAAWIWiXBdrnb92ELPyjsfreCYntD1ORtLSfIrlvSQ==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.8.3", + "@sinonjs/fake-timers": "^9.1.2", + "@sinonjs/samsam": "^6.1.1", + "diff": "^5.0.0", + "nise": "^5.1.1", + "supports-color": "^7.2.0" + }, + "dependencies": { + "diff": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "dev": true + } + } + }, "slash": { "version": "3.0.0", "dev": true @@ -22907,7 +19247,6 @@ }, "strip-ansi": { "version": "6.0.1", - "dev": true, "requires": { "ansi-regex": "^5.0.1" } @@ -22938,7 +19277,6 @@ }, "supports-color": { "version": "7.2.0", - "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -23163,6 +19501,12 @@ "prelude-ls": "^1.2.1" } }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, "type-fest": { "version": "0.21.3", "dev": true @@ -23372,7 +19716,6 @@ }, "wrap-ansi": { "version": "7.0.0", - "dev": true, "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -23380,16 +19723,13 @@ }, "dependencies": { "emoji-regex": { - "version": "8.0.0", - "dev": true + "version": "8.0.0" }, "is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true + "version": "3.0.0" }, "string-width": { "version": "4.2.3", - "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", diff --git a/package.json b/package.json index 7342bddbe..3209a55a6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jackson", - "version": "1.3.0", + "version": "1.3.1", "private": true, "description": "SAML 2.0 service", "keywords": [ diff --git a/swagger/swagger.json b/swagger/swagger.json index 79d5ae28b..870c56a10 100644 --- a/swagger/swagger.json +++ b/swagger/swagger.json @@ -1,7 +1,7 @@ { "info": { "title": "SAML Jackson API", - "version": "1.3.0", + "version": "1.3.1", "description": "This is the API documentation for SAML Jackson service.", "termsOfService": "https://boxyhq.com/terms.html", "contact": { @@ -87,6 +87,9 @@ }, "401": { "description": "Unauthorized" + }, + "500": { + "description": "Please set OpenID response handler path (oidcPath) on Jackson" } } }, @@ -366,6 +369,9 @@ }, "401": { "description": "Unauthorized" + }, + "500": { + "description": "Please set OpenID response handler path (oidcPath) on Jackson" } } }, @@ -380,6 +386,9 @@ }, { "$ref": "#/parameters/clientIDParamGet" + }, + { + "$ref": "#/parameters/strategyParamGet" } ], "operationId": "get-connections", @@ -835,6 +844,12 @@ "type": "string", "description": "Client ID" }, + "strategyParamGet": { + "in": "query", + "name": "strategy", + "type": "string", + "description": "Strategy which can help to filter connections with tenant/product query" + }, "clientIDDel": { "name": "clientID", "in": "formData", @@ -863,7 +878,7 @@ "name": "strategy", "in": "formData", "type": "string", - "description": "Strategy" + "description": "Strategy which can help to filter connections with tenant/product query" } }, "tags": []