From 0084ed0b6c1b407a0d02e344e0a702a5516f7768 Mon Sep 17 00:00:00 2001 From: gyaneshgouraw-okta Date: Sat, 27 Apr 2024 16:17:49 +0530 Subject: [PATCH 1/7] Added changes to support mTLS authentication --- EXAMPLES.md | 19 ++++++++++ src/auth/client-authentication.ts | 11 +++++- test/auth/client-authentication.test.ts | 46 +++++++++++++++++++++++++ 3 files changed, 75 insertions(+), 1 deletion(-) diff --git a/EXAMPLES.md b/EXAMPLES.md index c9c510ed0..6ad971b2e 100644 --- a/EXAMPLES.md +++ b/EXAMPLES.md @@ -6,6 +6,7 @@ - [Use Refresh Tokens](#use-refresh-tokens) - [Complete the Authorization Code flow with PKCE](#complete-the-authorization-code-flow-with-pkce) - [Login with Passwordless](#login-with-passwordless) + - [mTLS request](#mtls-request) - [Management Client](#management-client) - [Paginate through a list of users](#paginate-through-a-list-of-users) - [Paginate through a list of logs using checkpoint pagination](#paginate-through-a-list-of-logs-using-checkpoint-pagination) @@ -129,6 +130,24 @@ const { data: tokens } = await auth.passwordless.loginWithEmail({ }); ``` +### mTLS request + +```js +import { AuthenticationClient } from 'auth0'; + +// add mtls prefix to your domain name +const auth = new AuthenticationClient({ + domain: 'mtls.{YOUR_TENANT_AND REGION}.auth0.com', + clientId: '{YOUR_CLIENT_ID}', + agent: new https.Agent({ ... }), +}); + +const { data: tokens } = await auth.oauth.clientCredentialsGrant({ + audience: 'you-api', +}); + +``` + ## Management Client ### Paginate through a list of users diff --git a/src/auth/client-authentication.ts b/src/auth/client-authentication.ts index 1c10fb9f0..8af14bcac 100644 --- a/src/auth/client-authentication.ts +++ b/src/auth/client-authentication.ts @@ -26,6 +26,7 @@ interface AddClientAuthenticationOptions { * Adds `client_assertion` and `client_assertion_type` for Private Key JWT token endpoint auth method. * * If `clientAssertionSigningKey` is provided it takes precedent over `clientSecret` . + * Also skips `client_secret` & `clientAssertionSigningKey` if request(domain) is of mTLS type */ export const addClientAuthentication = async ({ payload, @@ -55,9 +56,17 @@ export const addClientAuthentication = async ({ } if ( (!payload.client_secret || payload.client_secret.trim().length === 0) && - (!payload.client_assertion || payload.client_assertion.trim().length === 0) + (!payload.client_assertion || payload.client_assertion.trim().length === 0) && + !isMTLSRequest(domain) ) { throw new Error('The client_secret or client_assertion field is required.'); } return payload; }; + +/** + * Checks if domain name starts with mTLS keyword for mTLS requests + */ +const isMTLSRequest = (domain: string): boolean => { + return domain.toLowerCase().startsWith('mtls'); +}; diff --git a/test/auth/client-authentication.test.ts b/test/auth/client-authentication.test.ts index 53000d469..cadb359a5 100644 --- a/test/auth/client-authentication.test.ts +++ b/test/auth/client-authentication.test.ts @@ -205,3 +205,49 @@ describe('client-authentication for par endpoint', () => { }); }); }); + +describe('mTLS-authentication', () => { + const path = jest.fn(); + const body = jest.fn(); + const headers = jest.fn(); + const clientAssertion = jest.fn(); + const URL = 'https://mtls.tenant.auth0.com/'; + + beforeEach(() => { + async function handler(this: any, pathIn: unknown, bodyIn: string) { + const bodyParsed = Object.fromEntries(new URLSearchParams(bodyIn)); + path(pathIn); + body(bodyParsed); + headers(this.req.headers); + if ((bodyParsed as any).client_assertion) { + clientAssertion(await verify(bodyParsed.client_assertion, TEST_PUBLIC_KEY, verifyOpts)); + } + return { + access_token: 'test-access-token', + }; + } + + nock(URL, { encodedQueryParams: true }).post('/oauth/token').reply(200, handler).persist(); + }); + + afterEach(() => { + nock.cleanAll(); + jest.clearAllMocks(); + }); + + it('should do client credentials grant without client secret or assertion', async () => { + const auth0 = new AuthenticationClient({ + domain: 'mtls.tenant.auth0.com', + clientId, + }); + await auth0.oauth.clientCredentialsGrant({ + audience: 'my-api', + }); + expect(path).toHaveBeenCalledWith('/oauth/token'); + expect(body).toHaveBeenCalledWith({ + grant_type: 'client_credentials', + client_id: clientId, + audience: 'my-api', + }); + }); +}); From b94db631770a5d57f414174c21896e0178d5feaf Mon Sep 17 00:00:00 2001 From: gyaneshgouraw-okta Date: Mon, 29 Apr 2024 11:21:24 +0530 Subject: [PATCH 2/7] Updated mTLS validation condition. --- src/auth/base-auth-api.ts | 3 +++ src/auth/client-authentication.ts | 15 +++++++++------ test/auth/client-authentication.test.ts | 9 +++++++-- test/auth/oauth.test.ts | 4 +++- 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/auth/base-auth-api.ts b/src/auth/base-auth-api.ts index 027245dbf..3f7c6f6e6 100644 --- a/src/auth/base-auth-api.ts +++ b/src/auth/base-auth-api.ts @@ -92,6 +92,7 @@ export class BaseAuthAPI extends BaseAPI { clientSecret?: string; clientAssertionSigningKey?: string; clientAssertionSigningAlg?: string; + agent?: unknown; constructor(options: AuthenticationClientOptions) { super({ @@ -107,6 +108,7 @@ export class BaseAuthAPI extends BaseAPI { this.clientSecret = options.clientSecret; this.clientAssertionSigningKey = options.clientAssertionSigningKey; this.clientAssertionSigningAlg = options.clientAssertionSigningAlg; + this.agent = options.agent; } /** @@ -122,6 +124,7 @@ export class BaseAuthAPI extends BaseAPI { clientSecret: this.clientSecret, clientAssertionSigningKey: this.clientAssertionSigningKey, clientAssertionSigningAlg: this.clientAssertionSigningAlg, + agent: this.agent, }); } } diff --git a/src/auth/client-authentication.ts b/src/auth/client-authentication.ts index 8af14bcac..d15d99d96 100644 --- a/src/auth/client-authentication.ts +++ b/src/auth/client-authentication.ts @@ -17,6 +17,7 @@ interface AddClientAuthenticationOptions { clientAssertionSigningKey?: string; clientAssertionSigningAlg?: string; clientSecret?: string; + agent?: unknown; } /** @@ -26,7 +27,6 @@ interface AddClientAuthenticationOptions { * Adds `client_assertion` and `client_assertion_type` for Private Key JWT token endpoint auth method. * * If `clientAssertionSigningKey` is provided it takes precedent over `clientSecret` . - * Also skips `client_secret` & `clientAssertionSigningKey` if request(domain) is of mTLS type */ export const addClientAuthentication = async ({ payload, @@ -35,6 +35,7 @@ export const addClientAuthentication = async ({ clientAssertionSigningKey, clientAssertionSigningAlg, clientSecret, + agent, }: AddClientAuthenticationOptions): Promise> => { const cid = payload.client_id || clientId; if (clientAssertionSigningKey && !payload.client_assertion) { @@ -57,16 +58,18 @@ export const addClientAuthentication = async ({ if ( (!payload.client_secret || payload.client_secret.trim().length === 0) && (!payload.client_assertion || payload.client_assertion.trim().length === 0) && - !isMTLSRequest(domain) + !isMTLSRequest(agent) ) { - throw new Error('The client_secret or client_assertion field is required.'); + throw new Error( + 'The client_secret or client_assertion field is required, or it should be mTLS request.' + ); } return payload; }; /** - * Checks if domain name starts with mTLS keyword for mTLS requests + * Checks if the request has agent property provided */ -const isMTLSRequest = (domain: string): boolean => { - return domain.toLowerCase().startsWith('mtls'); +const isMTLSRequest = (agent: unknown): boolean => { + return typeof agent === 'undefined' ? false : true; }; diff --git a/test/auth/client-authentication.test.ts b/test/auth/client-authentication.test.ts index cadb359a5..15538f747 100644 --- a/test/auth/client-authentication.test.ts +++ b/test/auth/client-authentication.test.ts @@ -111,7 +111,9 @@ describe('client-authentication', () => { auth0.oauth.clientCredentialsGrant({ audience: 'my-api', }) - ).rejects.toThrow('The client_secret or client_assertion field is required.'); + ).rejects.toThrow( + 'The client_secret or client_assertion field is required, or it should be mTLS request.' + ); }); it('should allow you to pass your own client assertion', async () => { @@ -235,10 +237,13 @@ describe('mTLS-authentication', () => { jest.clearAllMocks(); }); - it('should do client credentials grant without client secret or assertion', async () => { + it('should do client credentials grant without client secret or assertion & only with agent', async () => { const auth0 = new AuthenticationClient({ domain: 'mtls.tenant.auth0.com', clientId, + agent: { + options: { key: 'my-key', cert: 'my-cert' }, + }, }); await auth0.oauth.clientCredentialsGrant({ audience: 'my-api', diff --git a/test/auth/oauth.test.ts b/test/auth/oauth.test.ts index 0e0cbaa7e..24ca8d13d 100644 --- a/test/auth/oauth.test.ts +++ b/test/auth/oauth.test.ts @@ -310,7 +310,9 @@ describe('OAuth', () => { response_type: 'code', redirect_uri: 'https://example.com', } as PushedAuthorizationRequest) - ).rejects.toThrow('The client_secret or client_assertion field is required.'); + ).rejects.toThrow( + 'The client_secret or client_assertion field is required, or it should be mTLS request.' + ); }); it('should return the par response', async () => { From b35f089b62ca148c1731059e8b58b28e88ef564a Mon Sep 17 00:00:00 2001 From: gyaneshgouraw-okta Date: Mon, 29 Apr 2024 11:41:43 +0530 Subject: [PATCH 3/7] Updated mTLS example --- EXAMPLES.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/EXAMPLES.md b/EXAMPLES.md index 6ad971b2e..091e9c126 100644 --- a/EXAMPLES.md +++ b/EXAMPLES.md @@ -135,9 +135,8 @@ const { data: tokens } = await auth.passwordless.loginWithEmail({ ```js import { AuthenticationClient } from 'auth0'; -// add mtls prefix to your domain name const auth = new AuthenticationClient({ - domain: 'mtls.{YOUR_TENANT_AND REGION}.auth0.com', + domain: '{YOUR_TENANT_AND REGION}.auth0.com', clientId: '{YOUR_CLIENT_ID}', agent: new https.Agent({ ... }), }); From 5a6434233d07c0ebf2e88ad4c4fbdf635d94f181 Mon Sep 17 00:00:00 2001 From: gyaneshgouraw-okta Date: Tue, 30 Apr 2024 19:08:11 +0530 Subject: [PATCH 4/7] chore: Update mTLS example related information --- EXAMPLES.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/EXAMPLES.md b/EXAMPLES.md index 091e9c126..63b9b2e37 100644 --- a/EXAMPLES.md +++ b/EXAMPLES.md @@ -132,11 +132,13 @@ const { data: tokens } = await auth.passwordless.loginWithEmail({ ### mTLS request +Refer mTLS documentation for more info - [Link](https://auth0.com/docs/get-started/authentication-and-authorization-flow/authenticate-with-mtls) + ```js import { AuthenticationClient } from 'auth0'; const auth = new AuthenticationClient({ - domain: '{YOUR_TENANT_AND REGION}.auth0.com', + domain: 'mtls.{YOUR_TENANT_AND REGION}.auth0.com', clientId: '{YOUR_CLIENT_ID}', agent: new https.Agent({ ... }), }); From ffba4af31ec85ea49a6110e07c7e9b8da2dbadba Mon Sep 17 00:00:00 2001 From: gyaneshgouraw-okta Date: Mon, 6 May 2024 13:50:16 +0530 Subject: [PATCH 5/7] chore: Added review feed related to mTLS, introduced useMTLS param --- EXAMPLES.md | 9 ++++++--- src/auth/base-auth-api.ts | 7 ++++--- src/auth/client-authentication.ts | 13 +++---------- src/auth/oauth.ts | 6 +++++- src/lib/runtime.ts | 2 +- src/management/management-client-options.ts | 2 ++ src/utils.ts | 5 +++++ test/auth/client-authentication.test.ts | 3 ++- 8 files changed, 28 insertions(+), 19 deletions(-) diff --git a/EXAMPLES.md b/EXAMPLES.md index 63b9b2e37..ad61d9470 100644 --- a/EXAMPLES.md +++ b/EXAMPLES.md @@ -136,17 +136,20 @@ Refer mTLS documentation for more info - [Link](https://auth0.com/docs/get-start ```js import { AuthenticationClient } from 'auth0'; +const { Agent } = require('undici'); const auth = new AuthenticationClient({ - domain: 'mtls.{YOUR_TENANT_AND REGION}.auth0.com', + domain: '{YOUR_TENANT_AND REGION}.auth0.com', clientId: '{YOUR_CLIENT_ID}', - agent: new https.Agent({ ... }), + agent: new Agent({ + connect: { cert: 'your_cert', key: 'your_key' }, + }), + useMTLS: true, }); const { data: tokens } = await auth.oauth.clientCredentialsGrant({ audience: 'you-api', }); - ``` ## Management Client diff --git a/src/auth/base-auth-api.ts b/src/auth/base-auth-api.ts index 3f7c6f6e6..eca70332d 100644 --- a/src/auth/base-auth-api.ts +++ b/src/auth/base-auth-api.ts @@ -22,6 +22,7 @@ export interface AuthenticationClientOptions extends ClientOptions { clientAssertionSigningAlg?: string; idTokenSigningAlg?: string; // default 'RS256' clockTolerance?: number; // default 60s, + useMTLS?: boolean; } interface AuthApiErrorResponse { @@ -92,7 +93,7 @@ export class BaseAuthAPI extends BaseAPI { clientSecret?: string; clientAssertionSigningKey?: string; clientAssertionSigningAlg?: string; - agent?: unknown; + useMTLS?: boolean; constructor(options: AuthenticationClientOptions) { super({ @@ -108,7 +109,7 @@ export class BaseAuthAPI extends BaseAPI { this.clientSecret = options.clientSecret; this.clientAssertionSigningKey = options.clientAssertionSigningKey; this.clientAssertionSigningAlg = options.clientAssertionSigningAlg; - this.agent = options.agent; + this.useMTLS = options.useMTLS; } /** @@ -124,7 +125,7 @@ export class BaseAuthAPI extends BaseAPI { clientSecret: this.clientSecret, clientAssertionSigningKey: this.clientAssertionSigningKey, clientAssertionSigningAlg: this.clientAssertionSigningAlg, - agent: this.agent, + useMTLS: this.useMTLS, }); } } diff --git a/src/auth/client-authentication.ts b/src/auth/client-authentication.ts index d15d99d96..9d28f3439 100644 --- a/src/auth/client-authentication.ts +++ b/src/auth/client-authentication.ts @@ -17,7 +17,7 @@ interface AddClientAuthenticationOptions { clientAssertionSigningKey?: string; clientAssertionSigningAlg?: string; clientSecret?: string; - agent?: unknown; + useMTLS?: boolean; } /** @@ -35,7 +35,7 @@ export const addClientAuthentication = async ({ clientAssertionSigningKey, clientAssertionSigningAlg, clientSecret, - agent, + useMTLS, }: AddClientAuthenticationOptions): Promise> => { const cid = payload.client_id || clientId; if (clientAssertionSigningKey && !payload.client_assertion) { @@ -58,7 +58,7 @@ export const addClientAuthentication = async ({ if ( (!payload.client_secret || payload.client_secret.trim().length === 0) && (!payload.client_assertion || payload.client_assertion.trim().length === 0) && - !isMTLSRequest(agent) + !useMTLS ) { throw new Error( 'The client_secret or client_assertion field is required, or it should be mTLS request.' @@ -66,10 +66,3 @@ export const addClientAuthentication = async ({ } return payload; }; - -/** - * Checks if the request has agent property provided - */ -const isMTLSRequest = (agent: unknown): boolean => { - return typeof agent === 'undefined' ? false : true; -}; diff --git a/src/auth/oauth.ts b/src/auth/oauth.ts index e6e1eb7b0..caaa583bf 100644 --- a/src/auth/oauth.ts +++ b/src/auth/oauth.ts @@ -6,6 +6,7 @@ import { } from '../lib/runtime.js'; import { BaseAuthAPI, AuthenticationClientOptions, grant } from './base-auth-api.js'; import { IDTokenValidateOptions, IDTokenValidator } from './id-token-validator.js'; +import { mtlsPrefix } from '../utils.js'; export interface TokenSet { /** @@ -271,7 +272,10 @@ export interface TokenExchangeGrantRequest { export class OAuth extends BaseAuthAPI { private idTokenValidator: IDTokenValidator; constructor(options: AuthenticationClientOptions) { - super(options); + super({ + ...options, + domain: options.useMTLS ? `${mtlsPrefix}.` + options.domain : options.domain, + }); this.idTokenValidator = new IDTokenValidator(options); } diff --git a/src/lib/runtime.ts b/src/lib/runtime.ts index bfcf5ccbe..fd519d81e 100644 --- a/src/lib/runtime.ts +++ b/src/lib/runtime.ts @@ -73,7 +73,7 @@ export class BaseAPI { method: context.method, headers, body: context.body, - agent: this.configuration.agent, + dispatcher: this.configuration.agent, }; const overriddenInit: RequestInit = { diff --git a/src/management/management-client-options.ts b/src/management/management-client-options.ts index 933062afb..2ef993a00 100644 --- a/src/management/management-client-options.ts +++ b/src/management/management-client-options.ts @@ -12,12 +12,14 @@ export interface ManagementClientOptionsWithToken extends ManagementClientOption export interface ManagementClientOptionsWithClientSecret extends ManagementClientOptions { clientId: string; clientSecret: string; + useMTLS?: boolean; } export interface ManagementClientOptionsWithClientAssertion extends ManagementClientOptions { clientId: string; clientAssertionSigningKey: string; clientAssertionSigningAlg?: string; + useMTLS?: boolean; } export type ManagementClientOptionsWithClientCredentials = diff --git a/src/utils.ts b/src/utils.ts index 906f20ead..6e668746c 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -10,3 +10,8 @@ export const generateClientInfo = () => ({ node: process.version.replace('v', ''), }, }); + +/** + * @private + */ +export const mtlsPrefix = 'mtls'; diff --git a/test/auth/client-authentication.test.ts b/test/auth/client-authentication.test.ts index 15538f747..807bf06b5 100644 --- a/test/auth/client-authentication.test.ts +++ b/test/auth/client-authentication.test.ts @@ -239,11 +239,12 @@ describe('mTLS-authentication', () => { it('should do client credentials grant without client secret or assertion & only with agent', async () => { const auth0 = new AuthenticationClient({ - domain: 'mtls.tenant.auth0.com', + domain: 'tenant.auth0.com', clientId, agent: { options: { key: 'my-key', cert: 'my-cert' }, }, + useMTLS: true, }); await auth0.oauth.clientCredentialsGrant({ audience: 'my-api', From 0d041f4bfe706566ec014ff518df7ed49206311e Mon Sep 17 00:00:00 2001 From: gyaneshgouraw-okta Date: Mon, 6 May 2024 18:21:58 +0530 Subject: [PATCH 6/7] Added new dependecy undici for typechecking & updated mtls related template string --- package-lock.json | 18 +++++++++++++++++- package.json | 3 ++- src/auth/oauth.ts | 2 +- src/lib/models.ts | 4 ++-- test/auth/client-authentication.test.ts | 8 ++++---- 5 files changed, 26 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index f785a2eb3..f5953a219 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38,7 +38,8 @@ "ts-jest": "^29.1.0", "ts-node": "^10.9.1", "typedoc": "^0.24.6", - "typescript": "4.9.5" + "typescript": "4.9.5", + "undici": "^6.15.0" }, "engines": { "node": ">=18" @@ -7247,6 +7248,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/undici": { + "version": "6.15.0", + "resolved": "https://a0us.jfrog.io/artifactory/api/npm/npm/undici/-/undici-6.15.0.tgz", + "integrity": "sha512-VviMt2tlMg1BvQ0FKXxrz1eJuyrcISrL2sPfBf7ZskX/FCEc/7LeThQaoygsMJpNqrATWQIsRVx+1Dpe4jaYuQ==", + "dev": true, + "engines": { + "node": ">=18.17" + } + }, "node_modules/update-browserslist-db": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", @@ -12875,6 +12885,12 @@ "which-boxed-primitive": "^1.0.2" } }, + "undici": { + "version": "6.15.0", + "resolved": "https://a0us.jfrog.io/artifactory/api/npm/npm/undici/-/undici-6.15.0.tgz", + "integrity": "sha512-VviMt2tlMg1BvQ0FKXxrz1eJuyrcISrL2sPfBf7ZskX/FCEc/7LeThQaoygsMJpNqrATWQIsRVx+1Dpe4jaYuQ==", + "dev": true + }, "update-browserslist-db": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", diff --git a/package.json b/package.json index b0b61aff9..74d583312 100644 --- a/package.json +++ b/package.json @@ -79,6 +79,7 @@ "ts-jest": "^29.1.0", "ts-node": "^10.9.1", "typedoc": "^0.24.6", - "typescript": "4.9.5" + "typescript": "4.9.5", + "undici": "^6.15.0" } } diff --git a/src/auth/oauth.ts b/src/auth/oauth.ts index caaa583bf..2902b1051 100644 --- a/src/auth/oauth.ts +++ b/src/auth/oauth.ts @@ -274,7 +274,7 @@ export class OAuth extends BaseAuthAPI { constructor(options: AuthenticationClientOptions) { super({ ...options, - domain: options.useMTLS ? `${mtlsPrefix}.` + options.domain : options.domain, + domain: options.useMTLS ? `${mtlsPrefix}.${options.domain}` : options.domain, }); this.idTokenValidator = new IDTokenValidator(options); } diff --git a/src/lib/models.ts b/src/lib/models.ts index 2ffbb142c..9c72c0539 100644 --- a/src/lib/models.ts +++ b/src/lib/models.ts @@ -1,4 +1,5 @@ import { RetryConfiguration } from './retry.js'; +import { Dispatcher } from 'undici'; /** * @private @@ -25,8 +26,7 @@ export interface Configuration { /** * Pass your own http agent to support proxies. */ - // https://github.com/octokit/types.ts/blob/v10.0.0/src/RequestRequestOptions.ts#L13 - agent?: unknown; + agent?: Dispatcher; /** * Custom headers that will be added to every request. */ diff --git a/test/auth/client-authentication.test.ts b/test/auth/client-authentication.test.ts index 807bf06b5..9a830b86f 100644 --- a/test/auth/client-authentication.test.ts +++ b/test/auth/client-authentication.test.ts @@ -3,7 +3,7 @@ import { jest } from '@jest/globals'; import * as jose from 'jose'; import { AuthenticationClient } from '../../src/index.js'; import { TEST_PUBLIC_KEY, TEST_PRIVATE_KEY } from '../constants.js'; - +import { Agent } from 'undici'; const URL = 'https://tenant.auth0.com/'; const clientId = 'test-client-id'; const verifyOpts = { @@ -241,9 +241,9 @@ describe('mTLS-authentication', () => { const auth0 = new AuthenticationClient({ domain: 'tenant.auth0.com', clientId, - agent: { - options: { key: 'my-key', cert: 'my-cert' }, - }, + agent: new Agent({ + connect: { cert: 'my-cert', key: 'my-key' }, + }), useMTLS: true, }); await auth0.oauth.clientCredentialsGrant({ From db2b6c486cf6b8b93ec1e403048f3046ad303838 Mon Sep 17 00:00:00 2001 From: gyaneshgouraw-okta Date: Tue, 7 May 2024 10:52:42 +0530 Subject: [PATCH 7/7] fix: Updated package.lock file with npm dependecy of undici --- package-lock.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index f5953a219..091ac198e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7250,7 +7250,7 @@ }, "node_modules/undici": { "version": "6.15.0", - "resolved": "https://a0us.jfrog.io/artifactory/api/npm/npm/undici/-/undici-6.15.0.tgz", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.15.0.tgz", "integrity": "sha512-VviMt2tlMg1BvQ0FKXxrz1eJuyrcISrL2sPfBf7ZskX/FCEc/7LeThQaoygsMJpNqrATWQIsRVx+1Dpe4jaYuQ==", "dev": true, "engines": { @@ -12887,7 +12887,7 @@ }, "undici": { "version": "6.15.0", - "resolved": "https://a0us.jfrog.io/artifactory/api/npm/npm/undici/-/undici-6.15.0.tgz", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.15.0.tgz", "integrity": "sha512-VviMt2tlMg1BvQ0FKXxrz1eJuyrcISrL2sPfBf7ZskX/FCEc/7LeThQaoygsMJpNqrATWQIsRVx+1Dpe4jaYuQ==", "dev": true },