diff --git a/.fern/replay.lock b/.fern/replay.lock index 44510b5f38..4ec0cc681c 100644 --- a/.fern/replay.lock +++ b/.fern/replay.lock @@ -6,5 +6,201 @@ generations: timestamp: 2026-05-12T05:03:34.426Z cli_version: unknown generator_versions: {} -current_generation: a7ff7c0f098c10c81b49de0e3024d0e645a16359 -patches: [] + - commit_sha: 2de4c6369e279ba461d20dfe1bb8503255fab5a6 + tree_hash: 03594866fe0b15448f7bb9cf89fa722f19a72bbf + timestamp: 2026-07-15T13:05:44.799Z + cli_version: unknown + generator_versions: + fernapi/fern-typescript-sdk: 3.72.5 +current_generation: 2de4c6369e279ba461d20dfe1bb8503255fab5a6 +patches: + - id: patch-066ff9e0 + content_hash: sha256:d30e29e02d93b301c7d7f14434c3339c9008aa98a07e6d5a4d6f3e2b06e9e51b + original_commit: 066ff9e02c45f4abf46791a3f070c762f7ecd924 + original_message: "docs: add v6 migration guide for breaking changes in v6.0.0 (#1368)" + original_author: Ankita Tripathi <51994119+ankita10119@users.noreply.github.com> + base_generation: 2de4c6369e279ba461d20dfe1bb8503255fab5a6 + files: + - v6_MIGRATION_GUIDE.md + patch_content: | + diff --git a/v6_MIGRATION_GUIDE.md b/v6_MIGRATION_GUIDE.md + new file mode 100644 + index 000000000..30d5944c4 + --- /dev/null + +++ b/v6_MIGRATION_GUIDE.md + @@ -0,0 +1,86 @@ + +# V6 Migration Guide + + + +A guide to migrating the Auth0 Node.js SDK from `5.x` to `6.x`. + + + +- [Overall changes](#overall-changes) + +- [Breaking changes](#breaking-changes) + + - [ConnectionAttributeIdentifier replaced with identifier-specific types](#connectionattributeidentifier-replaced-with-identifier-specific-types) + + - [PhoneProviderProtectionBackoffStrategyEnum value change](#phoneproviderprotectionbackoffstrategyenum-value-change) + + + +## Overall changes + + + +V6 is a focused release that addresses type correctness for database connection attribute identifiers and aligns the phone provider backoff strategy enum with the updated API. There are no changes to the Authentication API — any code written for the Authentication API in `5.x` will continue to work in `6.x`. + + + +## Breaking changes + + + +### ConnectionAttributeIdentifier replaced with identifier-specific types + + + +In v5, all three attribute identifiers (email, phone number, and username) shared a single `ConnectionAttributeIdentifier` type for their `identifier` field. This was incorrect — each identifier type supports different values for `default_method`. + + + +In v6, `ConnectionAttributeIdentifier` has been removed and replaced with three separate types: + + + +| Attribute | Old type | New type | `default_method` values | + +| -------------- | ------------------------------- | ----------------------------- | ----------------------------- | + +| `email` | `ConnectionAttributeIdentifier` | `EmailAttributeIdentifier` | `"password"` \| `"email_otp"` | + +| `phone_number` | `ConnectionAttributeIdentifier` | `PhoneAttributeIdentifier` | `"password"` \| `"phone_otp"` | + +| `username` | `ConnectionAttributeIdentifier` | `UsernameAttributeIdentifier` | _(no `default_method`)_ | + + + +**Before (v5):** + + + +```ts + +import { Management } from "auth0"; + + + +const identifier: Management.ConnectionAttributeIdentifier = { + + active: true, + + default_method: "email_otp", + +}; + +``` + + + +**After (v6):** + + + +```ts + +import { Management } from "auth0"; + + + +// For email attribute + +const emailIdentifier: Management.EmailAttributeIdentifier = { + + active: true, + + default_method: "email_otp", + +}; + + + +// For phone_number attribute + +const phoneIdentifier: Management.PhoneAttributeIdentifier = { + + active: true, + + default_method: "phone_otp", + +}; + + + +// For username attribute (no default_method) + +const usernameIdentifier: Management.UsernameAttributeIdentifier = { + + active: true, + +}; + +``` + + + +If you were using `ConnectionAttributeIdentifier` as a type annotation in your own code, update it to the appropriate identifier-specific type based on which attribute it applies to. + + + +--- + + + +### PhoneProviderProtectionBackoffStrategyEnum value change + + + +The `PhoneProviderProtectionBackoffStrategyEnum` enum has been updated to reflect a change in the Auth0 API. The `None` variant has been renamed to `Default`, and its string value has changed from `"none"` to `"default"`. + + + +**Before (v5):** + + + +```ts + +import { Management } from "auth0"; + + + +const strategy = Management.PhoneProviderProtectionBackoffStrategyEnum.None; // "none" + +``` + + + +**After (v6):** + + + +```ts + +import { Management } from "auth0"; + + + +const strategy = Management.PhoneProviderProtectionBackoffStrategyEnum.Default; // "default" + +``` + + + +If you were passing this value directly as a string `"none"`, update it to `"default"` to match the updated API. + theirs_snapshot: + v6_MIGRATION_GUIDE.md: | + # V6 Migration Guide + + A guide to migrating the Auth0 Node.js SDK from `5.x` to `6.x`. + + - [Overall changes](#overall-changes) + - [Breaking changes](#breaking-changes) + - [ConnectionAttributeIdentifier replaced with identifier-specific types](#connectionattributeidentifier-replaced-with-identifier-specific-types) + - [PhoneProviderProtectionBackoffStrategyEnum value change](#phoneproviderprotectionbackoffstrategyenum-value-change) + + ## Overall changes + + V6 is a focused release that addresses type correctness for database connection attribute identifiers and aligns the phone provider backoff strategy enum with the updated API. There are no changes to the Authentication API — any code written for the Authentication API in `5.x` will continue to work in `6.x`. + + ## Breaking changes + + ### ConnectionAttributeIdentifier replaced with identifier-specific types + + In v5, all three attribute identifiers (email, phone number, and username) shared a single `ConnectionAttributeIdentifier` type for their `identifier` field. This was incorrect — each identifier type supports different values for `default_method`. + + In v6, `ConnectionAttributeIdentifier` has been removed and replaced with three separate types: + + | Attribute | Old type | New type | `default_method` values | + | -------------- | ------------------------------- | ----------------------------- | ----------------------------- | + | `email` | `ConnectionAttributeIdentifier` | `EmailAttributeIdentifier` | `"password"` \| `"email_otp"` | + | `phone_number` | `ConnectionAttributeIdentifier` | `PhoneAttributeIdentifier` | `"password"` \| `"phone_otp"` | + | `username` | `ConnectionAttributeIdentifier` | `UsernameAttributeIdentifier` | _(no `default_method`)_ | + + **Before (v5):** + + ```ts + import { Management } from "auth0"; + + const identifier: Management.ConnectionAttributeIdentifier = { + active: true, + default_method: "email_otp", + }; + ``` + + **After (v6):** + + ```ts + import { Management } from "auth0"; + + // For email attribute + const emailIdentifier: Management.EmailAttributeIdentifier = { + active: true, + default_method: "email_otp", + }; + + // For phone_number attribute + const phoneIdentifier: Management.PhoneAttributeIdentifier = { + active: true, + default_method: "phone_otp", + }; + + // For username attribute (no default_method) + const usernameIdentifier: Management.UsernameAttributeIdentifier = { + active: true, + }; + ``` + + If you were using `ConnectionAttributeIdentifier` as a type annotation in your own code, update it to the appropriate identifier-specific type based on which attribute it applies to. + + --- + + ### PhoneProviderProtectionBackoffStrategyEnum value change + + The `PhoneProviderProtectionBackoffStrategyEnum` enum has been updated to reflect a change in the Auth0 API. The `None` variant has been renamed to `Default`, and its string value has changed from `"none"` to `"default"`. + + **Before (v5):** + + ```ts + import { Management } from "auth0"; + + const strategy = Management.PhoneProviderProtectionBackoffStrategyEnum.None; // "none" + ``` + + **After (v6):** + + ```ts + import { Management } from "auth0"; + + const strategy = Management.PhoneProviderProtectionBackoffStrategyEnum.Default; // "default" + ``` + + If you were passing this value directly as a string `"none"`, update it to `"default"` to match the updated API. + user_owned: true diff --git a/reference.md b/reference.md index d21d35cc71..e41101d657 100644 --- a/reference.md +++ b/reference.md @@ -21237,7 +21237,7 @@ await client.guardian.factors.sms.setProvider({ -
client.guardian.factors.sms.getTemplates() -> Management.GetGuardianFactorSmsTemplatesResponseContent +
client.guardian.factors.sms.getTemplates() -> Management.GetGuardianFactorSmsTemplatesResponseContent | undefined
@@ -22016,7 +22016,7 @@ await client.jobs.verificationEmail.create({ ## Jobs Errors -
client.jobs.errors.get(id) -> Management.ErrorsGetResponse +
client.jobs.errors.get(id) -> Management.ErrorsGetResponse | undefined
@@ -28677,127 +28677,6 @@ await client.users.enrollments.get("id");
-## Users FederatedConnectionsTokensets - -
client.users.federatedConnectionsTokensets.list(id) -> Management.FederatedConnectionTokenSet[] -
-
- -#### 📝 Description - -
-
- -
-
- -List active federated connections tokensets for a provided user - -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```typescript -await client.users.federatedConnectionsTokensets.list("id"); -``` - -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**id:** `string` — User identifier - -
-
- -
-
- -**requestOptions:** `FederatedConnectionsTokensetsClient.RequestOptions` - -
-
-
-
- -
-
-
- -
client.users.federatedConnectionsTokensets.delete(id, tokenset_id) -> void -
-
- -#### 🔌 Usage - -
-
- -
-
- -```typescript -await client.users.federatedConnectionsTokensets.delete("id", "tokenset_id"); -``` - -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**id:** `string` — Id of the user that owns the tokenset - -
-
- -
-
- -**tokenset_id:** `string` — The tokenset id - -
-
- -
-
- -**requestOptions:** `FederatedConnectionsTokensetsClient.RequestOptions` - -
-
-
-
- -
-
-
- ## Users Groups
client.users.groups.get(id, { ...params }) -> core.Page<Management.UserGroupsResponseSchema, Management.GetUserGroupsPaginatedResponseContent> diff --git a/src/management/api/errors/BadRequestError.ts b/src/management/api/errors/BadRequestError.ts index 12a239f5ff..66f8f45f46 100644 --- a/src/management/api/errors/BadRequestError.ts +++ b/src/management/api/errors/BadRequestError.ts @@ -16,6 +16,6 @@ export class BadRequestError extends errors.ManagementError { Error.captureStackTrace(this, this.constructor); } - this.name = this.constructor.name; + this.name = "BadRequestError"; } } diff --git a/src/management/api/errors/ConflictError.ts b/src/management/api/errors/ConflictError.ts index e566ca22a9..6d5617a2fc 100644 --- a/src/management/api/errors/ConflictError.ts +++ b/src/management/api/errors/ConflictError.ts @@ -16,6 +16,6 @@ export class ConflictError extends errors.ManagementError { Error.captureStackTrace(this, this.constructor); } - this.name = this.constructor.name; + this.name = "ConflictError"; } } diff --git a/src/management/api/errors/ContentTooLargeError.ts b/src/management/api/errors/ContentTooLargeError.ts index aa48a09ef3..3a2f37e25a 100644 --- a/src/management/api/errors/ContentTooLargeError.ts +++ b/src/management/api/errors/ContentTooLargeError.ts @@ -16,6 +16,6 @@ export class ContentTooLargeError extends errors.ManagementError { Error.captureStackTrace(this, this.constructor); } - this.name = this.constructor.name; + this.name = "ContentTooLargeError"; } } diff --git a/src/management/api/errors/ForbiddenError.ts b/src/management/api/errors/ForbiddenError.ts index dffb752247..0fd79fd282 100644 --- a/src/management/api/errors/ForbiddenError.ts +++ b/src/management/api/errors/ForbiddenError.ts @@ -16,6 +16,6 @@ export class ForbiddenError extends errors.ManagementError { Error.captureStackTrace(this, this.constructor); } - this.name = this.constructor.name; + this.name = "ForbiddenError"; } } diff --git a/src/management/api/errors/GoneError.ts b/src/management/api/errors/GoneError.ts index 5a77648954..01e32e8a6d 100644 --- a/src/management/api/errors/GoneError.ts +++ b/src/management/api/errors/GoneError.ts @@ -16,6 +16,6 @@ export class GoneError extends errors.ManagementError { Error.captureStackTrace(this, this.constructor); } - this.name = this.constructor.name; + this.name = "GoneError"; } } diff --git a/src/management/api/errors/InternalServerError.ts b/src/management/api/errors/InternalServerError.ts index 6e0f33e6e8..a5d781f6e3 100644 --- a/src/management/api/errors/InternalServerError.ts +++ b/src/management/api/errors/InternalServerError.ts @@ -16,6 +16,6 @@ export class InternalServerError extends errors.ManagementError { Error.captureStackTrace(this, this.constructor); } - this.name = this.constructor.name; + this.name = "InternalServerError"; } } diff --git a/src/management/api/errors/NotFoundError.ts b/src/management/api/errors/NotFoundError.ts index d4928e087c..1e8680f5b8 100644 --- a/src/management/api/errors/NotFoundError.ts +++ b/src/management/api/errors/NotFoundError.ts @@ -16,6 +16,6 @@ export class NotFoundError extends errors.ManagementError { Error.captureStackTrace(this, this.constructor); } - this.name = this.constructor.name; + this.name = "NotFoundError"; } } diff --git a/src/management/api/errors/PaymentRequiredError.ts b/src/management/api/errors/PaymentRequiredError.ts index 4d3a992409..50bbb6298d 100644 --- a/src/management/api/errors/PaymentRequiredError.ts +++ b/src/management/api/errors/PaymentRequiredError.ts @@ -16,6 +16,6 @@ export class PaymentRequiredError extends errors.ManagementError { Error.captureStackTrace(this, this.constructor); } - this.name = this.constructor.name; + this.name = "PaymentRequiredError"; } } diff --git a/src/management/api/errors/PreconditionFailedError.ts b/src/management/api/errors/PreconditionFailedError.ts index da589c8341..7b09809bca 100644 --- a/src/management/api/errors/PreconditionFailedError.ts +++ b/src/management/api/errors/PreconditionFailedError.ts @@ -16,6 +16,6 @@ export class PreconditionFailedError extends errors.ManagementError { Error.captureStackTrace(this, this.constructor); } - this.name = this.constructor.name; + this.name = "PreconditionFailedError"; } } diff --git a/src/management/api/errors/ServiceUnavailableError.ts b/src/management/api/errors/ServiceUnavailableError.ts index 3a6e66a517..51882900a8 100644 --- a/src/management/api/errors/ServiceUnavailableError.ts +++ b/src/management/api/errors/ServiceUnavailableError.ts @@ -16,6 +16,6 @@ export class ServiceUnavailableError extends errors.ManagementError { Error.captureStackTrace(this, this.constructor); } - this.name = this.constructor.name; + this.name = "ServiceUnavailableError"; } } diff --git a/src/management/api/errors/TooManyRequestsError.ts b/src/management/api/errors/TooManyRequestsError.ts index a36fe5f5c0..42e05abd5f 100644 --- a/src/management/api/errors/TooManyRequestsError.ts +++ b/src/management/api/errors/TooManyRequestsError.ts @@ -16,6 +16,6 @@ export class TooManyRequestsError extends errors.ManagementError { Error.captureStackTrace(this, this.constructor); } - this.name = this.constructor.name; + this.name = "TooManyRequestsError"; } } diff --git a/src/management/api/errors/UnauthorizedError.ts b/src/management/api/errors/UnauthorizedError.ts index db98ff6883..d164b6a392 100644 --- a/src/management/api/errors/UnauthorizedError.ts +++ b/src/management/api/errors/UnauthorizedError.ts @@ -16,6 +16,6 @@ export class UnauthorizedError extends errors.ManagementError { Error.captureStackTrace(this, this.constructor); } - this.name = this.constructor.name; + this.name = "UnauthorizedError"; } } diff --git a/src/management/api/resources/actions/client/Client.ts b/src/management/api/resources/actions/client/Client.ts index c75fb31590..12fb561227 100644 --- a/src/management/api/resources/actions/client/Client.ts +++ b/src/management/api/resources/actions/client/Client.ts @@ -151,7 +151,9 @@ export class ActionsClient { return new core.Page({ response: dataWithRawResponse.data, rawResponse: dataWithRawResponse.rawResponse, - hasNextPage: (response) => (response?.actions ?? []).length >= Math.floor(request?.per_page ?? 50), + hasNextPage: (response) => + (response?.actions ?? []).length > 0 && + (request?.per_page == null || (response?.actions ?? []).length >= request?.per_page), getItems: (response) => response?.actions ?? [], loadPage: (_response) => { _offset += 1; diff --git a/src/management/api/resources/actions/resources/modules/client/Client.ts b/src/management/api/resources/actions/resources/modules/client/Client.ts index 765b9eb429..9b1ce11f25 100644 --- a/src/management/api/resources/actions/resources/modules/client/Client.ts +++ b/src/management/api/resources/actions/resources/modules/client/Client.ts @@ -125,7 +125,9 @@ export class ModulesClient { return new core.Page({ response: dataWithRawResponse.data, rawResponse: dataWithRawResponse.rawResponse, - hasNextPage: (response) => (response?.modules ?? []).length >= Math.floor(request?.per_page ?? 50), + hasNextPage: (response) => + (response?.modules ?? []).length > 0 && + (request?.per_page == null || (response?.modules ?? []).length >= request?.per_page), getItems: (response) => response?.modules ?? [], loadPage: (_response) => { _offset += 1; @@ -572,7 +574,9 @@ export class ModulesClient { return new core.Page({ response: dataWithRawResponse.data, rawResponse: dataWithRawResponse.rawResponse, - hasNextPage: (response) => (response?.actions ?? []).length >= Math.floor(request?.per_page ?? 50), + hasNextPage: (response) => + (response?.actions ?? []).length > 0 && + (request?.per_page == null || (response?.actions ?? []).length >= request?.per_page), getItems: (response) => response?.actions ?? [], loadPage: (_response) => { _offset += 1; diff --git a/src/management/api/resources/actions/resources/modules/resources/versions/client/Client.ts b/src/management/api/resources/actions/resources/modules/resources/versions/client/Client.ts index 25e1cbd9df..135bd5e67a 100644 --- a/src/management/api/resources/actions/resources/modules/resources/versions/client/Client.ts +++ b/src/management/api/resources/actions/resources/modules/resources/versions/client/Client.ts @@ -132,7 +132,9 @@ export class VersionsClient { return new core.Page({ response: dataWithRawResponse.data, rawResponse: dataWithRawResponse.rawResponse, - hasNextPage: (response) => (response?.versions ?? []).length >= Math.floor(request?.per_page ?? 50), + hasNextPage: (response) => + (response?.versions ?? []).length > 0 && + (request?.per_page == null || (response?.versions ?? []).length >= request?.per_page), getItems: (response) => response?.versions ?? [], loadPage: (_response) => { _offset += 1; diff --git a/src/management/api/resources/actions/resources/triggers/resources/bindings/client/Client.ts b/src/management/api/resources/actions/resources/triggers/resources/bindings/client/Client.ts index 4f694f5d3d..2a26fe190c 100644 --- a/src/management/api/resources/actions/resources/triggers/resources/bindings/client/Client.ts +++ b/src/management/api/resources/actions/resources/triggers/resources/bindings/client/Client.ts @@ -129,7 +129,9 @@ export class BindingsClient { return new core.Page({ response: dataWithRawResponse.data, rawResponse: dataWithRawResponse.rawResponse, - hasNextPage: (response) => (response?.bindings ?? []).length >= Math.floor(request?.per_page ?? 50), + hasNextPage: (response) => + (response?.bindings ?? []).length > 0 && + (request?.per_page == null || (response?.bindings ?? []).length >= request?.per_page), getItems: (response) => response?.bindings ?? [], loadPage: (_response) => { _offset += 1; diff --git a/src/management/api/resources/actions/resources/versions/client/Client.ts b/src/management/api/resources/actions/resources/versions/client/Client.ts index 8241ad94a4..8f7b71497a 100644 --- a/src/management/api/resources/actions/resources/versions/client/Client.ts +++ b/src/management/api/resources/actions/resources/versions/client/Client.ts @@ -126,7 +126,9 @@ export class VersionsClient { return new core.Page({ response: dataWithRawResponse.data, rawResponse: dataWithRawResponse.rawResponse, - hasNextPage: (response) => (response?.versions ?? []).length >= Math.floor(request?.per_page ?? 50), + hasNextPage: (response) => + (response?.versions ?? []).length > 0 && + (request?.per_page == null || (response?.versions ?? []).length >= request?.per_page), getItems: (response) => response?.versions ?? [], loadPage: (_response) => { _offset += 1; diff --git a/src/management/api/resources/clients/client/Client.ts b/src/management/api/resources/clients/client/Client.ts index a8e3578679..b19b128115 100644 --- a/src/management/api/resources/clients/client/Client.ts +++ b/src/management/api/resources/clients/client/Client.ts @@ -182,7 +182,9 @@ export class ClientsClient { return new core.Page({ response: dataWithRawResponse.data, rawResponse: dataWithRawResponse.rawResponse, - hasNextPage: (response) => (response?.clients ?? []).length >= Math.floor(request?.per_page ?? 50), + hasNextPage: (response) => + (response?.clients ?? []).length > 0 && + (request?.per_page == null || (response?.clients ?? []).length >= request?.per_page), getItems: (response) => response?.clients ?? [], loadPage: (_response) => { _offset += 1; diff --git a/src/management/api/resources/deviceCredentials/client/Client.ts b/src/management/api/resources/deviceCredentials/client/Client.ts index 4bf55e07f2..0659d1f674 100644 --- a/src/management/api/resources/deviceCredentials/client/Client.ts +++ b/src/management/api/resources/deviceCredentials/client/Client.ts @@ -144,7 +144,8 @@ export class DeviceCredentialsClient { response: dataWithRawResponse.data, rawResponse: dataWithRawResponse.rawResponse, hasNextPage: (response) => - (response?.device_credentials ?? []).length >= Math.floor(request?.per_page ?? 50), + (response?.device_credentials ?? []).length > 0 && + (request?.per_page == null || (response?.device_credentials ?? []).length >= request?.per_page), getItems: (response) => response?.device_credentials ?? [], loadPage: (_response) => { _offset += 1; diff --git a/src/management/api/resources/flows/client/Client.ts b/src/management/api/resources/flows/client/Client.ts index c7fc1d57d9..fed08f164e 100644 --- a/src/management/api/resources/flows/client/Client.ts +++ b/src/management/api/resources/flows/client/Client.ts @@ -145,7 +145,9 @@ export class FlowsClient { return new core.Page({ response: dataWithRawResponse.data, rawResponse: dataWithRawResponse.rawResponse, - hasNextPage: (response) => (response?.flows ?? []).length >= Math.floor(request?.per_page ?? 50), + hasNextPage: (response) => + (response?.flows ?? []).length > 0 && + (request?.per_page == null || (response?.flows ?? []).length >= request?.per_page), getItems: (response) => response?.flows ?? [], loadPage: (_response) => { _offset += 1; diff --git a/src/management/api/resources/flows/resources/vault/resources/connections/client/Client.ts b/src/management/api/resources/flows/resources/vault/resources/connections/client/Client.ts index bb5a4f54ff..f25b39ead0 100644 --- a/src/management/api/resources/flows/resources/vault/resources/connections/client/Client.ts +++ b/src/management/api/resources/flows/resources/vault/resources/connections/client/Client.ts @@ -135,7 +135,9 @@ export class ConnectionsClient { >({ response: dataWithRawResponse.data, rawResponse: dataWithRawResponse.rawResponse, - hasNextPage: (response) => (response?.connections ?? []).length >= Math.floor(request?.per_page ?? 50), + hasNextPage: (response) => + (response?.connections ?? []).length > 0 && + (request?.per_page == null || (response?.connections ?? []).length >= request?.per_page), getItems: (response) => response?.connections ?? [], loadPage: (_response) => { _offset += 1; diff --git a/src/management/api/resources/forms/client/Client.ts b/src/management/api/resources/forms/client/Client.ts index 859886b27e..301960ee10 100644 --- a/src/management/api/resources/forms/client/Client.ts +++ b/src/management/api/resources/forms/client/Client.ts @@ -125,7 +125,9 @@ export class FormsClient { return new core.Page({ response: dataWithRawResponse.data, rawResponse: dataWithRawResponse.rawResponse, - hasNextPage: (response) => (response?.forms ?? []).length >= Math.floor(request?.per_page ?? 50), + hasNextPage: (response) => + (response?.forms ?? []).length > 0 && + (request?.per_page == null || (response?.forms ?? []).length >= request?.per_page), getItems: (response) => response?.forms ?? [], loadPage: (_response) => { _offset += 1; diff --git a/src/management/api/resources/guardian/resources/factors/resources/sms/client/Client.ts b/src/management/api/resources/guardian/resources/factors/resources/sms/client/Client.ts index ef0c3820aa..2c0ad7292e 100644 --- a/src/management/api/resources/guardian/resources/factors/resources/sms/client/Client.ts +++ b/src/management/api/resources/guardian/resources/factors/resources/sms/client/Client.ts @@ -363,13 +363,13 @@ export class SmsClient { */ public getTemplates( requestOptions?: SmsClient.RequestOptions, - ): core.HttpResponsePromise { + ): core.HttpResponsePromise { return core.HttpResponsePromise.fromPromise(this.__getTemplates(requestOptions)); } private async __getTemplates( requestOptions?: SmsClient.RequestOptions, - ): Promise> { + ): Promise> { const _authRequest: core.AuthRequest = await this._options.authProvider.getAuthRequest(); let _headers: core.Fetcher.Args["headers"] = mergeHeaders( _authRequest.headers, @@ -394,7 +394,7 @@ export class SmsClient { }); if (_response.ok) { return { - data: _response.body as Management.GetGuardianFactorSmsTemplatesResponseContent, + data: _response.body as Management.GetGuardianFactorSmsTemplatesResponseContent | undefined, rawResponse: _response.rawResponse, }; } diff --git a/src/management/api/resources/hooks/client/Client.ts b/src/management/api/resources/hooks/client/Client.ts index 20a9d96d7d..a900ec62ac 100644 --- a/src/management/api/resources/hooks/client/Client.ts +++ b/src/management/api/resources/hooks/client/Client.ts @@ -143,7 +143,9 @@ export class HooksClient { return new core.Page({ response: dataWithRawResponse.data, rawResponse: dataWithRawResponse.rawResponse, - hasNextPage: (response) => (response?.hooks ?? []).length >= Math.floor(request?.per_page ?? 50), + hasNextPage: (response) => + (response?.hooks ?? []).length > 0 && + (request?.per_page == null || (response?.hooks ?? []).length >= request?.per_page), getItems: (response) => response?.hooks ?? [], loadPage: (_response) => { _offset += 1; diff --git a/src/management/api/resources/jobs/resources/errors/client/Client.ts b/src/management/api/resources/jobs/resources/errors/client/Client.ts index e05dbbb5bd..d43710450b 100644 --- a/src/management/api/resources/jobs/resources/errors/client/Client.ts +++ b/src/management/api/resources/jobs/resources/errors/client/Client.ts @@ -40,14 +40,14 @@ export class ErrorsClient { public get( id: string, requestOptions?: ErrorsClient.RequestOptions, - ): core.HttpResponsePromise { + ): core.HttpResponsePromise { return core.HttpResponsePromise.fromPromise(this.__get(id, requestOptions)); } private async __get( id: string, requestOptions?: ErrorsClient.RequestOptions, - ): Promise> { + ): Promise> { const _authRequest: core.AuthRequest = await this._options.authProvider.getAuthRequest(); let _headers: core.Fetcher.Args["headers"] = mergeHeaders( _authRequest.headers, @@ -71,7 +71,10 @@ export class ErrorsClient { logging: this._options.logging, }); if (_response.ok) { - return { data: _response.body as Management.jobs.ErrorsGetResponse, rawResponse: _response.rawResponse }; + return { + data: _response.body as Management.jobs.ErrorsGetResponse | undefined, + rawResponse: _response.rawResponse, + }; } if (_response.error.reason === "status-code") { diff --git a/src/management/api/resources/keys/resources/encryption/client/Client.ts b/src/management/api/resources/keys/resources/encryption/client/Client.ts index ba8632e332..e51debbe95 100644 --- a/src/management/api/resources/keys/resources/encryption/client/Client.ts +++ b/src/management/api/resources/keys/resources/encryption/client/Client.ts @@ -121,7 +121,9 @@ export class EncryptionClient { return new core.Page({ response: dataWithRawResponse.data, rawResponse: dataWithRawResponse.rawResponse, - hasNextPage: (response) => (response?.keys ?? []).length >= Math.floor(request?.per_page ?? 50), + hasNextPage: (response) => + (response?.keys ?? []).length > 0 && + (request?.per_page == null || (response?.keys ?? []).length >= request?.per_page), getItems: (response) => response?.keys ?? [], loadPage: (_response) => { _offset += 1; diff --git a/src/management/api/resources/logs/client/Client.ts b/src/management/api/resources/logs/client/Client.ts index 9bb564623f..a24f45dec5 100644 --- a/src/management/api/resources/logs/client/Client.ts +++ b/src/management/api/resources/logs/client/Client.ts @@ -162,7 +162,9 @@ export class LogsClient { return new core.Page({ response: dataWithRawResponse.data, rawResponse: dataWithRawResponse.rawResponse, - hasNextPage: (response) => (response?.logs ?? []).length >= Math.floor(request?.per_page ?? 50), + hasNextPage: (response) => + (response?.logs ?? []).length > 0 && + (request?.per_page == null || (response?.logs ?? []).length >= request?.per_page), getItems: (response) => response?.logs ?? [], loadPage: (_response) => { _offset += 1; diff --git a/src/management/api/resources/networkAcls/client/Client.ts b/src/management/api/resources/networkAcls/client/Client.ts index 2a36132ee2..7621c0e984 100644 --- a/src/management/api/resources/networkAcls/client/Client.ts +++ b/src/management/api/resources/networkAcls/client/Client.ts @@ -123,7 +123,9 @@ export class NetworkAclsClient { >({ response: dataWithRawResponse.data, rawResponse: dataWithRawResponse.rawResponse, - hasNextPage: (response) => (response?.network_acls ?? []).length >= Math.floor(request?.per_page ?? 50), + hasNextPage: (response) => + (response?.network_acls ?? []).length > 0 && + (request?.per_page == null || (response?.network_acls ?? []).length >= request?.per_page), getItems: (response) => response?.network_acls ?? [], loadPage: (_response) => { _offset += 1; diff --git a/src/management/api/resources/organizations/resources/clientGrants/client/Client.ts b/src/management/api/resources/organizations/resources/clientGrants/client/Client.ts index 1a6a3ce0df..fc3ed11883 100644 --- a/src/management/api/resources/organizations/resources/clientGrants/client/Client.ts +++ b/src/management/api/resources/organizations/resources/clientGrants/client/Client.ts @@ -147,7 +147,9 @@ export class ClientGrantsClient { >({ response: dataWithRawResponse.data, rawResponse: dataWithRawResponse.rawResponse, - hasNextPage: (response) => (response?.client_grants ?? []).length >= Math.floor(request?.per_page ?? 50), + hasNextPage: (response) => + (response?.client_grants ?? []).length > 0 && + (request?.per_page == null || (response?.client_grants ?? []).length >= request?.per_page), getItems: (response) => response?.client_grants ?? [], loadPage: (_response) => { _offset += 1; diff --git a/src/management/api/resources/organizations/resources/connections/client/Client.ts b/src/management/api/resources/organizations/resources/connections/client/Client.ts index 39e7b6a323..b612b88839 100644 --- a/src/management/api/resources/organizations/resources/connections/client/Client.ts +++ b/src/management/api/resources/organizations/resources/connections/client/Client.ts @@ -143,7 +143,9 @@ export class ConnectionsClient { >({ response: dataWithRawResponse.data, rawResponse: dataWithRawResponse.rawResponse, - hasNextPage: (response) => (response?.connections ?? []).length >= Math.floor(request?.per_page ?? 50), + hasNextPage: (response) => + (response?.connections ?? []).length > 0 && + (request?.per_page == null || (response?.connections ?? []).length >= request?.per_page), getItems: (response) => response?.connections ?? [], loadPage: (_response) => { _offset += 1; diff --git a/src/management/api/resources/organizations/resources/enabledConnections/client/Client.ts b/src/management/api/resources/organizations/resources/enabledConnections/client/Client.ts index 6e8e5b6779..490759393f 100644 --- a/src/management/api/resources/organizations/resources/enabledConnections/client/Client.ts +++ b/src/management/api/resources/organizations/resources/enabledConnections/client/Client.ts @@ -140,7 +140,8 @@ export class EnabledConnectionsClient { response: dataWithRawResponse.data, rawResponse: dataWithRawResponse.rawResponse, hasNextPage: (response) => - (response?.enabled_connections ?? []).length >= Math.floor(request?.per_page ?? 50), + (response?.enabled_connections ?? []).length > 0 && + (request?.per_page == null || (response?.enabled_connections ?? []).length >= request?.per_page), getItems: (response) => response?.enabled_connections ?? [], loadPage: (_response) => { _offset += 1; diff --git a/src/management/api/resources/organizations/resources/invitations/client/Client.ts b/src/management/api/resources/organizations/resources/invitations/client/Client.ts index 82912a7138..195805bd2a 100644 --- a/src/management/api/resources/organizations/resources/invitations/client/Client.ts +++ b/src/management/api/resources/organizations/resources/invitations/client/Client.ts @@ -152,7 +152,9 @@ export class InvitationsClient { >({ response: dataWithRawResponse.data, rawResponse: dataWithRawResponse.rawResponse, - hasNextPage: (response) => (response?.invitations ?? []).length >= Math.floor(request?.per_page ?? 50), + hasNextPage: (response) => + (response?.invitations ?? []).length > 0 && + (request?.per_page == null || (response?.invitations ?? []).length >= request?.per_page), getItems: (response) => response?.invitations ?? [], loadPage: (_response) => { _offset += 1; diff --git a/src/management/api/resources/organizations/resources/members/resources/roles/client/Client.ts b/src/management/api/resources/organizations/resources/members/resources/roles/client/Client.ts index faa54375a7..c73c739666 100644 --- a/src/management/api/resources/organizations/resources/members/resources/roles/client/Client.ts +++ b/src/management/api/resources/organizations/resources/members/resources/roles/client/Client.ts @@ -138,7 +138,9 @@ export class RolesClient { return new core.Page({ response: dataWithRawResponse.data, rawResponse: dataWithRawResponse.rawResponse, - hasNextPage: (response) => (response?.roles ?? []).length >= Math.floor(request?.per_page ?? 50), + hasNextPage: (response) => + (response?.roles ?? []).length > 0 && + (request?.per_page == null || (response?.roles ?? []).length >= request?.per_page), getItems: (response) => response?.roles ?? [], loadPage: (_response) => { _offset += 1; diff --git a/src/management/api/resources/prompts/resources/rendering/client/Client.ts b/src/management/api/resources/prompts/resources/rendering/client/Client.ts index a2d017f27f..756a6dabf5 100644 --- a/src/management/api/resources/prompts/resources/rendering/client/Client.ts +++ b/src/management/api/resources/prompts/resources/rendering/client/Client.ts @@ -149,7 +149,9 @@ export class RenderingClient { >({ response: dataWithRawResponse.data, rawResponse: dataWithRawResponse.rawResponse, - hasNextPage: (response) => (response?.configs ?? []).length >= Math.floor(request?.per_page ?? 50), + hasNextPage: (response) => + (response?.configs ?? []).length > 0 && + (request?.per_page == null || (response?.configs ?? []).length >= request?.per_page), getItems: (response) => response?.configs ?? [], loadPage: (_response) => { _offset += 1; diff --git a/src/management/api/resources/resourceServers/client/Client.ts b/src/management/api/resources/resourceServers/client/Client.ts index 8fb55aa8d0..ae82bb181f 100644 --- a/src/management/api/resources/resourceServers/client/Client.ts +++ b/src/management/api/resources/resourceServers/client/Client.ts @@ -131,7 +131,9 @@ export class ResourceServersClient { return new core.Page({ response: dataWithRawResponse.data, rawResponse: dataWithRawResponse.rawResponse, - hasNextPage: (response) => (response?.resource_servers ?? []).length >= Math.floor(request?.per_page ?? 50), + hasNextPage: (response) => + (response?.resource_servers ?? []).length > 0 && + (request?.per_page == null || (response?.resource_servers ?? []).length >= request?.per_page), getItems: (response) => response?.resource_servers ?? [], loadPage: (_response) => { _offset += 1; diff --git a/src/management/api/resources/roles/client/Client.ts b/src/management/api/resources/roles/client/Client.ts index 7118b0b2b0..bfb6e95d3e 100644 --- a/src/management/api/resources/roles/client/Client.ts +++ b/src/management/api/resources/roles/client/Client.ts @@ -148,7 +148,9 @@ export class RolesClient { return new core.Page({ response: dataWithRawResponse.data, rawResponse: dataWithRawResponse.rawResponse, - hasNextPage: (response) => (response?.roles ?? []).length >= Math.floor(request?.per_page ?? 50), + hasNextPage: (response) => + (response?.roles ?? []).length > 0 && + (request?.per_page == null || (response?.roles ?? []).length >= request?.per_page), getItems: (response) => response?.roles ?? [], loadPage: (_response) => { _offset += 1; diff --git a/src/management/api/resources/roles/resources/permissions/client/Client.ts b/src/management/api/resources/roles/resources/permissions/client/Client.ts index 865d2b1b20..231e5f7097 100644 --- a/src/management/api/resources/roles/resources/permissions/client/Client.ts +++ b/src/management/api/resources/roles/resources/permissions/client/Client.ts @@ -136,7 +136,9 @@ export class PermissionsClient { >({ response: dataWithRawResponse.data, rawResponse: dataWithRawResponse.rawResponse, - hasNextPage: (response) => (response?.permissions ?? []).length >= Math.floor(request?.per_page ?? 50), + hasNextPage: (response) => + (response?.permissions ?? []).length > 0 && + (request?.per_page == null || (response?.permissions ?? []).length >= request?.per_page), getItems: (response) => response?.permissions ?? [], loadPage: (_response) => { _offset += 1; diff --git a/src/management/api/resources/rules/client/Client.ts b/src/management/api/resources/rules/client/Client.ts index 5c773ba522..65170293ac 100644 --- a/src/management/api/resources/rules/client/Client.ts +++ b/src/management/api/resources/rules/client/Client.ts @@ -137,7 +137,9 @@ export class RulesClient { return new core.Page({ response: dataWithRawResponse.data, rawResponse: dataWithRawResponse.rawResponse, - hasNextPage: (response) => (response?.rules ?? []).length >= Math.floor(request?.per_page ?? 50), + hasNextPage: (response) => + (response?.rules ?? []).length > 0 && + (request?.per_page == null || (response?.rules ?? []).length >= request?.per_page), getItems: (response) => response?.rules ?? [], loadPage: (_response) => { _offset += 1; diff --git a/src/management/api/resources/selfServiceProfiles/client/Client.ts b/src/management/api/resources/selfServiceProfiles/client/Client.ts index b53cbe51e7..8a106681e2 100644 --- a/src/management/api/resources/selfServiceProfiles/client/Client.ts +++ b/src/management/api/resources/selfServiceProfiles/client/Client.ts @@ -140,7 +140,8 @@ export class SelfServiceProfilesClient { response: dataWithRawResponse.data, rawResponse: dataWithRawResponse.rawResponse, hasNextPage: (response) => - (response?.self_service_profiles ?? []).length >= Math.floor(request?.per_page ?? 50), + (response?.self_service_profiles ?? []).length > 0 && + (request?.per_page == null || (response?.self_service_profiles ?? []).length >= request?.per_page), getItems: (response) => response?.self_service_profiles ?? [], loadPage: (_response) => { _offset += 1; diff --git a/src/management/api/resources/userGrants/client/Client.ts b/src/management/api/resources/userGrants/client/Client.ts index 0c0df9548d..16b496b665 100644 --- a/src/management/api/resources/userGrants/client/Client.ts +++ b/src/management/api/resources/userGrants/client/Client.ts @@ -128,7 +128,9 @@ export class UserGrantsClient { return new core.Page({ response: dataWithRawResponse.data, rawResponse: dataWithRawResponse.rawResponse, - hasNextPage: (response) => (response?.grants ?? []).length >= Math.floor(request?.per_page ?? 50), + hasNextPage: (response) => + (response?.grants ?? []).length > 0 && + (request?.per_page == null || (response?.grants ?? []).length >= request?.per_page), getItems: (response) => response?.grants ?? [], loadPage: (_response) => { _offset += 1; diff --git a/src/management/api/resources/users/client/Client.ts b/src/management/api/resources/users/client/Client.ts index 065240330c..4c69f0e2fa 100644 --- a/src/management/api/resources/users/client/Client.ts +++ b/src/management/api/resources/users/client/Client.ts @@ -14,7 +14,6 @@ import { ConnectedAccountsClient } from "../resources/connectedAccounts/client/C import { EffectivePermissionsClient } from "../resources/effectivePermissions/client/Client.js"; import { EffectiveRolesClient } from "../resources/effectiveRoles/client/Client.js"; import { EnrollmentsClient } from "../resources/enrollments/client/Client.js"; -import { FederatedConnectionsTokensetsClient } from "../resources/federatedConnectionsTokensets/client/Client.js"; import { GroupsClient } from "../resources/groups/client/Client.js"; import { IdentitiesClient } from "../resources/identities/client/Client.js"; import { LogsClient } from "../resources/logs/client/Client.js"; @@ -40,7 +39,6 @@ export class UsersClient { protected _effectivePermissions: EffectivePermissionsClient | undefined; protected _effectiveRoles: EffectiveRolesClient | undefined; protected _enrollments: EnrollmentsClient | undefined; - protected _federatedConnectionsTokensets: FederatedConnectionsTokensetsClient | undefined; protected _groups: GroupsClient | undefined; protected _identities: IdentitiesClient | undefined; protected _logs: LogsClient | undefined; @@ -80,10 +78,6 @@ export class UsersClient { return (this._enrollments ??= new EnrollmentsClient(this._options)); } - public get federatedConnectionsTokensets(): FederatedConnectionsTokensetsClient { - return (this._federatedConnectionsTokensets ??= new FederatedConnectionsTokensetsClient(this._options)); - } - public get groups(): GroupsClient { return (this._groups ??= new GroupsClient(this._options)); } @@ -271,7 +265,9 @@ export class UsersClient { return new core.Page({ response: dataWithRawResponse.data, rawResponse: dataWithRawResponse.rawResponse, - hasNextPage: (response) => (response?.users ?? []).length >= Math.floor(request?.per_page ?? 50), + hasNextPage: (response) => + (response?.users ?? []).length > 0 && + (request?.per_page == null || (response?.users ?? []).length >= request?.per_page), getItems: (response) => response?.users ?? [], loadPage: (_response) => { _offset += 1; diff --git a/src/management/api/resources/users/resources/authenticationMethods/client/Client.ts b/src/management/api/resources/users/resources/authenticationMethods/client/Client.ts index 1d6993507f..bd965af81a 100644 --- a/src/management/api/resources/users/resources/authenticationMethods/client/Client.ts +++ b/src/management/api/resources/users/resources/authenticationMethods/client/Client.ts @@ -141,7 +141,9 @@ export class AuthenticationMethodsClient { >({ response: dataWithRawResponse.data, rawResponse: dataWithRawResponse.rawResponse, - hasNextPage: (response) => (response?.authenticators ?? []).length >= Math.floor(request?.per_page ?? 50), + hasNextPage: (response) => + (response?.authenticators ?? []).length > 0 && + (request?.per_page == null || (response?.authenticators ?? []).length >= request?.per_page), getItems: (response) => response?.authenticators ?? [], loadPage: (_response) => { _offset += 1; diff --git a/src/management/api/resources/users/resources/federatedConnectionsTokensets/client/Client.ts b/src/management/api/resources/users/resources/federatedConnectionsTokensets/client/Client.ts deleted file mode 100644 index f0d78c0ac6..0000000000 --- a/src/management/api/resources/users/resources/federatedConnectionsTokensets/client/Client.ts +++ /dev/null @@ -1,184 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -import type { BaseClientOptions, BaseRequestOptions } from "../../../../../../BaseClient.js"; -import { normalizeClientOptionsWithAuth, type NormalizedClientOptionsWithAuth } from "../../../../../../BaseClient.js"; -import * as core from "../../../../../../core/index.js"; -import { mergeHeaders } from "../../../../../../core/headers.js"; -import * as environments from "../../../../../../environments.js"; -import { handleNonStatusCodeError } from "../../../../../../errors/handleNonStatusCodeError.js"; -import * as errors from "../../../../../../errors/index.js"; -import * as Management from "../../../../../index.js"; - -export declare namespace FederatedConnectionsTokensetsClient { - export type Options = BaseClientOptions; - - export interface RequestOptions extends BaseRequestOptions {} -} - -export class FederatedConnectionsTokensetsClient { - protected readonly _options: NormalizedClientOptionsWithAuth; - - constructor(options: FederatedConnectionsTokensetsClient.Options) { - this._options = normalizeClientOptionsWithAuth(options); - } - - /** - * List active federated connections tokensets for a provided user - * - * @param {string} id - User identifier - * @param {FederatedConnectionsTokensetsClient.RequestOptions} requestOptions - Request-specific configuration. - * - * @throws {@link Management.UnauthorizedError} - * @throws {@link Management.ForbiddenError} - * @throws {@link Management.NotFoundError} - * @throws {@link Management.TooManyRequestsError} - * - * @example - * await client.users.federatedConnectionsTokensets.list("id") - */ - public list( - id: string, - requestOptions?: FederatedConnectionsTokensetsClient.RequestOptions, - ): core.HttpResponsePromise { - return core.HttpResponsePromise.fromPromise(this.__list(id, requestOptions)); - } - - private async __list( - id: string, - requestOptions?: FederatedConnectionsTokensetsClient.RequestOptions, - ): Promise> { - const _authRequest: core.AuthRequest = await this._options.authProvider.getAuthRequest(); - let _headers: core.Fetcher.Args["headers"] = mergeHeaders( - _authRequest.headers, - this._options?.headers, - requestOptions?.headers, - ); - const _response = await (this._options.fetcher ?? core.fetcher)({ - url: core.url.join( - (await core.Supplier.get(this._options.baseUrl)) ?? - (await core.Supplier.get(this._options.environment)) ?? - environments.ManagementEnvironment.Default, - `users/${core.url.encodePathParam(id)}/federated-connections-tokensets`, - ), - method: "GET", - headers: _headers, - queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(), - timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000, - maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries, - abortSignal: requestOptions?.abortSignal, - fetchFn: this._options?.fetch, - logging: this._options.logging, - }); - if (_response.ok) { - return { - data: _response.body as Management.FederatedConnectionTokenSet[], - rawResponse: _response.rawResponse, - }; - } - - if (_response.error.reason === "status-code") { - switch (_response.error.statusCode) { - case 401: - throw new Management.UnauthorizedError(_response.error.body as unknown, _response.rawResponse); - case 403: - throw new Management.ForbiddenError(_response.error.body as unknown, _response.rawResponse); - case 404: - throw new Management.NotFoundError(_response.error.body as unknown, _response.rawResponse); - case 429: - throw new Management.TooManyRequestsError(_response.error.body as unknown, _response.rawResponse); - default: - throw new errors.ManagementError({ - statusCode: _response.error.statusCode, - body: _response.error.body, - rawResponse: _response.rawResponse, - }); - } - } - - return handleNonStatusCodeError( - _response.error, - _response.rawResponse, - "GET", - "/users/{id}/federated-connections-tokensets", - ); - } - - /** - * @param {string} id - Id of the user that owns the tokenset - * @param {string} tokenset_id - The tokenset id - * @param {FederatedConnectionsTokensetsClient.RequestOptions} requestOptions - Request-specific configuration. - * - * @throws {@link Management.BadRequestError} - * @throws {@link Management.UnauthorizedError} - * @throws {@link Management.ForbiddenError} - * @throws {@link Management.TooManyRequestsError} - * - * @example - * await client.users.federatedConnectionsTokensets.delete("id", "tokenset_id") - */ - public delete( - id: string, - tokenset_id: string, - requestOptions?: FederatedConnectionsTokensetsClient.RequestOptions, - ): core.HttpResponsePromise { - return core.HttpResponsePromise.fromPromise(this.__delete(id, tokenset_id, requestOptions)); - } - - private async __delete( - id: string, - tokenset_id: string, - requestOptions?: FederatedConnectionsTokensetsClient.RequestOptions, - ): Promise> { - const _authRequest: core.AuthRequest = await this._options.authProvider.getAuthRequest(); - let _headers: core.Fetcher.Args["headers"] = mergeHeaders( - _authRequest.headers, - this._options?.headers, - requestOptions?.headers, - ); - const _response = await (this._options.fetcher ?? core.fetcher)({ - url: core.url.join( - (await core.Supplier.get(this._options.baseUrl)) ?? - (await core.Supplier.get(this._options.environment)) ?? - environments.ManagementEnvironment.Default, - `users/${core.url.encodePathParam(id)}/federated-connections-tokensets/${core.url.encodePathParam(tokenset_id)}`, - ), - method: "DELETE", - headers: _headers, - queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(), - timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000, - maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries, - abortSignal: requestOptions?.abortSignal, - fetchFn: this._options?.fetch, - logging: this._options.logging, - }); - if (_response.ok) { - return { data: undefined, rawResponse: _response.rawResponse }; - } - - if (_response.error.reason === "status-code") { - switch (_response.error.statusCode) { - case 400: - throw new Management.BadRequestError(_response.error.body as unknown, _response.rawResponse); - case 401: - throw new Management.UnauthorizedError(_response.error.body as unknown, _response.rawResponse); - case 403: - throw new Management.ForbiddenError(_response.error.body as unknown, _response.rawResponse); - case 429: - throw new Management.TooManyRequestsError(_response.error.body as unknown, _response.rawResponse); - default: - throw new errors.ManagementError({ - statusCode: _response.error.statusCode, - body: _response.error.body, - rawResponse: _response.rawResponse, - }); - } - } - - return handleNonStatusCodeError( - _response.error, - _response.rawResponse, - "DELETE", - "/users/{id}/federated-connections-tokensets/{tokenset_id}", - ); - } -} diff --git a/src/management/api/resources/users/resources/federatedConnectionsTokensets/client/index.ts b/src/management/api/resources/users/resources/federatedConnectionsTokensets/client/index.ts deleted file mode 100644 index cb0ff5c3b5..0000000000 --- a/src/management/api/resources/users/resources/federatedConnectionsTokensets/client/index.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/src/management/api/resources/users/resources/federatedConnectionsTokensets/index.ts b/src/management/api/resources/users/resources/federatedConnectionsTokensets/index.ts deleted file mode 100644 index 914b8c3c72..0000000000 --- a/src/management/api/resources/users/resources/federatedConnectionsTokensets/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./client/index.js"; diff --git a/src/management/api/resources/users/resources/index.ts b/src/management/api/resources/users/resources/index.ts index 56f5012720..513ec11774 100644 --- a/src/management/api/resources/users/resources/index.ts +++ b/src/management/api/resources/users/resources/index.ts @@ -4,7 +4,6 @@ export * as connectedAccounts from "./connectedAccounts/index.js"; export * as effectivePermissions from "./effectivePermissions/index.js"; export * as effectiveRoles from "./effectiveRoles/index.js"; export * as enrollments from "./enrollments/index.js"; -export * as federatedConnectionsTokensets from "./federatedConnectionsTokensets/index.js"; export * as groups from "./groups/index.js"; export * as identities from "./identities/index.js"; export * as logs from "./logs/index.js"; diff --git a/src/management/api/resources/users/resources/logs/client/Client.ts b/src/management/api/resources/users/resources/logs/client/Client.ts index aea8ddbedc..87466c15d9 100644 --- a/src/management/api/resources/users/resources/logs/client/Client.ts +++ b/src/management/api/resources/users/resources/logs/client/Client.ts @@ -131,7 +131,9 @@ export class LogsClient { return new core.Page({ response: dataWithRawResponse.data, rawResponse: dataWithRawResponse.rawResponse, - hasNextPage: (response) => (response?.logs ?? []).length >= Math.floor(request?.per_page ?? 50), + hasNextPage: (response) => + (response?.logs ?? []).length > 0 && + (request?.per_page == null || (response?.logs ?? []).length >= request?.per_page), getItems: (response) => response?.logs ?? [], loadPage: (_response) => { _offset += 1; diff --git a/src/management/api/resources/users/resources/organizations/client/Client.ts b/src/management/api/resources/users/resources/organizations/client/Client.ts index fe5ebb4e9e..7c78be2327 100644 --- a/src/management/api/resources/users/resources/organizations/client/Client.ts +++ b/src/management/api/resources/users/resources/organizations/client/Client.ts @@ -125,7 +125,9 @@ export class OrganizationsClient { return new core.Page({ response: dataWithRawResponse.data, rawResponse: dataWithRawResponse.rawResponse, - hasNextPage: (response) => (response?.organizations ?? []).length >= Math.floor(request?.per_page ?? 50), + hasNextPage: (response) => + (response?.organizations ?? []).length > 0 && + (request?.per_page == null || (response?.organizations ?? []).length >= request?.per_page), getItems: (response) => response?.organizations ?? [], loadPage: (_response) => { _offset += 1; diff --git a/src/management/api/resources/users/resources/permissions/client/Client.ts b/src/management/api/resources/users/resources/permissions/client/Client.ts index 85df8f401c..676d7a02d3 100644 --- a/src/management/api/resources/users/resources/permissions/client/Client.ts +++ b/src/management/api/resources/users/resources/permissions/client/Client.ts @@ -136,7 +136,9 @@ export class PermissionsClient { >({ response: dataWithRawResponse.data, rawResponse: dataWithRawResponse.rawResponse, - hasNextPage: (response) => (response?.permissions ?? []).length >= Math.floor(request?.per_page ?? 50), + hasNextPage: (response) => + (response?.permissions ?? []).length > 0 && + (request?.per_page == null || (response?.permissions ?? []).length >= request?.per_page), getItems: (response) => response?.permissions ?? [], loadPage: (_response) => { _offset += 1; diff --git a/src/management/api/resources/users/resources/roles/client/Client.ts b/src/management/api/resources/users/resources/roles/client/Client.ts index ab0f6d650d..d6024ce370 100644 --- a/src/management/api/resources/users/resources/roles/client/Client.ts +++ b/src/management/api/resources/users/resources/roles/client/Client.ts @@ -128,7 +128,9 @@ export class RolesClient { return new core.Page({ response: dataWithRawResponse.data, rawResponse: dataWithRawResponse.rawResponse, - hasNextPage: (response) => (response?.roles ?? []).length >= Math.floor(request?.per_page ?? 50), + hasNextPage: (response) => + (response?.roles ?? []).length > 0 && + (request?.per_page == null || (response?.roles ?? []).length >= request?.per_page), getItems: (response) => response?.roles ?? [], loadPage: (_response) => { _offset += 1; diff --git a/src/management/api/types/types.ts b/src/management/api/types/types.ts index 2ff132ae75..6a0aa9fd4f 100644 --- a/src/management/api/types/types.ts +++ b/src/management/api/types/types.ts @@ -243,12 +243,6 @@ export const OauthScope = { /** * Read Events */ ReadEvents: "read:events", - /** - * Read Federated Connections Tokens */ - ReadFederatedConnectionsTokens: "read:federated_connections_tokens", - /** - * Delete Federated Connections Tokens */ - DeleteFederatedConnectionsTokens: "delete:federated_connections_tokens", /** * Create Flows */ CreateFlows: "create:flows", @@ -3119,10 +3113,9 @@ export interface ClientSessionTransferDelegationConfiguration { enforce_device_binding?: Management.ClientSessionTransferDelegationDeviceBindingEnum | undefined; } -/** Indicates the device binding enforcement for delegation (impersonation) access. If set to 'ip', device binding is enforced by IP. If set to 'asn', device binding is enforced by ASN. Default value is `ip`. */ +/** Indicates the device binding enforcement for delegation (impersonation) access. The only supported value is `ip`, which enforces device binding by IP, meaning consumption of the Session Transfer Token must be done from the same IP as the issuer. */ export const ClientSessionTransferDelegationDeviceBindingEnum = { Ip: "ip", - Asn: "asn", } as const; export type ClientSessionTransferDelegationDeviceBindingEnum = (typeof ClientSessionTransferDelegationDeviceBindingEnum)[keyof typeof ClientSessionTransferDelegationDeviceBindingEnum]; @@ -3942,14 +3935,6 @@ export type ConnectionExtIsSuspendedGoogleApps = Management.ConnectionExtIsSuspe */ export type ConnectionExtProfile = boolean; -/** - * Federated Connections Access Tokens - */ -export interface ConnectionFederatedConnectionsAccessTokens { - /** Enables refresh tokens and access tokens collection for federated connections */ - active?: boolean | undefined; -} - /** * Mapping of user profile fields returned from the OAuth2 provider to Auth0 user attributes */ @@ -4660,7 +4645,6 @@ export interface ConnectionOptionsAzureAd extends Management.ConnectionOptionsCo ext_usage_location?: boolean | undefined; /** When false, prevents storing an alternative user ID. When true (default), this user ID is persisted in the user profile. */ ext_user_id?: boolean | undefined; - federated_connections_access_tokens?: (Management.ConnectionFederatedConnectionsAccessTokens | null) | undefined; /** Indicates whether admin consent has been granted for the required Azure AD permissions. Read-only status field managed by Auth0 during the OAuth authorization flow. */ granted?: boolean | undefined; icon_url?: Management.ConnectionIconUrlAzureAd | undefined; @@ -4757,7 +4741,6 @@ export interface ConnectionOptionsCommonOidc { connection_settings?: Management.ConnectionConnectionSettings | undefined; domain_aliases?: Management.ConnectionDomainAliases | undefined; dpop_signing_alg?: Management.ConnectionDpopSigningAlgEnum | undefined; - federated_connections_access_tokens?: (Management.ConnectionFederatedConnectionsAccessTokens | null) | undefined; icon_url?: Management.ConnectionIconUrl | undefined; id_token_session_expiry_supported?: Management.ConnectionIdTokenSessionExpirySupported | undefined; id_token_signed_response_algs?: ((Management.ConnectionIdTokenSignedResponseAlgs | undefined) | null) | undefined; @@ -5058,7 +5041,6 @@ export interface ConnectionOptionsGoogleApps extends Management.ConnectionOption ext_groups_extended?: boolean | undefined; ext_is_admin?: Management.ConnectionExtIsAdminGoogleApps | undefined; ext_is_suspended?: Management.ConnectionExtIsSuspendedGoogleApps | undefined; - federated_connections_access_tokens?: (Management.ConnectionFederatedConnectionsAccessTokens | null) | undefined; handle_login_from_social?: Management.ConnectionHandleLoginFromSocialGoogleApps | undefined; icon_url?: Management.ConnectionIconUrlGoogleApps | undefined; /** Determines how Auth0 generates the user_id for Google Workspace users. When false (default), the user's email address is used. When true, Google's stable numeric user ID is used instead, which persists even if the user's email changes. This setting can only be configured when creating the connection and cannot be changed afterward. */ @@ -6126,7 +6108,6 @@ export interface ConnectionPropertiesOptions { upstream_params?: ((Management.ConnectionUpstreamParams | undefined) | null) | undefined; set_user_root_attributes?: Management.ConnectionSetUserRootAttributesEnum | undefined; gateway_authentication?: (Management.ConnectionGatewayAuthentication | null) | undefined; - federated_connections_access_tokens?: (Management.ConnectionFederatedConnectionsAccessTokens | null) | undefined; password_options?: Management.ConnectionPasswordOptions | undefined; assertion_decryption_settings?: Management.ConnectionAssertionDecryptionSettings | undefined; id_token_signed_response_algs?: ((Management.ConnectionIdTokenSignedResponseAlgs | undefined) | null) | undefined; @@ -19904,17 +19885,6 @@ export interface FedCmLoginPatch { google?: (Management.FedCmLoginGooglePatch | null) | undefined; } -export interface FederatedConnectionTokenSet { - id?: string | undefined; - connection?: string | undefined; - scope?: string | undefined; - expires_at?: (string | null) | undefined; - issued_at?: string | undefined; - last_used_at?: (string | null) | undefined; - /** Accepts any additional properties */ - [key: string]: any; -} - export type FlowAction = | Management.FlowActionActivecampaign | Management.FlowActionAirtable @@ -26608,6 +26578,7 @@ export type NetworkAclActionRedirectEnum = boolean; export interface NetworkAclMatch { asns?: number[] | undefined; + auth0_managed?: string[] | undefined; geo_country_codes?: string[] | undefined; geo_subdivision_codes?: string[] | undefined; ipv4_cidrs?: Management.NetworkAclMatchIpv4Cidr[] | undefined; @@ -26896,6 +26867,7 @@ export const PartialGroupsEnum = { SignupPassword: "signup-password", CustomizedConsent: "customized-consent", Passkeys: "passkeys", + Confirmation: "confirmation", } as const; export type PartialGroupsEnum = (typeof PartialGroupsEnum)[keyof typeof PartialGroupsEnum]; @@ -28790,6 +28762,16 @@ export type SuspiciousIpThrottlingAllowlist = Management.SuspiciousIpThrottlingA export type SuspiciousIpThrottlingAllowlistItem = string; +/** + * Configuration options that apply before every custom token exchange attempt. + */ +export interface SuspiciousIpThrottlingPreCustomTokenExchangeStage { + /** Total number of attempts allowed. */ + max_attempts?: number | undefined; + /** Interval of time, given in milliseconds, at which new attempts are granted. */ + rate?: number | undefined; +} + /** * Configuration options that apply before every login attempt. */ @@ -28823,6 +28805,7 @@ export type SuspiciousIpThrottlingShieldsEnum = export interface SuspiciousIpThrottlingStage { "pre-login"?: Management.SuspiciousIpThrottlingPreLoginStage | undefined; "pre-user-registration"?: Management.SuspiciousIpThrottlingPreUserRegistrationStage | undefined; + "pre-custom-token-exchange"?: Management.SuspiciousIpThrottlingPreCustomTokenExchangeStage | undefined; } /** Group synchronization configuration */ @@ -29631,7 +29614,6 @@ export interface UpdateConnectionOptions { upstream_params?: ((Management.ConnectionUpstreamParams | undefined) | null) | undefined; set_user_root_attributes?: Management.ConnectionSetUserRootAttributesEnum | undefined; gateway_authentication?: (Management.ConnectionGatewayAuthentication | null) | undefined; - federated_connections_access_tokens?: (Management.ConnectionFederatedConnectionsAccessTokens | null) | undefined; password_options?: Management.ConnectionPasswordOptions | undefined; assertion_decryption_settings?: Management.ConnectionAssertionDecryptionSettings | undefined; id_token_signed_response_algs?: ((Management.ConnectionIdTokenSignedResponseAlgs | undefined) | null) | undefined; diff --git a/src/management/core/fetcher/getResponseBody.ts b/src/management/core/fetcher/getResponseBody.ts index 708d55728f..2e831e4956 100644 --- a/src/management/core/fetcher/getResponseBody.ts +++ b/src/management/core/fetcher/getResponseBody.ts @@ -1,6 +1,16 @@ import { fromJson } from "../json.js"; import { getBinaryResponse } from "./BinaryResponse.js"; +// Pins the upstream Response so undici's FinalizationRegistry can't GC it and cancel the body stream. +function retainResponse(target: object, response: Response): void { + Object.defineProperty(target, "__fern_response_ref", { + value: response, + enumerable: false, + configurable: true, + writable: false, + }); +} + export async function getResponseBody(response: Response, responseType?: string): Promise { switch (responseType) { case "binary-response": @@ -19,6 +29,7 @@ export async function getResponseBody(response: Response, responseType?: string) }, }; } + retainResponse(response.body, response); return response.body; case "streaming": if (response.body == null) { @@ -31,6 +42,7 @@ export async function getResponseBody(response: Response, responseType?: string) }; } + retainResponse(response.body, response); return response.body; case "text": diff --git a/src/management/core/fetcher/signals.ts b/src/management/core/fetcher/signals.ts index 7bd3757ec3..ba74c4d02b 100644 --- a/src/management/core/fetcher/signals.ts +++ b/src/management/core/fetcher/signals.ts @@ -14,12 +14,21 @@ export function anySignal(...args: AbortSignal[] | [AbortSignal[]]): AbortSignal for (const signal of signals) { if (signal.aborted) { controller.abort((signal as any)?.reason); - break; + return controller.signal; } signal.addEventListener("abort", () => controller.abort((signal as any)?.reason), { signal: controller.signal, }); + + // Re-check after adding listener: the signal may have aborted + // between the initial `signal.aborted` check and the `addEventListener` + // call above. If it did, the abort event was already dispatched and + // the listener will never fire — we must manually abort. + if (signal.aborted) { + controller.abort((signal as any)?.reason); + return controller.signal; + } } return controller.signal; diff --git a/src/management/errors/ManagementError.ts b/src/management/errors/ManagementError.ts index d917d82053..b2ff163d8a 100644 --- a/src/management/errors/ManagementError.ts +++ b/src/management/errors/ManagementError.ts @@ -28,7 +28,7 @@ export class ManagementError extends Error { Error.captureStackTrace(this, this.constructor); } - this.name = this.constructor.name; + this.name = "ManagementError"; this.statusCode = statusCode; this.body = body; this.rawResponse = rawResponse; diff --git a/src/management/errors/ManagementTimeoutError.ts b/src/management/errors/ManagementTimeoutError.ts index 6783b2b4d9..3f24fc1489 100644 --- a/src/management/errors/ManagementTimeoutError.ts +++ b/src/management/errors/ManagementTimeoutError.ts @@ -10,7 +10,7 @@ export class ManagementTimeoutError extends Error { Error.captureStackTrace(this, this.constructor); } - this.name = this.constructor.name; + this.name = "ManagementTimeoutError"; if (opts?.cause != null) { this.cause = opts.cause; } diff --git a/src/management/tests/unit/fetcher/getResponseBody.test.ts b/src/management/tests/unit/fetcher/getResponseBody.test.ts index 0e09a52c24..9bfc206e53 100644 --- a/src/management/tests/unit/fetcher/getResponseBody.test.ts +++ b/src/management/tests/unit/fetcher/getResponseBody.test.ts @@ -73,6 +73,21 @@ describe("Test getResponseBody", () => { } }); + it("should retain a reference to the parent Response for sse responses", async () => { + if (RUNTIME.type === "node") { + const mockStream = new ReadableStream(); + const mockResponse = new Response(mockStream); + const result = (await getResponseBody(mockResponse, "sse")) as ReadableStream & { + __fern_response_ref?: Response; + }; + // Pins the parent Response so undici's FinalizationRegistry can't GC it and cancel the stream. + expect(result.__fern_response_ref).toBe(mockResponse); + // The pin must be non-enumerable so it does not leak through JSON.stringify or Object.keys. + const descriptor = Object.getOwnPropertyDescriptor(result, "__fern_response_ref"); + expect(descriptor?.enumerable).toBe(false); + } + }); + it("should handle streaming response type", async () => { const encoder = new TextEncoder(); const testData = "test stream data"; @@ -94,4 +109,15 @@ describe("Test getResponseBody", () => { const streamContent = decoder.decode(value); expect(streamContent).toBe(testData); }); + + it("should retain a reference to the parent Response for streaming responses", async () => { + const mockStream = new ReadableStream(); + const mockResponse = new Response(mockStream); + const result = (await getResponseBody(mockResponse, "streaming")) as ReadableStream & { + __fern_response_ref?: Response; + }; + expect(result.__fern_response_ref).toBe(mockResponse); + const descriptor = Object.getOwnPropertyDescriptor(result, "__fern_response_ref"); + expect(descriptor?.enumerable).toBe(false); + }); }); diff --git a/src/management/tests/unit/fetcher/signals.test.ts b/src/management/tests/unit/fetcher/signals.test.ts index 10289e2431..99bdfc6373 100644 --- a/src/management/tests/unit/fetcher/signals.test.ts +++ b/src/management/tests/unit/fetcher/signals.test.ts @@ -66,4 +66,49 @@ describe("Test anySignal", () => { const signal = anySignal(controller1.signal, controller2.signal); expect(signal.aborted).toBe(true); }); + + it("should detect a signal that aborts between the initial aborted check and the event listener registration", () => { + const ctrlA = new AbortController(); + const ctrlB = new AbortController(); + + const originalAddEventListener = ctrlA.signal.addEventListener.bind(ctrlA.signal); + const originalRemoveEventListener = ctrlA.signal.removeEventListener.bind(ctrlA.signal); + + let abortedAccessCount = 0; + const proxy = new Proxy(ctrlA.signal, { + get(target, prop, receiver) { + if (prop === "aborted") { + abortedAccessCount++; + if (abortedAccessCount === 1) return false; + return Reflect.get(target, prop, receiver); + } + if (prop === "addEventListener") { + return (...args: Parameters) => { + if (abortedAccessCount >= 1 && args[0] === "abort") { + ctrlA.abort("too-late"); + } + return originalAddEventListener(...args); + }; + } + if (prop === "removeEventListener") { + return originalRemoveEventListener; + } + return Reflect.get(target, prop, receiver); + }, + }); + + const combined = anySignal(proxy, ctrlB.signal); + + expect(combined.aborted).toBe(true); + expect(combined.reason).toBe("too-late"); + }); + + it("should forward the abort reason from a source signal", () => { + const controller = new AbortController(); + const combined = anySignal(controller.signal); + + controller.abort("test-reason"); + expect(combined.aborted).toBe(true); + expect(combined.reason).toBe("test-reason"); + }); }); diff --git a/src/management/tests/wire/attackProtection/suspiciousIpThrottling.test.ts b/src/management/tests/wire/attackProtection/suspiciousIpThrottling.test.ts index 49bd214f23..8b9b4993d3 100644 --- a/src/management/tests/wire/attackProtection/suspiciousIpThrottling.test.ts +++ b/src/management/tests/wire/attackProtection/suspiciousIpThrottling.test.ts @@ -13,7 +13,11 @@ describe("SuspiciousIpThrottlingClient", () => { enabled: true, shields: ["block"], allowlist: ["allowlist"], - stage: { "pre-login": { max_attempts: 1, rate: 1 }, "pre-user-registration": { max_attempts: 1, rate: 1 } }, + stage: { + "pre-login": { max_attempts: 1, rate: 1 }, + "pre-user-registration": { max_attempts: 1, rate: 1 }, + "pre-custom-token-exchange": { max_attempts: 1, rate: 1 }, + }, }; server @@ -93,7 +97,11 @@ describe("SuspiciousIpThrottlingClient", () => { enabled: true, shields: ["block"], allowlist: ["allowlist"], - stage: { "pre-login": { max_attempts: 1, rate: 1 }, "pre-user-registration": { max_attempts: 1, rate: 1 } }, + stage: { + "pre-login": { max_attempts: 1, rate: 1 }, + "pre-user-registration": { max_attempts: 1, rate: 1 }, + "pre-custom-token-exchange": { max_attempts: 1, rate: 1 }, + }, }; server diff --git a/src/management/tests/wire/networkAcls.test.ts b/src/management/tests/wire/networkAcls.test.ts index 08217a078e..7718e3c5fe 100644 --- a/src/management/tests/wire/networkAcls.test.ts +++ b/src/management/tests/wire/networkAcls.test.ts @@ -316,6 +316,7 @@ describe("NetworkAclsClient", () => { action: { block: true, allow: true, log: true, redirect: true, redirect_uri: "redirect_uri" }, match: { asns: [1], + auth0_managed: ["auth0_managed"], geo_country_codes: ["geo_country_codes"], geo_subdivision_codes: ["geo_subdivision_codes"], ipv4_cidrs: ["ipv4_cidrs"], @@ -329,6 +330,7 @@ describe("NetworkAclsClient", () => { }, not_match: { asns: [1], + auth0_managed: ["auth0_managed"], geo_country_codes: ["geo_country_codes"], geo_subdivision_codes: ["geo_subdivision_codes"], ipv4_cidrs: ["ipv4_cidrs"], @@ -417,6 +419,7 @@ describe("NetworkAclsClient", () => { action: { block: true, allow: true, log: true, redirect: true, redirect_uri: "redirect_uri" }, match: { asns: [1], + auth0_managed: ["auth0_managed"], geo_country_codes: ["geo_country_codes"], geo_subdivision_codes: ["geo_subdivision_codes"], ipv4_cidrs: ["ipv4_cidrs"], @@ -430,6 +433,7 @@ describe("NetworkAclsClient", () => { }, not_match: { asns: [1], + auth0_managed: ["auth0_managed"], geo_country_codes: ["geo_country_codes"], geo_subdivision_codes: ["geo_subdivision_codes"], ipv4_cidrs: ["ipv4_cidrs"], @@ -720,6 +724,7 @@ describe("NetworkAclsClient", () => { action: { block: true, allow: true, log: true, redirect: true, redirect_uri: "redirect_uri" }, match: { asns: [1], + auth0_managed: ["auth0_managed"], geo_country_codes: ["geo_country_codes"], geo_subdivision_codes: ["geo_subdivision_codes"], ipv4_cidrs: ["ipv4_cidrs"], @@ -733,6 +738,7 @@ describe("NetworkAclsClient", () => { }, not_match: { asns: [1], + auth0_managed: ["auth0_managed"], geo_country_codes: ["geo_country_codes"], geo_subdivision_codes: ["geo_subdivision_codes"], ipv4_cidrs: ["ipv4_cidrs"], diff --git a/src/management/tests/wire/users/federatedConnectionsTokensets.test.ts b/src/management/tests/wire/users/federatedConnectionsTokensets.test.ts deleted file mode 100644 index 4bc14d6580..0000000000 --- a/src/management/tests/wire/users/federatedConnectionsTokensets.test.ts +++ /dev/null @@ -1,201 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -import * as Management from "../../../api/index"; -import { ManagementClient } from "../../../Client"; -import { mockServerPool } from "../../mock-server/MockServerPool"; - -describe("FederatedConnectionsTokensetsClient", () => { - test("list (1)", async () => { - const server = mockServerPool.createServer(); - const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); - - const rawResponseBody = [ - { - id: "id", - connection: "connection", - scope: "scope", - expires_at: "2024-01-15T09:30:00Z", - issued_at: "2024-01-15T09:30:00Z", - last_used_at: "2024-01-15T09:30:00Z", - }, - ]; - - server - .mockEndpoint() - .get("/users/id/federated-connections-tokensets") - .respondWith() - .statusCode(200) - .jsonBody(rawResponseBody) - .build(); - - const response = await client.users.federatedConnectionsTokensets.list("id"); - expect(response).toEqual(rawResponseBody); - }); - - test("list (2)", async () => { - const server = mockServerPool.createServer(); - const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); - - const rawResponseBody = { key: "value" }; - - server - .mockEndpoint() - .get("/users/id/federated-connections-tokensets") - .respondWith() - .statusCode(401) - .jsonBody(rawResponseBody) - .build(); - - await expect(async () => { - return await client.users.federatedConnectionsTokensets.list("id"); - }).rejects.toThrow(Management.UnauthorizedError); - }); - - test("list (3)", async () => { - const server = mockServerPool.createServer(); - const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); - - const rawResponseBody = { key: "value" }; - - server - .mockEndpoint() - .get("/users/id/federated-connections-tokensets") - .respondWith() - .statusCode(403) - .jsonBody(rawResponseBody) - .build(); - - await expect(async () => { - return await client.users.federatedConnectionsTokensets.list("id"); - }).rejects.toThrow(Management.ForbiddenError); - }); - - test("list (4)", async () => { - const server = mockServerPool.createServer(); - const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); - - const rawResponseBody = { key: "value" }; - - server - .mockEndpoint() - .get("/users/id/federated-connections-tokensets") - .respondWith() - .statusCode(404) - .jsonBody(rawResponseBody) - .build(); - - await expect(async () => { - return await client.users.federatedConnectionsTokensets.list("id"); - }).rejects.toThrow(Management.NotFoundError); - }); - - test("list (5)", async () => { - const server = mockServerPool.createServer(); - const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); - - const rawResponseBody = { key: "value" }; - - server - .mockEndpoint() - .get("/users/id/federated-connections-tokensets") - .respondWith() - .statusCode(429) - .jsonBody(rawResponseBody) - .build(); - - await expect(async () => { - return await client.users.federatedConnectionsTokensets.list("id"); - }).rejects.toThrow(Management.TooManyRequestsError); - }); - - test("delete (1)", async () => { - const server = mockServerPool.createServer(); - const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); - - server - .mockEndpoint() - .delete("/users/id/federated-connections-tokensets/tokenset_id") - .respondWith() - .statusCode(200) - .build(); - - const response = await client.users.federatedConnectionsTokensets.delete("id", "tokenset_id"); - expect(response).toEqual(undefined); - }); - - test("delete (2)", async () => { - const server = mockServerPool.createServer(); - const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); - - const rawResponseBody = { key: "value" }; - - server - .mockEndpoint() - .delete("/users/id/federated-connections-tokensets/tokenset_id") - .respondWith() - .statusCode(400) - .jsonBody(rawResponseBody) - .build(); - - await expect(async () => { - return await client.users.federatedConnectionsTokensets.delete("id", "tokenset_id"); - }).rejects.toThrow(Management.BadRequestError); - }); - - test("delete (3)", async () => { - const server = mockServerPool.createServer(); - const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); - - const rawResponseBody = { key: "value" }; - - server - .mockEndpoint() - .delete("/users/id/federated-connections-tokensets/tokenset_id") - .respondWith() - .statusCode(401) - .jsonBody(rawResponseBody) - .build(); - - await expect(async () => { - return await client.users.federatedConnectionsTokensets.delete("id", "tokenset_id"); - }).rejects.toThrow(Management.UnauthorizedError); - }); - - test("delete (4)", async () => { - const server = mockServerPool.createServer(); - const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); - - const rawResponseBody = { key: "value" }; - - server - .mockEndpoint() - .delete("/users/id/federated-connections-tokensets/tokenset_id") - .respondWith() - .statusCode(403) - .jsonBody(rawResponseBody) - .build(); - - await expect(async () => { - return await client.users.federatedConnectionsTokensets.delete("id", "tokenset_id"); - }).rejects.toThrow(Management.ForbiddenError); - }); - - test("delete (5)", async () => { - const server = mockServerPool.createServer(); - const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); - - const rawResponseBody = { key: "value" }; - - server - .mockEndpoint() - .delete("/users/id/federated-connections-tokensets/tokenset_id") - .respondWith() - .statusCode(429) - .jsonBody(rawResponseBody) - .build(); - - await expect(async () => { - return await client.users.federatedConnectionsTokensets.delete("id", "tokenset_id"); - }).rejects.toThrow(Management.TooManyRequestsError); - }); -}); diff --git a/src/management/version.ts b/src/management/version.ts index 58b3e54024..f59346832d 100644 --- a/src/management/version.ts +++ b/src/management/version.ts @@ -1 +1 @@ -export const SDK_VERSION = "5.13.0"; +export const SDK_VERSION = "5.14.0"; diff --git a/yarn.lock b/yarn.lock index 4dd0249eae..3764c557ab 100644 --- a/yarn.lock +++ b/yarn.lock @@ -319,10 +319,10 @@ dependencies: "@types/json-schema" "^7.0.15" -"@eslint/eslintrc@^3.3.5": - version "3.3.5" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.5.tgz#c131793cfc1a7b96f24a83e0a8bbd4b881558c60" - integrity sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg== +"@eslint/eslintrc@^3.3.6": + version "3.3.6" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.6.tgz#d22bfd6b3a7d8e1f2c0b2f2e6de111b53ec6e13e" + integrity sha512-l2Ul9PrHsPCKcEY/ac7VgFj9D80C7S68sOKc618SyHDPK36s1XcFebXY0iTzUVn4Yq+YbwvSnDmCz9yxjX+QrA== dependencies: ajv "^6.14.0" debug "^4.3.2" @@ -330,14 +330,14 @@ globals "^14.0.0" ignore "^5.2.0" import-fresh "^3.2.1" - js-yaml "^4.1.1" + js-yaml "^4.3.0" minimatch "^3.1.5" strip-json-comments "^3.1.1" -"@eslint/js@9.39.4", "@eslint/js@^9.32.0": - version "9.39.4" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.39.4.tgz#a3f83bfc6fd9bf33a853dfacd0b49b398eb596c1" - integrity sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw== +"@eslint/js@9.39.5", "@eslint/js@^9.32.0": + version "9.39.5" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.39.5.tgz#6f2fbcff75500d229d535e0a949ae13472c84787" + integrity sha512-QywQuszQh77pIXCsq998c8hbhSTI/azTty1Z6N53dmAudKHhy573j3yvRLsX2BSp8YpLtoCEG8E9DJe+8zUh4A== "@eslint/object-schema@^2.1.7": version "2.1.7" @@ -845,9 +845,9 @@ "@types/node" "*" "@types/hast@^3.0.4": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/hast/-/hast-3.0.4.tgz#1d6b39993b82cea6ad783945b0508c25903e15aa" - integrity sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ== + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/hast/-/hast-3.0.5.tgz#48020de4c0e63492f4ca9db42068c108f68b7f8f" + integrity sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g== dependencies: "@types/unist" "*" @@ -893,9 +893,9 @@ integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== "@types/node@*": - version "26.1.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-26.1.0.tgz#aa85f0727fc5611347091c478341c63650903439" - integrity sha512-O0A1G3xPGy4w7AgQdAQYUlQ+BKk2Oovw8eRpofyp5KdBZULnbe+WqaOVNrm705SHphCiG4XHsACrSmPu1f+Kgw== + version "26.1.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-26.1.1.tgz#bad758d601e97d6cf457d204ee76a35fce7bd119" + integrity sha512-nxAkRSVkN1Y0JC1W8ky/fTfkGsMmcrRsbx+3XoZE+rMOX71kLYTV7fLXpqud1GpbpP5TuffXFqfX7fH2GgZREw== dependencies: undici-types "~8.3.0" @@ -939,99 +939,99 @@ "@types/yargs-parser" "*" "@typescript-eslint/eslint-plugin@^8.38.0": - version "8.63.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.63.0.tgz#0d85d0ec1a28b0e35f484cc8220a8bf084019e71" - integrity sha512-rvwSgqT+DHpWdzfSzPatRLm02a0GlESt++9iy3hLCDY4BgkaLcl8LBi9Yh7XGFBpwcBE/K3024QuXWTpbz4FfQ== + version "8.64.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.64.0.tgz#71a0c3d5f8a5e6c5dfdb4f0f04bd1bfb572d5e24" + integrity sha512-CGvQPBxN3wZLu6Rz2kFUpZeoCm78xUic92ck39KPePkO1NPOwjCqdQnm5Q87tpWw9vcBvW8XLrDXjH9PWYtJ3Q== dependencies: "@eslint-community/regexpp" "^4.12.2" - "@typescript-eslint/scope-manager" "8.63.0" - "@typescript-eslint/type-utils" "8.63.0" - "@typescript-eslint/utils" "8.63.0" - "@typescript-eslint/visitor-keys" "8.63.0" + "@typescript-eslint/scope-manager" "8.64.0" + "@typescript-eslint/type-utils" "8.64.0" + "@typescript-eslint/utils" "8.64.0" + "@typescript-eslint/visitor-keys" "8.64.0" ignore "^7.0.5" natural-compare "^1.4.0" ts-api-utils "^2.5.0" "@typescript-eslint/parser@^8.38.0": - version "8.63.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.63.0.tgz#2993338c379903e6afc72c3532ae6e15b97334d4" - integrity sha512-gwh4gvvlaVDKKxyfxMG+Gnu1u9X0OQBwyGLkbwB65dIzBKnxeRiJlNFqlI3zwVhNXJIs6qV7mlFCn/BIajlVig== - dependencies: - "@typescript-eslint/scope-manager" "8.63.0" - "@typescript-eslint/types" "8.63.0" - "@typescript-eslint/typescript-estree" "8.63.0" - "@typescript-eslint/visitor-keys" "8.63.0" + version "8.64.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.64.0.tgz#c9864a1cc28a13ff29a7314fbdef0528bb122f72" + integrity sha512-KA0OshtlcCCXmbfqyZkM5pV3/WNraJf7DkJRLpyrmwPtud57H5BDX7C3k0LPSPxpprfRL+cJDGabF10mvNCoCw== + dependencies: + "@typescript-eslint/scope-manager" "8.64.0" + "@typescript-eslint/types" "8.64.0" + "@typescript-eslint/typescript-estree" "8.64.0" + "@typescript-eslint/visitor-keys" "8.64.0" debug "^4.4.3" -"@typescript-eslint/project-service@8.63.0": - version "8.63.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.63.0.tgz#01a3d0550a860127444a9939749ab434591cd71a" - integrity sha512-e5dh0/UI0ok53AlZ5wRkXCB32z/f2jUZqPR/ygAw5WYaSw8j9EoJWlS7wQjr/dmOaqWjnPIn2m+HhVPCMWGZVQ== +"@typescript-eslint/project-service@8.64.0": + version "8.64.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.64.0.tgz#14c4e29390d7325a7f8a1218c2788fd649b85da6" + integrity sha512-tk4WpOJ6IEbGrVHaNmM0YRrwAD3exZlIK3iadQNAxh4YKk6jvUQ4ecq18n+v7+meh+cJ3j+D8nbk8sRKhlwLQg== dependencies: - "@typescript-eslint/tsconfig-utils" "^8.63.0" - "@typescript-eslint/types" "^8.63.0" + "@typescript-eslint/tsconfig-utils" "^8.64.0" + "@typescript-eslint/types" "^8.64.0" debug "^4.4.3" -"@typescript-eslint/scope-manager@8.63.0": - version "8.63.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.63.0.tgz#c9cf7ecd234f7ec346f62e5c7d28dfaf4d507b4d" - integrity sha512-uUyfMWCnDSN8bCpcrY8nGP2BLkQ9Xn0GsipcONcpIDWhwhO4ZSyHvyS14U3X75mzxWxL3I2UZIrenTzdzcJO8A== +"@typescript-eslint/scope-manager@8.64.0": + version "8.64.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.64.0.tgz#d45f15304a94c85c39db317b717b158fb6259958" + integrity sha512-CXEaFdYXjSTgKhisNkwCcJwTP8Pl+fmRrEQrri4nm3vU743bALrxzLmq7fHG/7e6a5xO0lDYeURpZmBuhHk54w== dependencies: - "@typescript-eslint/types" "8.63.0" - "@typescript-eslint/visitor-keys" "8.63.0" + "@typescript-eslint/types" "8.64.0" + "@typescript-eslint/visitor-keys" "8.64.0" -"@typescript-eslint/tsconfig-utils@8.63.0", "@typescript-eslint/tsconfig-utils@^8.63.0": - version "8.63.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.63.0.tgz#f7e1cf9a029bb71f4027ffa4194ba82afb564cd3" - integrity sha512-sUAbkulqBAsncKnbRP3+7CtQFRKicexnj7ZwNC6ddCR7EmrXvjvdCYMJbUIqMd6lwoEriZjwLo08aS5tSjVMHg== +"@typescript-eslint/tsconfig-utils@8.64.0", "@typescript-eslint/tsconfig-utils@^8.64.0": + version "8.64.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.64.0.tgz#c62ac8ea9173c3cac8b38b8e66e30a046b548851" + integrity sha512-2yo8rRNKuzbVWQp5kslhANqZ2uDAeROQHBRZNPu8JDsHmeFNj/XJJhX/FhNUWmkHHvoNsKa6+tHJiig87EzsQw== -"@typescript-eslint/type-utils@8.63.0": - version "8.63.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.63.0.tgz#9c00f362140186c588da86b3e10c212800b64b85" - integrity sha512-Nzzh/OGxVCOjObjaj1CQF2RUasyYy2Jfuh+zZ3PjLzG2fYRriAiZLib9UKtO+CpQAS3YHiAS+ckZDclwqI1TPA== +"@typescript-eslint/type-utils@8.64.0": + version "8.64.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.64.0.tgz#106fa7d58cf9cf7758f3dd8e426ac8237eceacf3" + integrity sha512-XWG4Fmmv/6SvyS9nH8jWrKs6terwJvE8cyRt1CzYYqzp9OrPhCT4cMc/f7C6RZCwG+qMmiffJS1/qJP8G1URtg== dependencies: - "@typescript-eslint/types" "8.63.0" - "@typescript-eslint/typescript-estree" "8.63.0" - "@typescript-eslint/utils" "8.63.0" + "@typescript-eslint/types" "8.64.0" + "@typescript-eslint/typescript-estree" "8.64.0" + "@typescript-eslint/utils" "8.64.0" debug "^4.4.3" ts-api-utils "^2.5.0" -"@typescript-eslint/types@8.63.0", "@typescript-eslint/types@^8.63.0": - version "8.63.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.63.0.tgz#6b32b0a5913520554d81a986acfffba2d32b6963" - integrity sha512-xyLtl9DUBBFrcJS4x2pIqGLH68/tC2uOa4Z7pUteW09D3bXnnXUom4dyPikzWgB7llmIc1zoeI3aoUdC4rPK/Q== +"@typescript-eslint/types@8.64.0", "@typescript-eslint/types@^8.64.0": + version "8.64.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.64.0.tgz#b41f8ef5dd40616908658b991197a9d486cda60b" + integrity sha512-qjhfuTfLXjA4IOzXvz0rTjT01BqEiIgPoUeMwiEjnaHKJMTNo8rH5pYW1a2L/0Dnux2fPC85AeyJoWaGa8WxTA== -"@typescript-eslint/typescript-estree@8.63.0": - version "8.63.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.63.0.tgz#a6f9c9cd290e98203ad29850b0d72529dc83be73" - integrity sha512-ygBkU+B7ex5UI/gKhaqexWev79uISfIv7XQCRNYO/jmD8rGLPyWLAb3KMRT6nd8Gt9bmUBi9+iX6tBdYfOY81Q== +"@typescript-eslint/typescript-estree@8.64.0": + version "8.64.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.64.0.tgz#b8d51255e2d726eb4bd80d397a4fb4170c02eecc" + integrity sha512-Pztpsn1aCE1oWDvDEfUk31nngvvF7vUB5SwHFEaZIFpvw7WJtqUHHL4plBZDA9HfWJJjL13BdG0YrJInTUvoVA== dependencies: - "@typescript-eslint/project-service" "8.63.0" - "@typescript-eslint/tsconfig-utils" "8.63.0" - "@typescript-eslint/types" "8.63.0" - "@typescript-eslint/visitor-keys" "8.63.0" + "@typescript-eslint/project-service" "8.64.0" + "@typescript-eslint/tsconfig-utils" "8.64.0" + "@typescript-eslint/types" "8.64.0" + "@typescript-eslint/visitor-keys" "8.64.0" debug "^4.4.3" minimatch "^10.2.2" semver "^7.7.3" tinyglobby "^0.2.15" ts-api-utils "^2.5.0" -"@typescript-eslint/utils@8.63.0": - version "8.63.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.63.0.tgz#b6a6c8aff1cebd1de4410b3a42b7ec9ba6703f23" - integrity sha512-fUKaeAvrTuQg/Tgt3nliAUSZHJM6DlCcfyEmxCvlX8kieWSStBX+5O5Fnidtc3i2JrH+9c/GL4RY2iasd/GPTA== +"@typescript-eslint/utils@8.64.0": + version "8.64.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.64.0.tgz#98bb2010cfb754b41985b9c93e6e8b3dcd7bd600" + integrity sha512-aJUGVB3+U0htrrCjoA8qukw8cm8fNCGAxK/tVoS70k8aeb7DETKeFozRiVFIwEeN9WJLsjaP3ph8I60tY2XZoQ== dependencies: "@eslint-community/eslint-utils" "^4.9.1" - "@typescript-eslint/scope-manager" "8.63.0" - "@typescript-eslint/types" "8.63.0" - "@typescript-eslint/typescript-estree" "8.63.0" + "@typescript-eslint/scope-manager" "8.64.0" + "@typescript-eslint/types" "8.64.0" + "@typescript-eslint/typescript-estree" "8.64.0" -"@typescript-eslint/visitor-keys@8.63.0": - version "8.63.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.63.0.tgz#2853a8e33b52f23570338f96cc89cb223daabd44" - integrity sha512-UexrHGnGTpbuQHct2ExOc2ZcFbGUS9FOesCxxqdBGcpI1BxYu/LZ6U8Aq6/72XtF/qRBk9nhuGHFJIXXMhPMdw== +"@typescript-eslint/visitor-keys@8.64.0": + version "8.64.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.64.0.tgz#7a08421d10e54960733352cd7c95fab1784e8473" + integrity sha512-mrtuL8Nsn6gi2H4mo5KMTp823M+3Q19Ew/i+Zlikq20tIMm99C3Ez0dCmkWWnxut20esQvTg8aUSEhMcAOXhEw== dependencies: - "@typescript-eslint/types" "8.63.0" + "@typescript-eslint/types" "8.64.0" eslint-visitor-keys "^5.0.0" "@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1": @@ -1390,14 +1390,14 @@ balanced-match@^4.0.2: integrity sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA== baseline-browser-mapping@^2.10.42: - version "2.10.42" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.42.tgz#195dcc76baa269a497f0b07decace169fee9ac58" - integrity sha512-c/jurFrDLyui7o1J86yLkRu4LMsTYcBohveus7/I2Hzdn9KIP2bdJPTue/lR1KH46enoPbD77GKeSYNdyPoD3Q== + version "2.10.43" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.43.tgz#7b5d11590ce5acdbe4859443e3c940e81ce8c02d" + integrity sha512-AjYpR78kDWAY3Efj+cDTFH9t9SCoL7OoTp1BOb0mQV7S+6CiLwnWM3FyxhJtdPufDFKzmCSFoUncKjWgJEZTCQ== brace-expansion@^1.1.7: - version "1.1.15" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.15.tgz#a6d90d54067236e5f42570a3b7378d594d9b7738" - integrity sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg== + version "1.1.16" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.16.tgz#723d3a30c0558c225abc9fc479a73e14e26c3c2f" + integrity sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" @@ -1417,14 +1417,14 @@ braces@^3.0.3: fill-range "^7.1.1" browserslist@^4.24.0, browserslist@^4.28.1: - version "4.28.5" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.5.tgz#438b7d38c0d4b47740bbb36778d5bdca01b37838" - integrity sha512-Cu2E6QejHWzuDMTkuwgpABFgDfZrXLQq5V13YOACZx4mFAG4IwGTbTfHPMr4WtxlHoXSM8FIuRwYYCz5XiabaQ== + version "4.28.6" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.6.tgz#7cf83afcd69c55fde6fb2dcc5039ff0f4ba42610" + integrity sha512-FQBYNK15VMslhLHpA7+n+n1GOlF1kId2xcCg7/j95f24AOF6VDYMNH4mFxF7KuaTdv627faazpOAjFzMrfJOUw== dependencies: baseline-browser-mapping "^2.10.42" - caniuse-lite "^1.0.30001800" - electron-to-chromium "^1.5.387" - node-releases "^2.0.50" + caniuse-lite "^1.0.30001803" + electron-to-chromium "^1.5.389" + node-releases "^2.0.51" update-browserslist-db "^1.2.3" bs-logger@^0.2.6: @@ -1469,10 +1469,10 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001800: - version "1.0.30001803" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001803.tgz#b2a5d696e042bc8304dcd4942c39fe330fbbcb24" - integrity sha512-g/uHREV2ZpK9qMalCsWaxmA6ol+DX8GYhuf3T40RKoP+oL7vhRJh8LNt73PCjpnR6l14FzfPrB5Yux4PKm2meg== +caniuse-lite@^1.0.30001803: + version "1.0.30001805" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001805.tgz#78d5d5968a69b7ff81af87a96d7ddc7ea6670b1e" + integrity sha512-52noaS3DubycKSXaU30TwPGIp+POyQSUVa5jBEq3vkRkY0kjyb3LQgvhU6WGyCcyXqVLWO0Cw0Q6BSdD0kUfVA== chalk@^4.0.0, chalk@^4.1.0: version "4.1.2" @@ -1696,10 +1696,10 @@ dunder-proto@^1.0.1: es-errors "^1.3.0" gopd "^1.2.0" -electron-to-chromium@^1.5.387: - version "1.5.388" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.388.tgz#002666dfda32e087c44fd01b7ce1719b6ec89c57" - integrity sha512-Pl/aJaqOOxYxda3vcx1IKSJimwYXHDkEnGn0F+kG2EE68dDtx2uCinaS+Vih8Z91B9t8CSAbiF/HKyWcnXjhzw== +electron-to-chromium@^1.5.389: + version "1.5.392" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.392.tgz#31e9f9af0d8df3d1489468a4242b173605617482" + integrity sha512-1yQq3VQCZRwsnYc67Oc+1fge6Lwtn0hzi6zmEVkB61Zx21kTbwJAW4dFLadl5Rc1tKhG/kSpYXnfiAhu0f0a1g== emittery@^0.13.1: version "0.13.1" @@ -1757,9 +1757,9 @@ es-errors@^1.3.0: integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== es-module-lexer@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-2.3.0.tgz#fda770234c345064c122eb905e1c4200ffa4ce7e" - integrity sha512-KLdwQm2NvGLDkQDCGvmiQrhkd0JbMzXthwQAUgWjQuQdBLFa3eiBP5arXZyA+f8x+x7OXgud6bq2rxjGtHV2tw== + version "2.3.1" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-2.3.1.tgz#5bf2df06999dbbe5f006a5f46a11fb9f5b7b391b" + integrity sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA== es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: version "1.1.2" @@ -1849,17 +1849,17 @@ eslint-visitor-keys@^5.0.0: integrity sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA== eslint@^9.32.0: - version "9.39.4" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.39.4.tgz#855da1b2e2ad66dc5991195f35e262bcec8117b5" - integrity sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ== + version "9.39.5" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.39.5.tgz#2a4e3c8b0f753196efae943c8ffaa8730fc6a3fa" + integrity sha512-DgZS62aPLXKlnxILS/AYCoRvHaZeXceIzlXPkkGGzJWSow1aEk0lbTlxUSlyjC8jcaKxAdOnTDz+o1JFSBsyjw== dependencies: "@eslint-community/eslint-utils" "^4.8.0" "@eslint-community/regexpp" "^4.12.1" "@eslint/config-array" "^0.21.2" "@eslint/config-helpers" "^0.4.2" "@eslint/core" "^0.17.0" - "@eslint/eslintrc" "^3.3.5" - "@eslint/js" "9.39.4" + "@eslint/eslintrc" "^3.3.6" + "@eslint/js" "9.39.5" "@eslint/plugin-kit" "^0.4.1" "@humanfs/node" "^0.16.6" "@humanwhocodes/module-importer" "^1.0.1" @@ -2259,9 +2259,9 @@ ignore@^5.2.0: integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== ignore@^7.0.5: - version "7.0.5" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-7.0.5.tgz#4cb5f6cd7d4c7ab0365738c7aea888baa6d7efd9" - integrity sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg== + version "7.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-7.0.6.tgz#6a57aaef4c90df27ac3590875d29e8f11988c88e" + integrity sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw== import-fresh@^3.2.1: version "3.3.1" @@ -2797,9 +2797,14 @@ jest@^29.7.0: import-local "^3.0.2" jest-cli "^29.7.0" +jose@^4.13.2: + version "4.15.9" + resolved "https://registry.yarnpkg.com/jose/-/jose-4.15.9.tgz#9b68eda29e9a0614c042fa29387196c7dd800100" + integrity sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA== + jose@^5.0.0: version "5.10.0" - resolved "https://registry.yarnpkg.com/jose/-/jose-5.10.0.tgz" + resolved "https://registry.yarnpkg.com/jose/-/jose-5.10.0.tgz#c37346a099d6467c401351a9a0c2161e0f52c4be" integrity sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg== js-tokens@^4.0.0: @@ -2815,7 +2820,7 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@^4.1.1: +js-yaml@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.3.0.tgz#d1900572a7f7cf0b5f540c83673e60bad3436592" integrity sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q== @@ -3181,10 +3186,10 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== -node-releases@^2.0.50: - version "2.0.50" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.50.tgz#597197a852071ce42fc2550e58e223242bcba969" - integrity sha512-J6l92tKHX6w8Jy5nO1Vuc01NoIiRGi/d6qBKVxh+IQ8Cr3b6HbVNfKiF8ZpFKufTwpwxMmce2W3iQZ861ZRyTg== +node-releases@^2.0.51: + version "2.0.51" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.51.tgz#cdc08433577f5b32ad01694481726e22eeb54aef" + integrity sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ== normalize-path@^3.0.0: version "3.0.0" @@ -3668,9 +3673,9 @@ string-width@^7.0.0: strip-ansi "^7.1.0" string-width@^8.2.0: - version "8.2.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-8.2.1.tgz#165089cfa527cc88fbc23dd73313f5e334af1ea1" - integrity sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA== + version "8.2.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-8.2.2.tgz#7310516493df575742fe98af6fae87d85d5ed0ac" + integrity sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg== dependencies: get-east-asian-width "^1.5.0" strip-ansi "^7.1.2" @@ -3741,9 +3746,9 @@ tapable@^2.3.0, tapable@^2.3.3: integrity sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A== terser@^5.31.1: - version "5.48.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.48.0.tgz#8b391171cfbb7ac4a88f9f04ba1cfabc54f643db" - integrity sha512-J/9An6vs9Us6wKRriSFXBWdRZapREHqFzdNUKk0pmu804EMR6dr6winwo7e5JDxN4xahxQsuysyYFwlwj4XN/Q== + version "5.49.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.49.0.tgz#30b341fdf70cfc98486965125ae660fda8403670" + integrity sha512-SNiDnXyHSrxVcIOtVbULzcTmniUiwcV7Nwdyj1twVubeTmbjoa8p69KKDpfkdoOavuM4/GRm1+ykI8qqnavHoA== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.15.0" @@ -3772,17 +3777,17 @@ tinyglobby@^0.2.15: fdir "^6.5.0" picomatch "^4.0.4" -tldts-core@^7.4.7: - version "7.4.7" - resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-7.4.7.tgz#d58ba7b3f67b167ebc70c2a47fef1d96532d092d" - integrity sha512-rNlAI8fKn/JckBMUSbNL/ES2kmDiurWaE49l+ikwEc9A6lFR7gMx9AhgQMQKBK4H5w4pKLH64JzZfB99uRsGNQ== +tldts-core@^7.4.8: + version "7.4.8" + resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-7.4.8.tgz#c729aee4ff9d3670741193682a98e25a3d780dd9" + integrity sha512-c1P7u0EhACHj7lPy4MJm8iTFEU8+nB0LCtddH0fhP7noaVoXAqafMtOOeX+ulpuPBqnrRgRhw494RICT3mbhnw== tldts@^7.0.5: - version "7.4.7" - resolved "https://registry.yarnpkg.com/tldts/-/tldts-7.4.7.tgz#5e48d9a31b9c538caa0179f2026f934246db2f7b" - integrity sha512-56L0/9HELHSsG1bFCzay8UoLxzRL7kpFf7Wl5q/kSYwiSJGACvro61xnKzPNM+SadxllzdtXsKDSXE7HPeqIAw== + version "7.4.8" + resolved "https://registry.yarnpkg.com/tldts/-/tldts-7.4.8.tgz#f2edc0d81483ea76c45827d642ccd535a3a7a4f7" + integrity sha512-htwgN/8KRB3z3vnC0BOETVh2m499g5GmyTK9Wq5JBLX3FNz6tSBveAd+fQhzy9hkjif8vy2jwDMR1sGhLtZl2A== dependencies: - tldts-core "^7.4.7" + tldts-core "^7.4.8" tmpl@1.0.5: version "1.0.5" @@ -3807,9 +3812,9 @@ tough-cookie@^4.1.2: url-parse "^1.5.3" tough-cookie@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-6.0.1.tgz#a495f833836609ed983c19bc65639cfbceb54c76" - integrity sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw== + version "6.0.2" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-6.0.2.tgz#7b1f22fcf2daf06c4ff9d53ec1845f44c6627062" + integrity sha512-exgYmnmL/sJpR3upZfXG5PoatXQii55xAiXGXzY+sROLZ/Y+SLcp9PgJNI9Vz37HpQ74WvDcLT8eqm+kV3FzrA== dependencies: tldts "^7.0.5" @@ -4101,9 +4106,9 @@ write-file-atomic@^4.0.2: signal-exit "^3.0.7" ws@^8.11.0: - version "8.21.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.21.0.tgz#012e413fc07429945121b0c153158c4343086951" - integrity sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g== + version "8.21.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.21.1.tgz#045650cd4b1207809e7547146223c3814a9af586" + integrity sha512-+0NTnW77fFN/DjQi6k/Sq/Yvk4Sgajw7urW8V+asjXnRgDs9gyGkdb7EzgfhA4goXsRIZKE28fzIXBHEzhuiWw== xml-name-validator@^4.0.0: version "4.0.0"