From 57059dc82f6e709c26738423e05cd2b00e543133 Mon Sep 17 00:00:00 2001 From: LekoArts Date: Thu, 27 Mar 2025 15:52:26 +0100 Subject: [PATCH 01/19] useAuth pass --- docs/CONTRIBUTING.md | 2 +- packages/react/src/isomorphicClerk.ts | 2 +- packages/types/src/hooks.ts | 6 ++++++ packages/types/src/organizationMembership.ts | 6 +++++- packages/types/src/session.ts | 5 +++++ 5 files changed, 18 insertions(+), 3 deletions(-) diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index dabfd875c5d..e4ee635cba1 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -96,7 +96,7 @@ If you want to run the `dev` script of an individual package, navigate to the fo Updating documentation is an important part of the contribution process. If you are changing existing behavior or adding a new feature, make sure [Clerk's documentation](https://github.com/clerk/clerk-docs) is also updated. -To improve the in-editor experience when using Clerk's SDKs, we do our best to add [JSDoc comments](https://jsdoc.app/about-getting-started.html) to our package's public exports. The JSDoc comments should not attempt to duplicate any existing type information, but should provide meaningful additional context or references. If you are adding a new export, make sure it has a JSDoc comment. If you are updating an existing export, make sure any existing comments are updated appropriately. +To improve the in-editor experience when using Clerk's SDKs, we do our best to add [JSDoc comments](https://jsdoc.app/about-getting-started.html) to our package's public exports. The JSDoc comments should not attempt to duplicate any existing type information, but should provide meaningful additional context or references. If you are adding a new export, make sure it has a JSDoc comment. If you are updating an existing export, make sure any existing comments are updated appropriately. When you use links inside the JSDoc comment, make sure that they are **absolute** links (e.g. `[Clerk docs](https://clerk.com/docs)`). ### Writing tests diff --git a/packages/react/src/isomorphicClerk.ts b/packages/react/src/isomorphicClerk.ts index ad7367b37b8..d8b83a2939e 100644 --- a/packages/react/src/isomorphicClerk.ts +++ b/packages/react/src/isomorphicClerk.ts @@ -614,7 +614,7 @@ export class IsomorphicClerk implements IsomorphicLoadedClerk { } }; - __experimental_nextTask = async (params: NextTaskParams): Promise => { + __experimental_nextTask = async (params?: NextTaskParams): Promise => { if (this.clerkjs) { return this.clerkjs.__experimental_nextTask(params); } else { diff --git a/packages/types/src/hooks.ts b/packages/types/src/hooks.ts index b96e493fae6..3758ad2c507 100644 --- a/packages/types/src/hooks.ts +++ b/packages/types/src/hooks.ts @@ -12,7 +12,13 @@ import type { import type { SignUpResource } from './signUp'; import type { UserResource } from './user'; +/** + * @inline + */ type CheckAuthorizationSignedOut = undefined; +/** + * @inline + */ type CheckAuthorizationWithoutOrgOrUser = (params: Parameters[0]) => false; /** diff --git a/packages/types/src/organizationMembership.ts b/packages/types/src/organizationMembership.ts index a5b6638c661..d0350ed5def 100644 --- a/packages/types/src/organizationMembership.ts +++ b/packages/types/src/organizationMembership.ts @@ -60,7 +60,11 @@ export type OrganizationCustomPermissionKey = ClerkAuthorization extends Placeho : Base['permission']; /** - * OrganizationCustomRoleKey will be string unless the developer has provided their own types through `ClerkAuthorization` + * `OrganizationCustomRoleKey` is a type that represents the user's role in an organization. It will be string unless the developer has provided their own types through [`ClerkAuthorization`](https://clerk.com/docs/guides/custom-types#example-custom-roles-and-permissions). + * + * Clerk provides the [default roles](https://clerk.com/docs/organizations/roles-permissions#default-roles) `org:admin` and `org:member`. However, you can create [custom roles](https://clerk.com/docs/organizations/create-roles-permissions) as well. + * + * @interface */ export type OrganizationCustomRoleKey = ClerkAuthorization extends Placeholder ? ClerkAuthorization['role'] extends string diff --git a/packages/types/src/session.ts b/packages/types/src/session.ts index 6c9600bc89a..121c2f86c02 100644 --- a/packages/types/src/session.ts +++ b/packages/types/src/session.ts @@ -31,8 +31,10 @@ type DisallowSystemPermissions

= P extends `${OrganizationSyst ? 'System permissions are not included in session claims and cannot be used on the server-side' : P; +/** @inline */ export type CheckAuthorizationFn = (isAuthorizedParams: Params) => boolean; +/** @inline */ export type CheckAuthorizationWithCustomPermissions = CheckAuthorizationFn; @@ -235,6 +237,9 @@ export type GetTokenOptions = { leewayInSeconds?: number; skipCache?: boolean; }; +/** + * @inline + */ export type GetToken = (options?: GetTokenOptions) => Promise; export type SessionVerifyCreateParams = { From fdc7ffac5d060c05e253151f6669b5725c20da7c Mon Sep 17 00:00:00 2001 From: LekoArts Date: Mon, 31 Mar 2025 11:43:59 +0200 Subject: [PATCH 02/19] improvements --- .typedoc/custom-plugin.mjs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/.typedoc/custom-plugin.mjs b/.typedoc/custom-plugin.mjs index f89f63c0b50..c6ec5d1a650 100644 --- a/.typedoc/custom-plugin.mjs +++ b/.typedoc/custom-plugin.mjs @@ -44,6 +44,15 @@ function getRelativeLinkReplacements() { }); } +function getUnlinkedTypesReplacements() { + return [ + { + pattern: /\(setActiveParams\)/g, + replace: '([setActiveParams](/docs/references/javascript/types/set-active-params))', + }, + ]; +} + /** * @param {import('typedoc-plugin-markdown').MarkdownApplication} app */ @@ -58,6 +67,14 @@ export function load(app) { } } + const unlinkedTypesReplacements = getUnlinkedTypesReplacements(); + + for (const { pattern, replace } of unlinkedTypesReplacements) { + if (output.contents) { + output.contents = output.contents.replace(pattern, replace); + } + } + if (fileName) { if (FILES_WITHOUT_HEADINGS.includes(fileName)) { if (output.contents) { From f947dea7c4a4a28d9c8d45a73e04ef0969869bc2 Mon Sep 17 00:00:00 2001 From: LekoArts Date: Mon, 31 Mar 2025 15:49:52 +0200 Subject: [PATCH 03/19] more improvements --- .typedoc/custom-plugin.mjs | 1 + .typedoc/custom-theme.mjs | 47 ++++++++++++++++++- packages/react/src/hooks/useAuth.ts | 2 + .../src/react/hooks/useOrganizationList.tsx | 2 +- packages/types/src/clerk.ts | 9 +++- packages/types/src/hooks.ts | 2 +- packages/types/src/signIn.ts | 1 + packages/types/src/user.ts | 9 ++++ 8 files changed, 69 insertions(+), 4 deletions(-) diff --git a/.typedoc/custom-plugin.mjs b/.typedoc/custom-plugin.mjs index c6ec5d1a650..1fbc6bb314c 100644 --- a/.typedoc/custom-plugin.mjs +++ b/.typedoc/custom-plugin.mjs @@ -26,6 +26,7 @@ const LINK_REPLACEMENTS = [ ['session-resource', '/docs/references/javascript/session'], ['signed-in-session-resource', '/docs/references/javascript/session'], ['sign-up-resource', '/docs/references/javascript/sign-up'], + ['user-resource', '/docs/references/javascript/user'], ]; /** diff --git a/.typedoc/custom-theme.mjs b/.typedoc/custom-theme.mjs index 5419766a046..a4f22d6145d 100644 --- a/.typedoc/custom-theme.mjs +++ b/.typedoc/custom-theme.mjs @@ -370,6 +370,52 @@ class ClerkMarkdownThemeContext extends MarkdownThemeContext { return `${result}`; }, + /** + * Copied from default theme / source code. This ensures that everything is wrapped in a single codeblock (not individual ones). If there are function overloads they will be split by a `; `. + * https://github.com/typedoc2md/typedoc-plugin-markdown/blob/6cde68da7bdc048aa81f0fb2467034ae675c7e60/packages/typedoc-plugin-markdown/src/theme/context/partials/type.reflection.function.ts + * @param {import('typedoc').SignatureReflection[]} model + * @param {{ forceParameterType: boolean }} [options] + */ + functionType: (model, options) => { + const functions = model.map(fn => { + const typeParams = fn.typeParameters + ? `${this.helpers.getAngleBracket('<')}${fn.typeParameters + .map(typeParameter => typeParameter.name) + .join(', ')}${this.helpers.getAngleBracket('>')}` + : ''; + const showParameterType = options?.forceParameterType || this.options.getValue('expandParameters'); + + const params = fn.parameters + ? fn.parameters.map(param => { + const paramType = this.partials.someType(/** @type {import('typedoc').SomeType} */ param.type); + const paramItem = [ + `${param.flags?.isRest ? '...' : ''}${param.name}${param.flags?.isOptional ? '?' : ''}`, + ]; + if (showParameterType) { + paramItem.push(paramType); + } + return paramItem.join(': '); + }) + : []; + const returns = this.partials.someType(/** @type {import('typedoc').SomeType} */ fn.type); + return typeParams + `(${params.join(', ')}) => ${returns}`; + }); + + const cleanOutput = functions + .map(fn => { + return ( + fn + // Remove any backticks + .replace(/`/g, '') + // Remove any `` and `` tags + .replace(//g, '') + .replace(/<\/code>/g, '') + ); + }) + .join('; '); + + return `${cleanOutput}`; + }, }; } } @@ -387,7 +433,6 @@ function heading(level, text) { /** * Create an unordered list from an array of items * @param {string[]} items - * @returns */ function unorderedList(items) { return items.map(item => `- ${item}`).join('\n'); diff --git a/packages/react/src/hooks/useAuth.ts b/packages/react/src/hooks/useAuth.ts index 1d5cca0ecc0..6f3ec8adcda 100644 --- a/packages/react/src/hooks/useAuth.ts +++ b/packages/react/src/hooks/useAuth.ts @@ -14,6 +14,8 @@ import { createGetToken, createSignOut } from './utils'; * * @param [initialAuthState] - An object containing the initial authentication state. If not provided, the hook will attempt to derive the state from the context. * + * @function + * * @example * * > [!NOTE] diff --git a/packages/shared/src/react/hooks/useOrganizationList.tsx b/packages/shared/src/react/hooks/useOrganizationList.tsx index 47d062d411d..0d85244e0f5 100644 --- a/packages/shared/src/react/hooks/useOrganizationList.tsx +++ b/packages/shared/src/react/hooks/useOrganizationList.tsx @@ -98,7 +98,7 @@ export type UseOrganizationListReturn = } | { isLoaded: boolean; - createOrganization: (params: CreateOrganizationParams) => Promise; + createOrganization: (CreateOrganizationParams: CreateOrganizationParams) => Promise; setActive: SetActive; userMemberships: PaginatedResources< OrganizationMembershipResource, diff --git a/packages/types/src/clerk.ts b/packages/types/src/clerk.ts index 005099b9b9e..ea300cb0695 100644 --- a/packages/types/src/clerk.ts +++ b/packages/types/src/clerk.ts @@ -1575,10 +1575,17 @@ export type CreateBulkOrganizationInvitationParams = { }; /** - * @inline + * Parameters for the `createOrganization()` method. + * @interface */ export interface CreateOrganizationParams { + /** + * The name of the organization. + */ name: string; + /** + * The slug of the organization. + */ slug?: string; } diff --git a/packages/types/src/hooks.ts b/packages/types/src/hooks.ts index 3758ad2c507..9fd4cf86a7c 100644 --- a/packages/types/src/hooks.ts +++ b/packages/types/src/hooks.ts @@ -226,7 +226,7 @@ export type UseUserReturn = */ isSignedIn: undefined; /** - * The [`User`](https://clerk.com/docs/references/javascript/user) object for the current user. If the user isn't signed in, `user` will be `null`. + * The `User` object for the current user. If the user isn't signed in, `user` will be `null`. */ user: undefined; } diff --git a/packages/types/src/signIn.ts b/packages/types/src/signIn.ts index 7db407f303e..6531e0a5a6b 100644 --- a/packages/types/src/signIn.ts +++ b/packages/types/src/signIn.ts @@ -72,6 +72,7 @@ import type { AuthenticateWithWeb3Params } from './web3Wallet'; /** * The `SignIn` object holds the state of the current sign-in and provides helper methods to navigate and complete the sign-in process. It is used to manage the sign-in lifecycle, including the first and second factor verification, and the creation of a new session. + * @interface */ export interface SignInResource extends ClerkResource { /** diff --git a/packages/types/src/user.ts b/packages/types/src/user.ts index 1dbfa73a147..fd33ef63c67 100644 --- a/packages/types/src/user.ts +++ b/packages/types/src/user.ts @@ -51,6 +51,15 @@ declare global { } } +/** + * The `User` object holds all of the information for a single user of your application and provides a set of methods to manage their account. Each `User` has at least one authentication [identifier](https://clerk.com/docs/authentication/configuration/sign-up-sign-in-options#identifiers), which might be their email address, phone number, or a username. + * + * A user can be contacted at their primary email address or primary phone number. They can have more than one registered email address, but only one of them will be their primary email address. This goes for phone numbers as well; a user can have more than one, but only one phone number will be their primary. At the same time, a user can also have one or more external accounts by connecting to [social providers](https://clerk.com/docs/authentication/social-connections/oauth) such as Google, Apple, Facebook, and many more. + * + * Finally, a `User` object holds profile data like the user's name, profile picture, and a set of [metadata](/docs/users/metadata) that can be used internally to store arbitrary information. The metadata are split into `publicMetadata` and `privateMetadata`. Both types are set from the [Backend API](https://clerk.com/docs/reference/backend-api){{ target: '_blank' }}, but public metadata can also be accessed from the [Frontend API](https://clerk.com/docs/reference/frontend-api){{ target: '_blank' }}. + * + * The ClerkJS SDK provides some helper [methods](#methods) on the `User` object to help retrieve and update user information and authentication status. + */ export interface UserResource extends ClerkResource { id: string; externalId: string | null; From e9e2b5e10702bd1e711900896168fd55dcb26905 Mon Sep 17 00:00:00 2001 From: LekoArts Date: Wed, 2 Apr 2025 14:34:42 +0200 Subject: [PATCH 04/19] wip --- .typedoc/custom-plugin.mjs | 7 ++- .../src/react/hooks/useOrganization.tsx | 52 ++++++++++--------- .../src/react/hooks/useOrganizationList.tsx | 25 +++++---- packages/types/src/utils.ts | 3 ++ 4 files changed, 50 insertions(+), 37 deletions(-) diff --git a/.typedoc/custom-plugin.mjs b/.typedoc/custom-plugin.mjs index 1fbc6bb314c..35ff763c033 100644 --- a/.typedoc/custom-plugin.mjs +++ b/.typedoc/custom-plugin.mjs @@ -27,6 +27,7 @@ const LINK_REPLACEMENTS = [ ['signed-in-session-resource', '/docs/references/javascript/session'], ['sign-up-resource', '/docs/references/javascript/sign-up'], ['user-resource', '/docs/references/javascript/user'], + ['session-status-claim', '/docs/references/javascript/types/session-status'], ]; /** @@ -39,7 +40,7 @@ const LINK_REPLACEMENTS = [ function getRelativeLinkReplacements() { return LINK_REPLACEMENTS.map(([fileName, newPath]) => { return { - pattern: new RegExp(`\\((?:\\.{1,2}\\/)+.*?${fileName}\\.mdx\\)`, 'g'), + pattern: new RegExp(`\\((?:\\.{1,2}\\/)+[^()]*?${fileName}\\.mdx\\)`, 'g'), replace: `(${newPath})`, }; }); @@ -51,6 +52,10 @@ function getUnlinkedTypesReplacements() { pattern: /\(setActiveParams\)/g, replace: '([setActiveParams](/docs/references/javascript/types/set-active-params))', }, + { + pattern: /`_LocalizationResource`/g, + replace: '[Localization](/docs/customization/localization)', + }, ]; } diff --git a/packages/shared/src/react/hooks/useOrganization.tsx b/packages/shared/src/react/hooks/useOrganization.tsx index 94a0fc74685..d53447cc818 100644 --- a/packages/shared/src/react/hooks/useOrganization.tsx +++ b/packages/shared/src/react/hooks/useOrganization.tsx @@ -29,47 +29,49 @@ import { usePagesOrInfinite, useWithSafeValues } from './usePagesOrInfinite'; */ export type UseOrganizationParams = { /** - * If set to `true`, all default properties will be used. - * + * If set to `true`, all default properties will be used.
* Otherwise, accepts an object with the following optional properties: - * - * - `enrollmentMode`: A string that filters the domains by the provided enrollment mode. - * - Any of the properties described in [Shared properties](#shared-properties). + *

    + *
  • `enrollmentMode`: A string that filters the domains by the provided enrollment mode.
  • + *
  • Any of the properties described in [Shared properties](#shared-properties).
  • + *
*/ domains?: true | PaginatedHookConfig; /** - * If set to `true`, all default properties will be used. Otherwise, accepts an object with the following optional properties: - * - * - `status`: A string that filters the membership requests by the provided status. - * - Any of the properties described in [Shared properties](#shared-properties). + * If set to `true`, all default properties will be used.
+ * Otherwise, accepts an object with the following optional properties: + *
    + *
  • `status`: A string that filters the membership requests by the provided status.
  • + *
  • Any of the properties described in [Shared properties](#shared-properties).
  • + *
*/ membershipRequests?: true | PaginatedHookConfig; /** - * If set to `true`, all default properties will be used. - * + * If set to `true`, all default properties will be used.
* Otherwise, accepts an object with the following optional properties: - * - * - `role`: An array of [`OrganizationCustomRoleKey`](/docs/references/javascript/types/organization-custom-role-key). - * - `query`: A string that filters the memberships by the provided string. - * - Any of the properties described in [Shared properties](#shared-properties). + *
    + *
  • `role`: An array of [`OrganizationCustomRoleKey`](https://clerk.com/docs/references/javascript/types/organization-custom-role-key).
  • + *
  • `query`: A string that filters the memberships by the provided string.
  • + *
  • Any of the properties described in [Shared properties](#shared-properties).
  • + *
*/ memberships?: true | PaginatedHookConfig; /** - * If set to `true`, all default properties will be used. - * + * If set to `true`, all default properties will be used.
* Otherwise, accepts an object with the following optional properties: - * - * - `status`: A string that filters the invitations by the provided status. - * - Any of the properties described in [Shared properties](#shared-properties). + *
    + *
  • `status`: A string that filters the invitations by the provided status.
  • + *
  • Any of the properties described in [Shared properties](#shared-properties).
  • + *
*/ invitations?: true | PaginatedHookConfig; /** - * If set to `true`, all default properties will be used. - * + * If set to `true`, all default properties will be used.
* Otherwise, accepts an object with the following optional properties: - * - * - `status`: A string that filters the subscriptions by the provided status. - * - Any of the properties described in [Shared properties](#shared-properties). + *
    + *
  • `status`: A string that filters the subscriptions by the provided status.
  • + *
  • Any of the properties described in [Shared properties](#shared-properties).
  • + *
*/ subscriptions?: true | PaginatedHookConfig<__experimental_GetSubscriptionsParams>; }; diff --git a/packages/shared/src/react/hooks/useOrganizationList.tsx b/packages/shared/src/react/hooks/useOrganizationList.tsx index 0d85244e0f5..5bc0c427b46 100644 --- a/packages/shared/src/react/hooks/useOrganizationList.tsx +++ b/packages/shared/src/react/hooks/useOrganizationList.tsx @@ -21,29 +21,32 @@ import { usePagesOrInfinite, useWithSafeValues } from './usePagesOrInfinite'; */ export type UseOrganizationListParams = { /** - * If set to `true`, all default properties will be used. - * + * If set to `true`, all default properties will be used.
* Otherwise, accepts an object with the following optional properties: * - * - Any of the properties described in [Shared properties](#shared-properties). + *
    + *
  • Any of the properties described in [Shared properties](#shared-properties).
  • + *
*/ userMemberships?: true | PaginatedHookConfig; /** - * If set to `true`, all default properties will be used. - * + * If set to `true`, all default properties will be used.
* Otherwise, accepts an object with the following optional properties: * - * - `status`: A string that filters the invitations by the provided status. - * - Any of the properties described in [Shared properties](#shared-properties). + *
    + *
  • `status`: A string that filters the invitations by the provided status.
  • + *
  • Any of the properties described in [Shared properties](#shared-properties).
  • + *
*/ userInvitations?: true | PaginatedHookConfig; /** - * If set to `true`, all default properties will be used. - * + * If set to `true`, all default properties will be used.
* Otherwise, accepts an object with the following optional properties: * - * - `status`: A string that filters the suggestions by the provided status. - * - Any of the properties described in [Shared properties](#shared-properties). + *
    + *
  • `status`: A string that filters the suggestions by the provided status.
  • + *
  • Any of the properties described in [Shared properties](#shared-properties).
  • + *
*/ userSuggestions?: true | PaginatedHookConfig; }; diff --git a/packages/types/src/utils.ts b/packages/types/src/utils.ts index ffdd18a93aa..166ce7a1e58 100644 --- a/packages/types/src/utils.ts +++ b/packages/types/src/utils.ts @@ -26,6 +26,9 @@ export type CamelToSnake = T extends `${infer C0}${infer R}` } : T; +/** + * @internal + */ export type DeepPartial = { [P in keyof T]?: T[P] extends object ? DeepPartial : T[P]; }; From b68d9e8fee78c17bdb8c9f0d1be89cad5e1296f0 Mon Sep 17 00:00:00 2001 From: LekoArts Date: Wed, 2 Apr 2025 15:38:12 +0200 Subject: [PATCH 05/19] dep update --- .typedoc/custom-theme.mjs | 31 ++++++++++++++++++++++--------- package.json | 2 +- pnpm-lock.yaml | 12 ++++++------ 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/.typedoc/custom-theme.mjs b/.typedoc/custom-theme.mjs index a4f22d6145d..b02c6c8139c 100644 --- a/.typedoc/custom-theme.mjs +++ b/.typedoc/custom-theme.mjs @@ -37,7 +37,7 @@ class ClerkMarkdownThemeContext extends MarkdownThemeContext { ...superPartials, /** * Copied from default theme / source code. This hides the return type heading over the table from the output - * https://github.com/typedoc2md/typedoc-plugin-markdown/blob/5d7c3c7fb816b6b009f3425cf284c95400f53929/packages/typedoc-plugin-markdown/src/theme/context/partials/member.signatureReturns.ts + * https://github.com/typedoc2md/typedoc-plugin-markdown/blob/9fe11dcbee410a5747427dbe0439b9b18dfce0a2/packages/typedoc-plugin-markdown/src/theme/context/partials/member.signatureReturns.ts * @param {import('typedoc').SignatureReflection} model * @param {{ headingLevel: number }} options */ @@ -84,9 +84,9 @@ class ClerkMarkdownThemeContext extends MarkdownThemeContext { }, /** * Copied from default theme / source code. This hides the "Type parameters" section and the signature title from the output - * https://github.com/typedoc2md/typedoc-plugin-markdown/blob/5d7c3c7fb816b6b009f3425cf284c95400f53929/packages/typedoc-plugin-markdown/src/theme/context/partials/member.signature.ts + * https://github.com/typedoc2md/typedoc-plugin-markdown/blob/9fe11dcbee410a5747427dbe0439b9b18dfce0a2/packages/typedoc-plugin-markdown/src/theme/context/partials/member.signature.ts * @param {import('typedoc').SignatureReflection} model - * @param {{ headingLevel: number, nested?: boolean, accessor?: string, multipleSignatures?: boolean }} options + * @param {{ headingLevel: number, nested?: boolean, accessor?: string, multipleSignatures?: boolean; hideTitle?: boolean }} options */ signature: (model, options) => { const md = []; @@ -162,7 +162,7 @@ class ClerkMarkdownThemeContext extends MarkdownThemeContext { }, /** * Copied from default theme / source code. This hides the "Type parameters" section from the output - * https://github.com/typedoc2md/typedoc-plugin-markdown/blob/5d7c3c7fb816b6b009f3425cf284c95400f53929/packages/typedoc-plugin-markdown/src/theme/context/partials/member.memberWithGroups.ts + * https://github.com/typedoc2md/typedoc-plugin-markdown/blob/9fe11dcbee410a5747427dbe0439b9b18dfce0a2/packages/typedoc-plugin-markdown/src/theme/context/partials/member.memberWithGroups.ts * @param {import('typedoc').DeclarationReflection} model * @param {{ headingLevel: number }} options */ @@ -220,10 +220,14 @@ class ClerkMarkdownThemeContext extends MarkdownThemeContext { } if ('signatures' in model && model.signatures?.length) { + const multipleSignatures = model.signatures?.length > 1; model.signatures.forEach(signature => { + if (multipleSignatures) { + md.push(heading(options.headingLevel, i18n.kind_call_signature())); + } md.push( this.partials.signature(signature, { - headingLevel: options.headingLevel, + headingLevel: multipleSignatures ? options.headingLevel + 1 : options.headingLevel, }), ); }); @@ -232,7 +236,11 @@ class ClerkMarkdownThemeContext extends MarkdownThemeContext { if (model.indexSignatures?.length) { md.push(heading(options.headingLevel, i18n.theme_indexable())); model.indexSignatures.forEach(indexSignature => { - md.push(this.partials.indexSignature(indexSignature)); + md.push( + this.partials.indexSignature(indexSignature, { + headingLevel: options.headingLevel + 1, + }), + ); }); } @@ -374,9 +382,11 @@ class ClerkMarkdownThemeContext extends MarkdownThemeContext { * Copied from default theme / source code. This ensures that everything is wrapped in a single codeblock (not individual ones). If there are function overloads they will be split by a `; `. * https://github.com/typedoc2md/typedoc-plugin-markdown/blob/6cde68da7bdc048aa81f0fb2467034ae675c7e60/packages/typedoc-plugin-markdown/src/theme/context/partials/type.reflection.function.ts * @param {import('typedoc').SignatureReflection[]} model - * @param {{ forceParameterType: boolean }} [options] + * @param {{ forceParameterType?: boolean; typeSeparator?: string }} [options] */ functionType: (model, options) => { + const shouldFormat = this.options.getValue('useCodeBlocks'); + const typeSeparator = options?.typeSeparator || ' => '; const functions = model.map(fn => { const typeParams = fn.typeParameters ? `${this.helpers.getAngleBracket('<')}${fn.typeParameters @@ -398,7 +408,10 @@ class ClerkMarkdownThemeContext extends MarkdownThemeContext { }) : []; const returns = this.partials.someType(/** @type {import('typedoc').SomeType} */ fn.type); - return typeParams + `(${params.join(', ')}) => ${returns}`; + return ( + typeParams + + `${shouldFormat && model.length > 1 ? ' ' : ''}(${params.join(', ')})${typeSeparator}${returns}` + ); }); const cleanOutput = functions @@ -412,7 +425,7 @@ class ClerkMarkdownThemeContext extends MarkdownThemeContext { .replace(/<\/code>/g, '') ); }) - .join('; '); + .join(shouldFormat ? ';\n' : '; '); return `${cleanOutput}`; }, diff --git a/package.json b/package.json index a72b6a532d0..5f23a0337b9 100644 --- a/package.json +++ b/package.json @@ -129,7 +129,7 @@ "turbo": "^2.4.4", "turbo-ignore": "^2.4.4", "typedoc": "0.28.1", - "typedoc-plugin-markdown": "4.6.0", + "typedoc-plugin-markdown": "4.6.1", "typedoc-plugin-replace-text": "4.1.0", "typescript": "catalog:repo", "typescript-eslint": "8.28.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 802b718cfc6..63a4cf42958 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -275,8 +275,8 @@ importers: specifier: 0.28.1 version: 0.28.1(typescript@5.8.2) typedoc-plugin-markdown: - specifier: 4.6.0 - version: 4.6.0(typedoc@0.28.1(typescript@5.8.2)) + specifier: 4.6.1 + version: 4.6.1(typedoc@0.28.1(typescript@5.8.2)) typedoc-plugin-replace-text: specifier: 4.1.0 version: 4.1.0(typedoc@0.28.1(typescript@5.8.2)) @@ -2963,7 +2963,7 @@ packages: '@expo/bunyan@4.0.1': resolution: {integrity: sha512-+Lla7nYSiHZirgK+U/uYzsLv/X+HaJienbD5AKX1UQZHYfWaP+9uuQluRB4GrEVWF0GZ7vEVp/jzaOT9k/SQlg==} - engines: {node: '>=0.10.0'} + engines: {'0': node >=0.10.0} '@expo/cli@0.22.22': resolution: {integrity: sha512-sOttVuk/8gdnsiSeDpnRNpLgBJHLbyQQC0QBGd2iHpr/x6xSYpgoRO6AqwAwGtQsk4ZEPZ83ulvccei1IIPdwg==} @@ -13449,8 +13449,8 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} - typedoc-plugin-markdown@4.6.0: - resolution: {integrity: sha512-RG90uC1QqGN9kPBjzEckEf0v9yIYlLoNYKm4OqjwEGFJJGOLUDs5pIEQQDR2tAv1RD7D8GUSakRlcHMTipyaOA==} + typedoc-plugin-markdown@4.6.1: + resolution: {integrity: sha512-SrJv9zkpCWdG1cvtWniFU6M7MkCZuheN2R3fuqDPF+O+PeZ8bzmfj1ju/BJwoPWIKyFJVPhK8Sg6tBrM1y+VoA==} engines: {node: '>= 18'} peerDependencies: typedoc: 0.28.x @@ -30232,7 +30232,7 @@ snapshots: possible-typed-array-names: 1.0.0 reflect.getprototypeof: 1.0.10 - typedoc-plugin-markdown@4.6.0(typedoc@0.28.1(typescript@5.8.2)): + typedoc-plugin-markdown@4.6.1(typedoc@0.28.1(typescript@5.8.2)): dependencies: typedoc: 0.28.1(typescript@5.8.2) From 4f126b1a0a46acd6051bf9c91e05bf5ff8ce82b9 Mon Sep 17 00:00:00 2001 From: LekoArts Date: Fri, 4 Apr 2025 12:55:22 +0200 Subject: [PATCH 06/19] add missing inline --- packages/types/src/organizationInvitation.ts | 3 +++ packages/types/src/organizationSuggestion.ts | 3 +++ 2 files changed, 6 insertions(+) diff --git a/packages/types/src/organizationInvitation.ts b/packages/types/src/organizationInvitation.ts index 8873faf1495..53047a6b562 100644 --- a/packages/types/src/organizationInvitation.ts +++ b/packages/types/src/organizationInvitation.ts @@ -28,4 +28,7 @@ export interface OrganizationInvitationResource extends ClerkResource { revoke: () => Promise; } +/** + * @inline + */ export type OrganizationInvitationStatus = 'pending' | 'accepted' | 'revoked'; diff --git a/packages/types/src/organizationSuggestion.ts b/packages/types/src/organizationSuggestion.ts index a9ad427e16e..bfdf7814c21 100644 --- a/packages/types/src/organizationSuggestion.ts +++ b/packages/types/src/organizationSuggestion.ts @@ -1,5 +1,8 @@ import type { ClerkResource } from './resource'; +/** + * @inline + */ export type OrganizationSuggestionStatus = 'pending' | 'accepted'; export interface OrganizationSuggestionResource extends ClerkResource { From 59bd888860df291eea6c0c5b3f232daa5e7c5b25 Mon Sep 17 00:00:00 2001 From: LekoArts Date: Mon, 7 Apr 2025 15:38:36 +0200 Subject: [PATCH 07/19] update typedoc version --- package.json | 2 +- pnpm-lock.yaml | 301 +++++++++++++++++++++++-------------------------- 2 files changed, 144 insertions(+), 159 deletions(-) diff --git a/package.json b/package.json index 5f23a0337b9..3661d352612 100644 --- a/package.json +++ b/package.json @@ -128,7 +128,7 @@ "tsup": "catalog:repo", "turbo": "^2.4.4", "turbo-ignore": "^2.4.4", - "typedoc": "0.28.1", + "typedoc": "0.28.2", "typedoc-plugin-markdown": "4.6.1", "typedoc-plugin-replace-text": "4.1.0", "typescript": "catalog:repo", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7f8519c7b27..e03bd76307b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -102,7 +102,7 @@ importers: version: 10.1.0 '@testing-library/jest-dom': specifier: ^6.4.6 - version: 6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)))(vitest@3.0.5(@edge-runtime/vm@5.0.0)(@types/debug@4.1.12)(@types/node@22.13.14)(jiti@2.4.2)(jsdom@24.1.3)(lightningcss@1.27.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) + version: 6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)))(vitest@3.0.5(@edge-runtime/vm@5.0.0)(@types/debug@4.1.12)(@types/node@22.13.14)(jiti@2.4.2)(jsdom@24.1.3)(lightningcss@1.27.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1)) '@testing-library/react': specifier: ^16.0.0 version: 16.0.0(@testing-library/dom@10.1.0)(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -126,7 +126,7 @@ importers: version: 18.3.5(@types/react@18.3.20) '@vitest/coverage-v8': specifier: 3.0.2 - version: 3.0.2(vitest@3.0.5(@edge-runtime/vm@5.0.0)(@types/debug@4.1.12)(@types/node@22.13.14)(jiti@2.4.2)(jsdom@24.1.3)(lightningcss@1.27.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) + version: 3.0.2(vitest@3.0.5(@edge-runtime/vm@5.0.0)(@types/debug@4.1.12)(@types/node@22.13.14)(jiti@2.4.2)(jsdom@24.1.3)(lightningcss@1.27.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1)) chalk: specifier: 4.1.2 version: 4.1.2 @@ -264,7 +264,7 @@ importers: version: 29.2.5(@babel/core@7.26.9)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.9))(esbuild@0.25.0)(jest@29.7.0(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)))(typescript@5.8.2) tsup: specifier: catalog:repo - version: 8.4.0(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.7.1) turbo: specifier: ^2.4.4 version: 2.4.4 @@ -272,14 +272,14 @@ importers: specifier: ^2.4.4 version: 2.4.4 typedoc: - specifier: 0.28.1 - version: 0.28.1(typescript@5.8.2) + specifier: 0.28.2 + version: 0.28.2(typescript@5.8.2) typedoc-plugin-markdown: specifier: 4.6.1 - version: 4.6.1(typedoc@0.28.1(typescript@5.8.2)) + version: 4.6.1(typedoc@0.28.2(typescript@5.8.2)) typedoc-plugin-replace-text: specifier: 4.1.0 - version: 4.1.0(typedoc@0.28.1(typescript@5.8.2)) + version: 4.1.0(typedoc@0.28.2(typescript@5.8.2)) typescript: specifier: catalog:repo version: 5.8.2 @@ -294,7 +294,7 @@ importers: version: 5.33.0(typanion@3.14.0) vitest: specifier: 3.0.5 - version: 3.0.5(@edge-runtime/vm@5.0.0)(@types/debug@4.1.12)(@types/node@22.13.14)(jiti@2.4.2)(jsdom@24.1.3)(lightningcss@1.27.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + version: 3.0.5(@edge-runtime/vm@5.0.0)(@types/debug@4.1.12)(@types/node@22.13.14)(jiti@2.4.2)(jsdom@24.1.3)(lightningcss@1.27.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) yalc: specifier: 1.0.0-pre.53 version: 1.0.0-pre.53(patch_hash=nepk7g7jbppq422nppscin4xqm) @@ -353,7 +353,7 @@ importers: devDependencies: astro: specifier: ^5.5.5 - version: 5.5.5(@types/node@22.13.14)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(rollup@4.36.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.7.0) + version: 5.5.5(@types/node@22.13.14)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(rollup@4.36.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.7.1) packages/backend: dependencies: @@ -387,7 +387,7 @@ importers: version: 1.62.0 vitest-environment-miniflare: specifier: 2.14.4 - version: 2.14.4(vitest@3.0.5(@edge-runtime/vm@5.0.0)(@types/debug@4.1.12)(@types/node@22.13.14)(jiti@2.4.2)(jsdom@24.1.3)(lightningcss@1.27.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) + version: 2.14.4(vitest@3.0.5(@edge-runtime/vm@5.0.0)(@types/debug@4.1.12)(@types/node@22.13.14)(jiti@2.4.2)(jsdom@24.1.3)(lightningcss@1.27.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1)) packages/chrome-extension: dependencies: @@ -771,7 +771,7 @@ importers: devDependencies: nuxt: specifier: ^3.16.1 - version: 3.16.1(@parcel/watcher@2.5.1)(@types/node@22.13.14)(db0@0.3.1)(eslint@9.23.0(jiti@2.4.2))(ioredis@5.6.0)(lightningcss@1.27.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.36.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))(vue-tsc@2.2.8(typescript@5.8.2))(yaml@2.7.0) + version: 3.16.1(@parcel/watcher@2.5.1)(@types/node@22.13.14)(db0@0.3.1)(eslint@9.23.0(jiti@2.4.2))(ioredis@5.6.0)(lightningcss@1.27.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.36.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1))(vue-tsc@2.2.8(typescript@5.8.2))(yaml@2.7.1) typescript: specifier: catalog:repo version: 5.8.2 @@ -950,7 +950,7 @@ importers: version: 1.114.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/react-start': specifier: ^1.114.29 - version: 1.114.31(@tanstack/react-router@1.114.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))(webpack@5.94.0(esbuild@0.25.0))(yaml@2.7.0) + version: 1.114.31(@tanstack/react-router@1.114.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1))(webpack@5.94.0(esbuild@0.25.0))(yaml@2.7.1) esbuild-plugin-file-path-extensions: specifier: ^2.1.4 version: 2.1.4 @@ -1073,13 +1073,13 @@ importers: version: 8.1.0(@vue/compiler-sfc@3.5.13)(vue@3.5.13(typescript@5.8.2)) '@vitejs/plugin-vue': specifier: ^5.2.3 - version: 5.2.3(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)) + version: 5.2.3(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1))(vue@3.5.13(typescript@5.8.2)) '@vue.ts/tsx-auto-props': specifier: ^0.6.0 version: 0.6.0(rollup@4.36.0)(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2)) unplugin-vue: specifier: ^5.2.1 - version: 5.2.1(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(vue@3.5.13(typescript@5.8.2))(yaml@2.7.0) + version: 5.2.1(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(vue@3.5.13(typescript@5.8.2))(yaml@2.7.1) vue: specifier: 3.5.13 version: 3.5.13(typescript@5.8.2) @@ -2966,7 +2966,7 @@ packages: '@expo/bunyan@4.0.1': resolution: {integrity: sha512-+Lla7nYSiHZirgK+U/uYzsLv/X+HaJienbD5AKX1UQZHYfWaP+9uuQluRB4GrEVWF0GZ7vEVp/jzaOT9k/SQlg==} - engines: {'0': node >=0.10.0} + engines: {node: '>=0.10.0'} '@expo/cli@0.22.22': resolution: {integrity: sha512-sOttVuk/8gdnsiSeDpnRNpLgBJHLbyQQC0QBGd2iHpr/x6xSYpgoRO6AqwAwGtQsk4ZEPZ83ulvccei1IIPdwg==} @@ -3104,8 +3104,8 @@ packages: '@formkit/auto-animate@0.8.2': resolution: {integrity: sha512-SwPWfeRa5veb1hOIBMdzI+73te5puUBHmqqaF1Bu7FjvxlYSz/kJcZKSa9Cg60zL0uRNeJL2SbRxV6Jp6Q1nFQ==} - '@gerrit0/mini-shiki@3.2.1': - resolution: {integrity: sha512-HbzRC6MKB6U8kQhczz0APKPIzFHTrcqhaC7es2EXInq1SpjPVnpVSIsBe6hNoLWqqCx1n5VKiPXq6PfXnHZKOQ==} + '@gerrit0/mini-shiki@3.2.2': + resolution: {integrity: sha512-vaZNGhGLKMY14HbF53xxHNgFO9Wz+t5lTlGNpl2N9xFiKQ0I5oIe0vKjU9dh7Nb3Dw6lZ7wqUE0ri+zcdpnK+Q==} '@hapi/hoek@9.3.0': resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} @@ -3442,82 +3442,66 @@ packages: '@miniflare/cache@2.14.4': resolution: {integrity: sha512-ayzdjhcj+4mjydbNK7ZGDpIXNliDbQY4GPcY2KrYw0v1OSUdj5kZUkygD09fqoGRfAks0d91VelkyRsAXX8FQA==} engines: {node: '>=16.13'} - deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 '@miniflare/core@2.14.4': resolution: {integrity: sha512-FMmZcC1f54YpF4pDWPtdQPIO8NXfgUxCoR9uyrhxKJdZu7M6n8QKopPVNuaxR40jcsdxb7yKoQoFWnHfzJD9GQ==} engines: {node: '>=16.13'} - deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 '@miniflare/d1@2.14.4': resolution: {integrity: sha512-pMBVq9XWxTDdm+RRCkfXZP+bREjPg1JC8s8C0JTovA9OGmLQXqGTnFxIaS9vf1d8k3uSUGhDzPTzHr0/AUW1gA==} engines: {node: '>=16.7'} - deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 '@miniflare/durable-objects@2.14.4': resolution: {integrity: sha512-+JrmHP6gHHrjxV8S3axVw5lGHLgqmAGdcO/1HJUPswAyJEd3Ah2YnKhpo+bNmV4RKJCtEq9A2hbtVjBTD2YzwA==} engines: {node: '>=16.13'} - deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 '@miniflare/html-rewriter@2.14.4': resolution: {integrity: sha512-GB/vZn7oLbnhw+815SGF+HU5EZqSxbhIa3mu2L5MzZ2q5VOD5NHC833qG8c2GzDPhIaZ99ITY+ZJmbR4d+4aNQ==} engines: {node: '>=16.13'} - deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 '@miniflare/kv@2.14.4': resolution: {integrity: sha512-QlERH0Z+klwLg0xw+/gm2yC34Nnr/I0GcQ+ASYqXeIXBwjqOtMBa3YVQnocaD+BPy/6TUtSpOAShHsEj76R2uw==} engines: {node: '>=16.13'} - deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 '@miniflare/queues@2.14.4': resolution: {integrity: sha512-aXQ5Ik8Iq1KGMBzGenmd6Js/jJgqyYvjom95/N9GptCGpiVWE5F0XqC1SL5rCwURbHN+aWY191o8XOFyY2nCUA==} engines: {node: '>=16.7'} - deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 '@miniflare/r2@2.14.4': resolution: {integrity: sha512-4ctiZWh7Ty7LB3brUjmbRiGMqwyDZgABYaczDtUidblo2DxX4JZPnJ/ZAyxMPNJif32kOJhcg6arC2hEthR9Sw==} engines: {node: '>=16.13'} - deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 '@miniflare/runner-vm@2.14.4': resolution: {integrity: sha512-Nog0bB9SVhPbZAkTWfO4lpLAUsBXKEjlb4y+y66FJw77mPlmPlVdpjElCvmf8T3VN/pqh83kvELGM+/fucMf4g==} engines: {node: '>=16.13'} - deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 '@miniflare/shared-test-environment@2.14.4': resolution: {integrity: sha512-FdU2/8wEd00vIu+MfofLiHcfZWz+uCbE2VTL85KpyYfBsNGAbgRtzFMpOXdoXLqQfRu6MBiRwWpb2FbMrBzi7g==} engines: {node: '>=16.13'} - deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 '@miniflare/shared@2.14.4': resolution: {integrity: sha512-upl4RSB3hyCnITOFmRZjJj4A72GmkVrtfZTilkdq5Qe5TTlzsjVeDJp7AuNUM9bM8vswRo+N5jOiot6O4PVwwQ==} engines: {node: '>=16.13'} - deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 '@miniflare/sites@2.14.4': resolution: {integrity: sha512-O5npWopi+fw9W9Ki0gy99nuBbgDva/iXy8PDC4dAXDB/pz45nISDqldabk0rL2t4W2+lY6LXKzdOw+qJO1GQTA==} engines: {node: '>=16.13'} - deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 '@miniflare/storage-file@2.14.4': resolution: {integrity: sha512-JxcmX0hXf4cB0cC9+s6ZsgYCq+rpyUKRPCGzaFwymWWplrO3EjPVxKCcMxG44jsdgsII6EZihYUN2J14wwCT7A==} engines: {node: '>=16.13'} - deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 '@miniflare/storage-memory@2.14.4': resolution: {integrity: sha512-9jB5BqNkMZ3SFjbPFeiVkLi1BuSahMhc/W1Y9H0W89qFDrrD+z7EgRgDtHTG1ZRyi9gIlNtt9qhkO1B6W2qb2A==} engines: {node: '>=16.13'} - deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 '@miniflare/watcher@2.14.4': resolution: {integrity: sha512-PYn05ET2USfBAeXF6NZfWl0O32KVyE8ncQ/ngysrh3hoIV7l3qGGH7ubeFx+D8VWQ682qYhwGygUzQv2j1tGGg==} engines: {node: '>=16.13'} - deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 '@miniflare/web-sockets@2.14.4': resolution: {integrity: sha512-stTxvLdJ2IcGOs76AnvGYAzGvx8JvQPRxC5DW0P5zdAAnhL33noqb5LKdPt3P37BKp9FzBKZHuihQI9oVqwm0g==} engines: {node: '>=16.13'} - deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 '@modelcontextprotocol/sdk@1.7.0': resolution: {integrity: sha512-IYPe/FLpvF3IZrd/f5p5ffmWhMc3aEMuM2wGJASDqC2Ge7qatVCdbfPx3n/5xFeb19xN0j/911M2AaFuircsWA==} @@ -13478,8 +13462,8 @@ packages: peerDependencies: typedoc: 0.26.x || 0.27.x - typedoc@0.28.1: - resolution: {integrity: sha512-Mn2VPNMaxoe/hlBiLriG4U55oyAa3Xo+8HbtEwV7F5WEOPXqtxzGuMZhJYHaqFJpajeQ6ZDUC2c990NAtTbdgw==} + typedoc@0.28.2: + resolution: {integrity: sha512-9Giuv+eppFKnJ0oi+vxqLM817b/IrIsEMYgy3jj6zdvppAfDqV3d6DXL2vXUg2TnlL62V48th25Zf/tcQKAJdg==} engines: {node: '>= 18', pnpm: '>= 10'} hasBin: true peerDependencies: @@ -14047,7 +14031,6 @@ packages: vitest-environment-miniflare@2.14.4: resolution: {integrity: sha512-DzwQWdY42sVYR6aUndw9FdCtl/i0oh3NkbkQpw+xq5aYQw5eiJn5kwnKaKQEWaoBe8Cso71X2i1EJGvi1jZ2xw==} engines: {node: '>=16.13'} - deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 peerDependencies: vitest: '>=0.23.0' @@ -14486,8 +14469,8 @@ packages: resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} engines: {node: '>= 14'} - yaml@2.7.0: - resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} + yaml@2.7.1: + resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==} engines: {node: '>= 14'} hasBin: true @@ -16916,9 +16899,11 @@ snapshots: '@formkit/auto-animate@0.8.2': {} - '@gerrit0/mini-shiki@3.2.1': + '@gerrit0/mini-shiki@3.2.2': dependencies: '@shikijs/engine-oniguruma': 3.2.1 + '@shikijs/langs': 3.2.1 + '@shikijs/themes': 3.2.1 '@shikijs/types': 3.2.1 '@shikijs/vscode-textmate': 10.0.2 @@ -17615,12 +17600,12 @@ snapshots: '@nuxt/devalue@2.0.2': {} - '@nuxt/devtools-kit@2.3.1(magicast@0.3.5)(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))': + '@nuxt/devtools-kit@2.3.1(magicast@0.3.5)(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1))': dependencies: '@nuxt/kit': 3.16.1(magicast@0.3.5) '@nuxt/schema': 3.16.1 execa: 8.0.1 - vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) transitivePeerDependencies: - magicast @@ -17635,12 +17620,12 @@ snapshots: prompts: 2.4.2 semver: 7.7.1 - '@nuxt/devtools@2.3.1(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2))': + '@nuxt/devtools@2.3.1(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1))(vue@3.5.13(typescript@5.8.2))': dependencies: - '@nuxt/devtools-kit': 2.3.1(magicast@0.3.5)(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) + '@nuxt/devtools-kit': 2.3.1(magicast@0.3.5)(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1)) '@nuxt/devtools-wizard': 2.3.1 '@nuxt/kit': 3.16.1(magicast@0.3.5) - '@vue/devtools-core': 7.7.2(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)) + '@vue/devtools-core': 7.7.2(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1))(vue@3.5.13(typescript@5.8.2)) '@vue/devtools-kit': 7.7.2 birpc: 2.2.0 consola: 3.4.2 @@ -17665,9 +17650,9 @@ snapshots: sirv: 3.0.1 structured-clone-es: 1.0.0 tinyglobby: 0.2.12 - vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) - vite-plugin-inspect: 11.0.0(@nuxt/kit@3.16.1(magicast@0.3.5))(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) - vite-plugin-vue-tracer: 0.1.1(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)) + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) + vite-plugin-inspect: 11.0.0(@nuxt/kit@3.16.1(magicast@0.3.5))(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1)) + vite-plugin-vue-tracer: 0.1.1(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1))(vue@3.5.13(typescript@5.8.2)) which: 5.0.0 ws: 8.18.1 transitivePeerDependencies: @@ -17727,12 +17712,12 @@ snapshots: transitivePeerDependencies: - magicast - '@nuxt/vite-builder@3.16.1(@types/node@22.13.14)(eslint@9.23.0(jiti@2.4.2))(lightningcss@1.27.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.36.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(vue-tsc@2.2.8(typescript@5.8.2))(vue@3.5.13(typescript@5.8.2))(yaml@2.7.0)': + '@nuxt/vite-builder@3.16.1(@types/node@22.13.14)(eslint@9.23.0(jiti@2.4.2))(lightningcss@1.27.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.36.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(vue-tsc@2.2.8(typescript@5.8.2))(vue@3.5.13(typescript@5.8.2))(yaml@2.7.1)': dependencies: '@nuxt/kit': 3.16.1(magicast@0.3.5) '@rollup/plugin-replace': 6.0.2(rollup@4.36.0) - '@vitejs/plugin-vue': 5.2.3(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)) - '@vitejs/plugin-vue-jsx': 4.1.2(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)) + '@vitejs/plugin-vue': 5.2.3(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1))(vue@3.5.13(typescript@5.8.2)) + '@vitejs/plugin-vue-jsx': 4.1.2(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1))(vue@3.5.13(typescript@5.8.2)) autoprefixer: 10.4.21(postcss@8.5.3) consola: 3.4.2 cssnano: 7.0.6(postcss@8.5.3) @@ -17758,9 +17743,9 @@ snapshots: ufo: 1.5.4 unenv: 2.0.0-rc.15 unplugin: 2.2.2 - vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) - vite-node: 3.0.9(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) - vite-plugin-checker: 0.9.1(eslint@9.23.0(jiti@2.4.2))(optionator@0.9.4)(typescript@5.8.2)(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))(vue-tsc@2.2.8(typescript@5.8.2)) + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) + vite-node: 3.0.9(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) + vite-plugin-checker: 0.9.1(eslint@9.23.0(jiti@2.4.2))(optionator@0.9.4)(typescript@5.8.2)(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1))(vue-tsc@2.2.8(typescript@5.8.2)) vue: 3.5.13(typescript@5.8.2) vue-bundle-renderer: 2.1.1 transitivePeerDependencies: @@ -18124,7 +18109,7 @@ snapshots: semver: 7.7.1 strip-ansi: 5.2.0 wcwidth: 1.0.1 - yaml: 2.7.0 + yaml: 2.7.1 transitivePeerDependencies: - encoding @@ -19028,7 +19013,7 @@ snapshots: '@swc/counter': 0.1.3 tslib: 2.8.1 - '@tanstack/directive-functions-plugin@1.114.30(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)': + '@tanstack/directive-functions-plugin@1.114.30(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1)': dependencies: '@babel/code-frame': 7.26.2 '@babel/core': 7.26.9 @@ -19041,7 +19026,7 @@ snapshots: babel-dead-code-elimination: 1.0.10 dedent: 1.5.3(babel-plugin-macros@3.1.0) tiny-invariant: 1.3.3 - vite: 6.1.2(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + vite: 6.1.2(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -19070,7 +19055,7 @@ snapshots: tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - '@tanstack/react-start-client@1.114.29(@types/node@22.13.14)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.7.0)': + '@tanstack/react-start-client@1.114.29(@types/node@22.13.14)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.7.1)': dependencies: '@tanstack/react-router': 1.114.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/router-core': 1.114.29 @@ -19081,7 +19066,7 @@ snapshots: react-dom: 18.3.1(react@18.3.1) tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - vinxi: 0.5.3(@types/node@22.13.14)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.7.0) + vinxi: 0.5.3(@types/node@22.13.14)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.7.1) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -19125,22 +19110,22 @@ snapshots: - xml2js - yaml - '@tanstack/react-start-config@1.114.31(@tanstack/react-router@1.114.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))(webpack@5.94.0(esbuild@0.25.0))(yaml@2.7.0)': + '@tanstack/react-start-config@1.114.31(@tanstack/react-router@1.114.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1))(webpack@5.94.0(esbuild@0.25.0))(yaml@2.7.1)': dependencies: - '@tanstack/react-start-plugin': 1.114.30(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + '@tanstack/react-start-plugin': 1.114.30(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) '@tanstack/router-core': 1.114.29 '@tanstack/router-generator': 1.114.29(@tanstack/react-router@1.114.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) - '@tanstack/router-plugin': 1.114.31(@tanstack/react-router@1.114.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))(webpack@5.94.0(esbuild@0.25.0)) - '@tanstack/server-functions-plugin': 1.114.30(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + '@tanstack/router-plugin': 1.114.31(@tanstack/react-router@1.114.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1))(webpack@5.94.0(esbuild@0.25.0)) + '@tanstack/server-functions-plugin': 1.114.30(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) '@tanstack/start-server-functions-handler': 1.114.29 - '@vitejs/plugin-react': 4.3.4(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) + '@vitejs/plugin-react': 4.3.4(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1)) import-meta-resolve: 4.1.0 nitropack: 2.11.7(typescript@5.8.2) ofetch: 1.4.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - vinxi: 0.5.3(@types/node@22.13.14)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.7.0) - vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + vinxi: 0.5.3(@types/node@22.13.14)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.7.1) + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) zod: 3.24.2 transitivePeerDependencies: - '@azure/app-configuration' @@ -19190,7 +19175,7 @@ snapshots: - xml2js - yaml - '@tanstack/react-start-plugin@1.114.30(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)': + '@tanstack/react-start-plugin@1.114.30(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1)': dependencies: '@babel/code-frame': 7.26.2 '@babel/core': 7.26.9 @@ -19202,7 +19187,7 @@ snapshots: '@tanstack/router-utils': 1.114.29 babel-dead-code-elimination: 1.0.10 tiny-invariant: 1.3.3 - vite: 6.1.2(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + vite: 6.1.2(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) transitivePeerDependencies: - '@types/node' - jiti @@ -19217,11 +19202,11 @@ snapshots: - tsx - yaml - '@tanstack/react-start-router-manifest@1.114.29(@types/node@22.13.14)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.7.0)': + '@tanstack/react-start-router-manifest@1.114.29(@types/node@22.13.14)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.7.1)': dependencies: '@tanstack/router-core': 1.114.29 tiny-invariant: 1.3.3 - vinxi: 0.5.3(@types/node@22.13.14)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.7.0) + vinxi: 0.5.3(@types/node@22.13.14)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.7.1) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -19280,20 +19265,20 @@ snapshots: tiny-warning: 1.0.3 unctx: 2.4.1 - '@tanstack/react-start@1.114.31(@tanstack/react-router@1.114.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))(webpack@5.94.0(esbuild@0.25.0))(yaml@2.7.0)': + '@tanstack/react-start@1.114.31(@tanstack/react-router@1.114.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1))(webpack@5.94.0(esbuild@0.25.0))(yaml@2.7.1)': dependencies: - '@tanstack/react-start-client': 1.114.29(@types/node@22.13.14)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.7.0) - '@tanstack/react-start-config': 1.114.31(@tanstack/react-router@1.114.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))(webpack@5.94.0(esbuild@0.25.0))(yaml@2.7.0) - '@tanstack/react-start-router-manifest': 1.114.29(@types/node@22.13.14)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.7.0) + '@tanstack/react-start-client': 1.114.29(@types/node@22.13.14)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.7.1) + '@tanstack/react-start-config': 1.114.31(@tanstack/react-router@1.114.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1))(webpack@5.94.0(esbuild@0.25.0))(yaml@2.7.1) + '@tanstack/react-start-router-manifest': 1.114.29(@types/node@22.13.14)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.7.1) '@tanstack/react-start-server': 1.114.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@tanstack/start-api-routes': 1.114.29(@types/node@22.13.14)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.7.0) - '@tanstack/start-server-functions-client': 1.114.30(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + '@tanstack/start-api-routes': 1.114.29(@types/node@22.13.14)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.7.1) + '@tanstack/start-server-functions-client': 1.114.30(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) '@tanstack/start-server-functions-handler': 1.114.29 - '@tanstack/start-server-functions-server': 1.114.30(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) - '@tanstack/start-server-functions-ssr': 1.114.30(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + '@tanstack/start-server-functions-server': 1.114.30(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) + '@tanstack/start-server-functions-ssr': 1.114.30(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -19364,7 +19349,7 @@ snapshots: optionalDependencies: '@tanstack/react-router': 1.114.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@tanstack/router-plugin@1.114.31(@tanstack/react-router@1.114.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))(webpack@5.94.0(esbuild@0.25.0))': + '@tanstack/router-plugin@1.114.31(@tanstack/react-router@1.114.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1))(webpack@5.94.0(esbuild@0.25.0))': dependencies: '@babel/core': 7.26.9 '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.9) @@ -19385,7 +19370,7 @@ snapshots: zod: 3.24.2 optionalDependencies: '@tanstack/react-router': 1.114.29(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) webpack: 5.94.0(esbuild@0.25.0) transitivePeerDependencies: - supports-color @@ -19397,7 +19382,7 @@ snapshots: ansis: 3.16.0 diff: 7.0.0 - '@tanstack/server-functions-plugin@1.114.30(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)': + '@tanstack/server-functions-plugin@1.114.30(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1)': dependencies: '@babel/code-frame': 7.26.2 '@babel/core': 7.26.9 @@ -19406,7 +19391,7 @@ snapshots: '@babel/template': 7.26.9 '@babel/traverse': 7.26.9 '@babel/types': 7.26.9 - '@tanstack/directive-functions-plugin': 1.114.30(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + '@tanstack/directive-functions-plugin': 1.114.30(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) babel-dead-code-elimination: 1.0.10 dedent: 1.5.3(babel-plugin-macros@3.1.0) tiny-invariant: 1.3.3 @@ -19425,11 +19410,11 @@ snapshots: - tsx - yaml - '@tanstack/start-api-routes@1.114.29(@types/node@22.13.14)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.7.0)': + '@tanstack/start-api-routes@1.114.29(@types/node@22.13.14)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.7.1)': dependencies: '@tanstack/router-core': 1.114.29 '@tanstack/start-server-core': 1.114.29 - vinxi: 0.5.3(@types/node@22.13.14)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.7.0) + vinxi: 0.5.3(@types/node@22.13.14)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.7.1) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -19491,9 +19476,9 @@ snapshots: tiny-warning: 1.0.3 unctx: 2.4.1 - '@tanstack/start-server-functions-client@1.114.30(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)': + '@tanstack/start-server-functions-client@1.114.30(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1)': dependencies: - '@tanstack/server-functions-plugin': 1.114.30(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + '@tanstack/server-functions-plugin': 1.114.30(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) '@tanstack/start-server-functions-fetcher': 1.114.29 transitivePeerDependencies: - '@types/node' @@ -19522,9 +19507,9 @@ snapshots: '@tanstack/start-server-core': 1.114.29 tiny-invariant: 1.3.3 - '@tanstack/start-server-functions-server@1.114.30(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)': + '@tanstack/start-server-functions-server@1.114.30(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1)': dependencies: - '@tanstack/server-functions-plugin': 1.114.30(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + '@tanstack/server-functions-plugin': 1.114.30(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) tiny-invariant: 1.3.3 transitivePeerDependencies: - '@types/node' @@ -19541,9 +19526,9 @@ snapshots: - tsx - yaml - '@tanstack/start-server-functions-ssr@1.114.30(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)': + '@tanstack/start-server-functions-ssr@1.114.30(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1)': dependencies: - '@tanstack/server-functions-plugin': 1.114.30(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + '@tanstack/server-functions-plugin': 1.114.30(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) '@tanstack/start-client-core': 1.114.29 '@tanstack/start-server-core': 1.114.29 '@tanstack/start-server-functions-fetcher': 1.114.29 @@ -19589,7 +19574,7 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 - '@testing-library/jest-dom@6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)))(vitest@3.0.5(@edge-runtime/vm@5.0.0)(@types/debug@4.1.12)(@types/node@22.13.14)(jiti@2.4.2)(jsdom@24.1.3)(lightningcss@1.27.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))': + '@testing-library/jest-dom@6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)))(vitest@3.0.5(@edge-runtime/vm@5.0.0)(@types/debug@4.1.12)(@types/node@22.13.14)(jiti@2.4.2)(jsdom@24.1.3)(lightningcss@1.27.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1))': dependencies: '@adobe/css-tools': 4.4.0 '@babel/runtime': 7.26.0 @@ -19603,7 +19588,7 @@ snapshots: '@jest/globals': 29.7.0 '@types/jest': 29.5.12 jest: 29.7.0(@types/node@22.13.14)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)) - vitest: 3.0.5(@edge-runtime/vm@5.0.0)(@types/debug@4.1.12)(@types/node@22.13.14)(jiti@2.4.2)(jsdom@24.1.3)(lightningcss@1.27.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + vitest: 3.0.5(@edge-runtime/vm@5.0.0)(@types/debug@4.1.12)(@types/node@22.13.14)(jiti@2.4.2)(jsdom@24.1.3)(lightningcss@1.27.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) '@testing-library/react@16.0.0(@testing-library/dom@10.1.0)(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: @@ -20284,33 +20269,33 @@ snapshots: untun: 0.1.3 uqr: 0.1.2 - '@vitejs/plugin-react@4.3.4(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))': + '@vitejs/plugin-react@4.3.4(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1))': dependencies: '@babel/core': 7.26.9 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.9) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.9) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue-jsx@4.1.2(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2))': + '@vitejs/plugin-vue-jsx@4.1.2(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1))(vue@3.5.13(typescript@5.8.2))': dependencies: '@babel/core': 7.26.9 '@babel/plugin-transform-typescript': 7.26.8(@babel/core@7.26.9) '@vue/babel-plugin-jsx': 1.2.5(@babel/core@7.26.9) - vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) vue: 3.5.13(typescript@5.8.2) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.2.3(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2))': + '@vitejs/plugin-vue@5.2.3(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1))(vue@3.5.13(typescript@5.8.2))': dependencies: - vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) vue: 3.5.13(typescript@5.8.2) - '@vitest/coverage-v8@3.0.2(vitest@3.0.5(@edge-runtime/vm@5.0.0)(@types/debug@4.1.12)(@types/node@22.13.14)(jiti@2.4.2)(jsdom@24.1.3)(lightningcss@1.27.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))': + '@vitest/coverage-v8@3.0.2(vitest@3.0.5(@edge-runtime/vm@5.0.0)(@types/debug@4.1.12)(@types/node@22.13.14)(jiti@2.4.2)(jsdom@24.1.3)(lightningcss@1.27.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -20324,7 +20309,7 @@ snapshots: std-env: 3.8.1 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.0.5(@edge-runtime/vm@5.0.0)(@types/debug@4.1.12)(@types/node@22.13.14)(jiti@2.4.2)(jsdom@24.1.3)(lightningcss@1.27.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + vitest: 3.0.5(@edge-runtime/vm@5.0.0)(@types/debug@4.1.12)(@types/node@22.13.14)(jiti@2.4.2)(jsdom@24.1.3)(lightningcss@1.27.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) transitivePeerDependencies: - supports-color @@ -20335,14 +20320,14 @@ snapshots: chai: 5.1.2 tinyrainbow: 2.0.0 - '@vitest/mocker@3.0.5(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))': + '@vitest/mocker@3.0.5(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1))': dependencies: '@vitest/spy': 3.0.5 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: msw: 2.7.3(@types/node@22.13.14)(typescript@5.8.2) - vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) '@vitest/pretty-format@3.0.5': dependencies: @@ -20500,14 +20485,14 @@ snapshots: '@vue/devtools-api@6.6.4': {} - '@vue/devtools-core@7.7.2(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2))': + '@vue/devtools-core@7.7.2(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1))(vue@3.5.13(typescript@5.8.2))': dependencies: '@vue/devtools-kit': 7.7.2 '@vue/devtools-shared': 7.7.2 mitt: 3.0.1 nanoid: 5.0.9 pathe: 2.0.3 - vite-hot-client: 0.2.4(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) + vite-hot-client: 0.2.4(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1)) vue: 3.5.13(typescript@5.8.2) transitivePeerDependencies: - vite @@ -21015,7 +21000,7 @@ snapshots: astral-regex@2.0.0: {} - astro@5.5.5(@types/node@22.13.14)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(rollup@4.36.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.7.0): + astro@5.5.5(@types/node@22.13.14)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(rollup@4.36.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.7.1): dependencies: '@astrojs/compiler': 2.11.0 '@astrojs/internal-helpers': 0.6.1 @@ -21066,8 +21051,8 @@ snapshots: unist-util-visit: 5.0.0 unstorage: 1.15.0(db0@0.3.1)(ioredis@5.6.0) vfile: 6.0.3 - vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) - vitefu: 1.0.6(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) + vitefu: 1.0.6(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1)) xxhash-wasm: 1.1.0 yargs-parser: 21.1.1 yocto-spinner: 0.2.1 @@ -27314,15 +27299,15 @@ snapshots: nullthrows@1.1.1: {} - nuxt@3.16.1(@parcel/watcher@2.5.1)(@types/node@22.13.14)(db0@0.3.1)(eslint@9.23.0(jiti@2.4.2))(ioredis@5.6.0)(lightningcss@1.27.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.36.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))(vue-tsc@2.2.8(typescript@5.8.2))(yaml@2.7.0): + nuxt@3.16.1(@parcel/watcher@2.5.1)(@types/node@22.13.14)(db0@0.3.1)(eslint@9.23.0(jiti@2.4.2))(ioredis@5.6.0)(lightningcss@1.27.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.36.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1))(vue-tsc@2.2.8(typescript@5.8.2))(yaml@2.7.1): dependencies: '@nuxt/cli': 3.23.1(magicast@0.3.5) '@nuxt/devalue': 2.0.2 - '@nuxt/devtools': 2.3.1(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)) + '@nuxt/devtools': 2.3.1(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1))(vue@3.5.13(typescript@5.8.2)) '@nuxt/kit': 3.16.1(magicast@0.3.5) '@nuxt/schema': 3.16.1 '@nuxt/telemetry': 2.6.6(magicast@0.3.5) - '@nuxt/vite-builder': 3.16.1(@types/node@22.13.14)(eslint@9.23.0(jiti@2.4.2))(lightningcss@1.27.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.36.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(vue-tsc@2.2.8(typescript@5.8.2))(vue@3.5.13(typescript@5.8.2))(yaml@2.7.0) + '@nuxt/vite-builder': 3.16.1(@types/node@22.13.14)(eslint@9.23.0(jiti@2.4.2))(lightningcss@1.27.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.36.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(vue-tsc@2.2.8(typescript@5.8.2))(vue@3.5.13(typescript@5.8.2))(yaml@2.7.1) '@oxc-parser/wasm': 0.60.0 '@unhead/vue': 2.0.0-rc.13(vue@3.5.13(typescript@5.8.2)) '@vue/shared': 3.5.13 @@ -28053,14 +28038,14 @@ snapshots: dependencies: postcss: 8.5.3 - postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.2)(yaml@2.7.0): + postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.2)(yaml@2.7.1): dependencies: lilconfig: 3.1.2 optionalDependencies: jiti: 2.4.2 postcss: 8.5.3 tsx: 4.19.2 - yaml: 2.7.0 + yaml: 2.7.1 postcss-merge-longhand@7.0.4(postcss@8.5.3): dependencies: @@ -30128,7 +30113,7 @@ snapshots: tsscmp@1.0.6: {} - tsup@8.4.0(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.7.0): + tsup@8.4.0(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.7.1): dependencies: bundle-require: 5.1.0(esbuild@0.25.0) cac: 6.7.14 @@ -30138,7 +30123,7 @@ snapshots: esbuild: 0.25.0 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.2)(yaml@2.7.0) + postcss-load-config: 6.0.1(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.2)(yaml@2.7.1) resolve-from: 5.0.0 rollup: 4.36.0 source-map: 0.8.0-beta.0 @@ -30275,22 +30260,22 @@ snapshots: possible-typed-array-names: 1.0.0 reflect.getprototypeof: 1.0.10 - typedoc-plugin-markdown@4.6.1(typedoc@0.28.1(typescript@5.8.2)): + typedoc-plugin-markdown@4.6.1(typedoc@0.28.2(typescript@5.8.2)): dependencies: - typedoc: 0.28.1(typescript@5.8.2) + typedoc: 0.28.2(typescript@5.8.2) - typedoc-plugin-replace-text@4.1.0(typedoc@0.28.1(typescript@5.8.2)): + typedoc-plugin-replace-text@4.1.0(typedoc@0.28.2(typescript@5.8.2)): dependencies: - typedoc: 0.28.1(typescript@5.8.2) + typedoc: 0.28.2(typescript@5.8.2) - typedoc@0.28.1(typescript@5.8.2): + typedoc@0.28.2(typescript@5.8.2): dependencies: - '@gerrit0/mini-shiki': 3.2.1 + '@gerrit0/mini-shiki': 3.2.2 lunr: 2.3.9 markdown-it: 14.1.0 minimatch: 9.0.5 typescript: 5.8.2 - yaml: 2.7.0 + yaml: 2.7.1 typescript-eslint@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2): dependencies: @@ -30500,18 +30485,18 @@ snapshots: scule: 1.3.0 unplugin: 2.2.2 unplugin-utils: 0.2.4 - yaml: 2.7.0 + yaml: 2.7.1 optionalDependencies: vue-router: 4.5.0(vue@3.5.13(typescript@5.8.2)) transitivePeerDependencies: - vue - unplugin-vue@5.2.1(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(vue@3.5.13(typescript@5.8.2))(yaml@2.7.0): + unplugin-vue@5.2.1(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(vue@3.5.13(typescript@5.8.2))(yaml@2.7.1): dependencies: '@vue/reactivity': 3.5.13 debug: 4.4.0(supports-color@8.1.1) unplugin: 1.16.1 - vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) vue: 3.5.13(typescript@5.8.2) transitivePeerDependencies: - '@types/node' @@ -30758,7 +30743,7 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vinxi@0.5.3(@types/node@22.13.14)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.7.0): + vinxi@0.5.3(@types/node@22.13.14)(db0@0.3.1)(ioredis@5.6.0)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(typescript@5.8.2)(yaml@2.7.1): dependencies: '@babel/core': 7.26.9 '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.9) @@ -30792,7 +30777,7 @@ snapshots: unctx: 2.4.1 unenv: 1.10.0 unstorage: 1.15.0(db0@0.3.1)(ioredis@5.6.0) - vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) zod: 3.24.2 transitivePeerDependencies: - '@azure/app-configuration' @@ -30837,27 +30822,27 @@ snapshots: - xml2js - yaml - vite-dev-rpc@1.0.7(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)): + vite-dev-rpc@1.0.7(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1)): dependencies: birpc: 2.2.0 - vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) - vite-hot-client: 2.0.4(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) + vite-hot-client: 2.0.4(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1)) - vite-hot-client@0.2.4(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)): + vite-hot-client@0.2.4(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1)): dependencies: - vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) - vite-hot-client@2.0.4(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)): + vite-hot-client@2.0.4(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1)): dependencies: - vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) - vite-node@3.0.5(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0): + vite-node@3.0.5(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1): dependencies: cac: 6.7.14 debug: 4.4.0(supports-color@8.1.1) es-module-lexer: 1.6.0 pathe: 2.0.3 - vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) transitivePeerDependencies: - '@types/node' - jiti @@ -30872,13 +30857,13 @@ snapshots: - tsx - yaml - vite-node@3.0.9(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0): + vite-node@3.0.9(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1): dependencies: cac: 6.7.14 debug: 4.4.0(supports-color@8.1.1) es-module-lexer: 1.6.0 pathe: 2.0.3 - vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) transitivePeerDependencies: - '@types/node' - jiti @@ -30893,7 +30878,7 @@ snapshots: - tsx - yaml - vite-plugin-checker@0.9.1(eslint@9.23.0(jiti@2.4.2))(optionator@0.9.4)(typescript@5.8.2)(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))(vue-tsc@2.2.8(typescript@5.8.2)): + vite-plugin-checker@0.9.1(eslint@9.23.0(jiti@2.4.2))(optionator@0.9.4)(typescript@5.8.2)(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1))(vue-tsc@2.2.8(typescript@5.8.2)): dependencies: '@babel/code-frame': 7.26.2 chokidar: 4.0.3 @@ -30903,7 +30888,7 @@ snapshots: strip-ansi: 7.1.0 tiny-invariant: 1.3.3 tinyglobby: 0.2.12 - vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) vscode-uri: 3.1.0 optionalDependencies: eslint: 9.23.0(jiti@2.4.2) @@ -30911,7 +30896,7 @@ snapshots: typescript: 5.8.2 vue-tsc: 2.2.8(typescript@5.8.2) - vite-plugin-inspect@11.0.0(@nuxt/kit@3.16.1(magicast@0.3.5))(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)): + vite-plugin-inspect@11.0.0(@nuxt/kit@3.16.1(magicast@0.3.5))(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1)): dependencies: ansis: 3.16.0 debug: 4.4.0(supports-color@8.1.1) @@ -30921,23 +30906,23 @@ snapshots: perfect-debounce: 1.0.0 sirv: 3.0.1 unplugin-utils: 0.2.4 - vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) - vite-dev-rpc: 1.0.7(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) + vite-dev-rpc: 1.0.7(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1)) optionalDependencies: '@nuxt/kit': 3.16.1(magicast@0.3.5) transitivePeerDependencies: - supports-color - vite-plugin-vue-tracer@0.1.1(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)): + vite-plugin-vue-tracer@0.1.1(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1))(vue@3.5.13(typescript@5.8.2)): dependencies: estree-walker: 3.0.3 magic-string: 0.30.17 pathe: 2.0.3 source-map-js: 1.2.1 - vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) vue: 3.5.13(typescript@5.8.2) - vite@6.1.2(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0): + vite@6.1.2(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1): dependencies: esbuild: 0.24.2 postcss: 8.5.3 @@ -30949,9 +30934,9 @@ snapshots: lightningcss: 1.27.0 terser: 5.37.0 tsx: 4.19.2 - yaml: 2.7.0 + yaml: 2.7.1 - vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0): + vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1): dependencies: esbuild: 0.25.0 postcss: 8.5.3 @@ -30963,28 +30948,28 @@ snapshots: lightningcss: 1.27.0 terser: 5.37.0 tsx: 4.19.2 - yaml: 2.7.0 + yaml: 2.7.1 - vitefu@1.0.6(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)): + vitefu@1.0.6(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1)): optionalDependencies: - vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) - vitest-environment-miniflare@2.14.4(vitest@3.0.5(@edge-runtime/vm@5.0.0)(@types/debug@4.1.12)(@types/node@22.13.14)(jiti@2.4.2)(jsdom@24.1.3)(lightningcss@1.27.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)): + vitest-environment-miniflare@2.14.4(vitest@3.0.5(@edge-runtime/vm@5.0.0)(@types/debug@4.1.12)(@types/node@22.13.14)(jiti@2.4.2)(jsdom@24.1.3)(lightningcss@1.27.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1)): dependencies: '@miniflare/queues': 2.14.4 '@miniflare/runner-vm': 2.14.4 '@miniflare/shared': 2.14.4 '@miniflare/shared-test-environment': 2.14.4 undici: 5.28.4 - vitest: 3.0.5(@edge-runtime/vm@5.0.0)(@types/debug@4.1.12)(@types/node@22.13.14)(jiti@2.4.2)(jsdom@24.1.3)(lightningcss@1.27.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + vitest: 3.0.5(@edge-runtime/vm@5.0.0)(@types/debug@4.1.12)(@types/node@22.13.14)(jiti@2.4.2)(jsdom@24.1.3)(lightningcss@1.27.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) transitivePeerDependencies: - bufferutil - utf-8-validate - vitest@3.0.5(@edge-runtime/vm@5.0.0)(@types/debug@4.1.12)(@types/node@22.13.14)(jiti@2.4.2)(jsdom@24.1.3)(lightningcss@1.27.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0): + vitest@3.0.5(@edge-runtime/vm@5.0.0)(@types/debug@4.1.12)(@types/node@22.13.14)(jiti@2.4.2)(jsdom@24.1.3)(lightningcss@1.27.0)(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1): dependencies: '@vitest/expect': 3.0.5 - '@vitest/mocker': 3.0.5(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) + '@vitest/mocker': 3.0.5(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1)) '@vitest/pretty-format': 3.0.5 '@vitest/runner': 3.0.5 '@vitest/snapshot': 3.0.5 @@ -31000,8 +30985,8 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 2.0.0 - vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) - vite-node: 3.0.5(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) + vite-node: 3.0.5(@types/node@22.13.14)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) why-is-node-running: 2.3.0 optionalDependencies: '@edge-runtime/vm': 5.0.0 @@ -31470,13 +31455,13 @@ snapshots: dependencies: eslint-visitor-keys: 3.4.3 lodash: 4.17.21 - yaml: 2.7.0 + yaml: 2.7.1 yaml@1.10.2: {} yaml@2.3.1: {} - yaml@2.7.0: {} + yaml@2.7.1: {} yargs-parser@18.1.3: dependencies: From bcaba2e15b813c09bc18391644093119acf1c267 Mon Sep 17 00:00:00 2001 From: LekoArts Date: Mon, 7 Apr 2025 15:44:20 +0200 Subject: [PATCH 08/19] fix blockTags --- packages/backend/src/tokens/types.ts | 4 ++-- packages/clerk-js/src/core/errors.ts | 2 +- .../elements/src/internals/machines/form/form.context.ts | 6 +++--- packages/elements/src/react/sign-in/action/resend.tsx | 5 ++++- packages/elements/src/react/sign-up/action/resend.tsx | 5 ++++- packages/nextjs/src/app-router/server/auth.ts | 8 ++++---- packages/nextjs/src/server/createGetAuth.ts | 4 ++-- packages/shared/src/error.ts | 3 --- typedoc.config.mjs | 2 +- 9 files changed, 21 insertions(+), 18 deletions(-) diff --git a/packages/backend/src/tokens/types.ts b/packages/backend/src/tokens/types.ts index 3fb22480e39..12da5acdeff 100644 --- a/packages/backend/src/tokens/types.ts +++ b/packages/backend/src/tokens/types.ts @@ -57,8 +57,8 @@ export type OrganizationSyncOptions = { * * Patterns must have a path parameter named either `:id` (to match a Clerk organization ID) or `:slug` (to match a Clerk organization slug). * - * @warning - * If the organization can't be activated—either because it doesn't exist or the user lacks access—the previously active organization will remain unchanged. Components must detect this case and provide an appropriate error and/or resolution pathway, such as calling `notFound()` or displaying an [``](https://clerk.com/docs/components/organization/organization-switcher). + * > [!WARNING] + * > If the organization can't be activated—either because it doesn't exist or the user lacks access—the previously active organization will remain unchanged. Components must detect this case and provide an appropriate error and/or resolution pathway, such as calling `notFound()` or displaying an [``](https://clerk.com/docs/components/organization/organization-switcher). * * @example * ["/orgs/:slug", "/orgs/:slug/(.*)"] diff --git a/packages/clerk-js/src/core/errors.ts b/packages/clerk-js/src/core/errors.ts index 33609f0287e..3a589781565 100644 --- a/packages/clerk-js/src/core/errors.ts +++ b/packages/clerk-js/src/core/errors.ts @@ -3,10 +3,10 @@ const errorPrefix = 'ClerkJS:'; /** * Used to log a warning when a Clerk feature is used in an unsupported environment. * (Development Only) + * This is a warning and not an error because the application will still work, but the feature will not be available. * * @param strategy The strategy that is not supported in the current environment. * @returns void - * @note This is a warning and not an error because the application will still work, but the feature will not be available. */ export function clerkUnsupportedEnvironmentWarning(strategy: string) { console.warn(`${errorPrefix} ${strategy} is not supported in this environment.`); diff --git a/packages/elements/src/internals/machines/form/form.context.ts b/packages/elements/src/internals/machines/form/form.context.ts index 6a8781bd463..43948935e66 100644 --- a/packages/elements/src/internals/machines/form/form.context.ts +++ b/packages/elements/src/internals/machines/form/form.context.ts @@ -34,9 +34,9 @@ type MapValue = A extends Map ? V : never; /** * Selects field-specific feedback, if they exist * - * @note We declare an explicit return type here because TypeScript's inference results in the subtype reduction of the - * union used for feedback. Explicitly declaring the return type allows for all members of the union to be - * included in the return type. + * We declare an explicit return type here because TypeScript's inference results in the subtype reduction of the + * union used for feedback. Explicitly declaring the return type allows for all members of the union to be + * included in the return type. */ export const fieldFeedbackSelector = (name: string | undefined) => diff --git a/packages/elements/src/react/sign-in/action/resend.tsx b/packages/elements/src/react/sign-in/action/resend.tsx index 251d58f3908..2e186168de3 100644 --- a/packages/elements/src/react/sign-in/action/resend.tsx +++ b/packages/elements/src/react/sign-in/action/resend.tsx @@ -25,11 +25,14 @@ const SIGN_IN_RESEND_NAME = 'SignInResend'; * Resend verification codes during the sign-in process. * This component must be used within the . * - * @note This component is not intended to be used directly. Instead, use the component. + * > [!NOTE] + * > This component is not intended to be used directly. Instead, use the `` component. * * @example + * ```tsx * import { Action } from '@clerk/elements/sign-in'; *

Resendable in: {resendableAfter}s

}>Resend
; + * ``` */ export const SignInResend = React.forwardRef( ({ asChild, fallback, ...rest }, forwardedRef) => { diff --git a/packages/elements/src/react/sign-up/action/resend.tsx b/packages/elements/src/react/sign-up/action/resend.tsx index 7eb7f775d11..4d75fe04db9 100644 --- a/packages/elements/src/react/sign-up/action/resend.tsx +++ b/packages/elements/src/react/sign-up/action/resend.tsx @@ -25,11 +25,14 @@ const SIGN_UP_RESEND_NAME = 'SignUpResend'; * Resend verification codes during the sign-in process. * This component must be used within the . * - * @note This component is not intended to be used directly. Instead, use the component. + * > [!NOTE] + * > This component is not intended to be used directly. Instead, use the `` component. * * @example + * ```tsx * import { Action } from '@clerk/elements/sign-in'; *

Resendable in: {resendableAfter}s

}>Resend
; + * ``` */ export const SignUpResend = React.forwardRef( ({ asChild, fallback, ...rest }, forwardedRef) => { diff --git a/packages/nextjs/src/app-router/server/auth.ts b/packages/nextjs/src/app-router/server/auth.ts index 1fa1859b3ea..3bfe14a1dd8 100644 --- a/packages/nextjs/src/app-router/server/auth.ts +++ b/packages/nextjs/src/app-router/server/auth.ts @@ -21,8 +21,8 @@ type Auth = AuthObject & { * * @param [returnBackUrl] {string | URL} - The URL to redirect the user back to after they sign in. * - * @note - * `auth()` on the server-side can only access redirect URLs defined via [environment variables](https://clerk.com/docs/deployments/clerk-environment-variables#sign-in-and-sign-up-redirects) or [`clerkMiddleware` dynamic keys](https://clerk.com/docs/references/nextjs/clerk-middleware#dynamic-keys). + * > [!NOTE] + * > `auth()` on the server-side can only access redirect URLs defined via [environment variables](https://clerk.com/docs/deployments/clerk-environment-variables#sign-in-and-sign-up-redirects) or [`clerkMiddleware` dynamic keys](https://clerk.com/docs/references/nextjs/clerk-middleware#dynamic-keys). */ redirectToSignIn: RedirectFun>; }; @@ -43,8 +43,8 @@ export interface AuthFn { * | Yes | No | Return a `404` error. | * | No | No | Redirect the user to the sign-in page\*. | * - * @important - * \*For non-document requests, such as API requests, `auth.protect()` returns a `404` error to users who aren't authenticated. + * > [!IMPORTANT] + * > \*For non-document requests, such as API requests, `auth.protect()` returns a `404` error to users who aren't authenticated. * * `auth.protect()` can be used to check if a user is authenticated or authorized to access certain parts of your application or even entire routes. See detailed examples in the [dedicated guide](https://clerk.com/docs/organizations/verify-user-permissions). */ diff --git a/packages/nextjs/src/server/createGetAuth.ts b/packages/nextjs/src/server/createGetAuth.ts index 86c3f83b8e0..56edce21415 100644 --- a/packages/nextjs/src/server/createGetAuth.ts +++ b/packages/nextjs/src/server/createGetAuth.ts @@ -75,8 +75,8 @@ export const createSyncGetAuth = ({ /** * The `getAuth()` helper retrieves authentication state from the request object. * - * @note - * If you are using App Router, use the [`auth()` helper](https://clerk.com/docs/references/nextjs/auth) instead. + * > [!NOTE] + * > If you are using App Router, use the [`auth()` helper](https://clerk.com/docs/references/nextjs/auth) instead. * * @param req - The Next.js request object. * @param [options] - An optional object that can be used to configure the behavior of the `getAuth()` function. diff --git a/packages/shared/src/error.ts b/packages/shared/src/error.ts index e908e1ddf78..ef87aa4b259 100644 --- a/packages/shared/src/error.ts +++ b/packages/shared/src/error.ts @@ -164,7 +164,6 @@ export class ClerkRuntimeError extends Error { * The error message. * * @type {string} - * @memberof ClerkRuntimeError */ message: string; @@ -172,7 +171,6 @@ export class ClerkRuntimeError extends Error { * A unique code identifying the error, can be used for localization. * * @type {string} - * @memberof ClerkRuntimeError */ code: string; @@ -195,7 +193,6 @@ export class ClerkRuntimeError extends Error { * Returns a string representation of the error. * * @returns {string} A formatted string with the error name and message. - * @memberof ClerkRuntimeError */ public toString = () => { return `[${this.name}]\nMessage:${this.message}`; diff --git a/typedoc.config.mjs b/typedoc.config.mjs index 53778f7a5e2..cbe273970ad 100644 --- a/typedoc.config.mjs +++ b/typedoc.config.mjs @@ -95,7 +95,7 @@ const config = { excludeInternal: true, excludeNotDocumented: true, gitRevision: 'main', - blockTags: [...OptionDefaults.blockTags, '@warning', '@note', '@important', '@memberof'], + blockTags: [...OptionDefaults.blockTags], modifierTags: [...OptionDefaults.modifierTags], exclude: ['src/**/*.test.ts', 'src/**/*.test.tsx'], readme: 'none', From 8f93fc314d5ee4f73340662ffce5fedd2acddeed Mon Sep 17 00:00:00 2001 From: LekoArts Date: Mon, 7 Apr 2025 16:01:20 +0200 Subject: [PATCH 09/19] flatten output directories --- .typedoc/custom-router.mjs | 38 ++++++++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/.typedoc/custom-router.mjs b/.typedoc/custom-router.mjs index 29b9cfd2fda..97cf8acef8d 100644 --- a/.typedoc/custom-router.mjs +++ b/.typedoc/custom-router.mjs @@ -1,6 +1,18 @@ // @ts-check import { MemberRouter } from 'typedoc-plugin-markdown'; +/** + * From a filepath divided by `/` only keep the first and last part + * @param {string} filePath + */ +function flattenDirName(filePath) { + const parts = filePath.split('/'); + if (parts.length > 2) { + return `${parts[0]}/${parts[parts.length - 1]}`; + } + return filePath; +} + /** * @param {string} str */ @@ -27,8 +39,16 @@ class ClerkRouter extends MemberRouter { const pages = super.buildPages(project); const modifiedPages = pages - // Do not output README files - .filter(page => !page.url.toLocaleLowerCase().endsWith('readme.mdx')); + /** + * Do not output README files + * They can be `readme.mdx` or `readme-1.mdx` & `readme-2.mdx` etc. + */ + .filter(page => { + const isExactMatch = page.url.toLocaleLowerCase().endsWith('readme.mdx'); + const isMatchWithNumber = page.url.toLocaleLowerCase().match(/readme-\d+\.mdx$/); + + return !(isExactMatch || isMatchWithNumber); + }); return modifiedPages; } @@ -42,13 +62,15 @@ class ClerkRouter extends MemberRouter { let filePath = toKebabCase(original); /** - * For the `@clerk/shared` package it outputs the hooks as for example: shared/react/hooks/use-clerk/functions/use-clerk.mdx. - * It also places the interfaces as shared/react/hooks/use-organization/interfaces/use-organization-return.mdx - * Group all those .mdx files under shared/react/hooks + * By default, the paths are deeply nested, e.g.: + * - clerk-react/functions/use-clerk + * - shared/react/hooks/use-user + * + * This should be flattened to: + * - clerk-react/use-clerk + * - shared/use-user */ - if (filePath.includes('shared/react/hooks')) { - filePath = filePath.replace(/\/[^/]+\/(functions|interfaces)\//, '/'); - } + filePath = flattenDirName(filePath); return filePath; } From 72036b1f92c1c35ce2acd7091344e38cab04bef7 Mon Sep 17 00:00:00 2001 From: LekoArts Date: Tue, 8 Apr 2025 10:58:00 +0200 Subject: [PATCH 10/19] adjust script --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3661d352612..0f7ec8310bb 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "test:integration:tanstack-react-start": "E2E_APP_ID=tanstack.react-start pnpm test:integration:base --grep @tanstack-react-start", "test:integration:vue": "E2E_APP_ID=vue.vite pnpm test:integration:base --grep @vue", "turbo:clean": "turbo daemon clean", - "typedoc:generate": "pnpm build:declarations && typedoc --tsconfig tsconfig.typedoc.json", + "typedoc:generate": "typedoc --tsconfig tsconfig.typedoc.json", "version-packages": "changeset version && pnpm install --lockfile-only --engine-strict=false", "version-packages:canary": "./scripts/canary.mjs", "version-packages:snapshot": "./scripts/snapshot.mjs", From d0a439810c589c0bd0fa40c540e2fce53c3884e4 Mon Sep 17 00:00:00 2001 From: LekoArts Date: Wed, 9 Apr 2025 12:14:50 +0200 Subject: [PATCH 11/19] output updates --- .typedoc/custom-plugin.mjs | 12 ++++++++++-- packages/react/src/hooks/useAuth.ts | 5 ++++- packages/types/src/session.ts | 3 +++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/.typedoc/custom-plugin.mjs b/.typedoc/custom-plugin.mjs index 35ff763c033..13ab9297822 100644 --- a/.typedoc/custom-plugin.mjs +++ b/.typedoc/custom-plugin.mjs @@ -36,12 +36,20 @@ const LINK_REPLACEMENTS = [ * It also shouldn't matter how level deep the relative link is. * * This function returns an array of `{ pattern: string, replace: string }` to pass into the `typedoc-plugin-replace-text` plugin. + * + * @example + * [foo](../../bar.mdx) -> [foo](/new-path) + * [foo](./bar.mdx) -> [foo](/new-path) + * [foo](bar.mdx) -> [foo](/new-path) + * [foo](bar.mdx#some-id) -> [foo](/new-path#some-id) */ function getRelativeLinkReplacements() { return LINK_REPLACEMENTS.map(([fileName, newPath]) => { return { - pattern: new RegExp(`\\((?:\\.{1,2}\\/)+[^()]*?${fileName}\\.mdx\\)`, 'g'), - replace: `(${newPath})`, + // Match both path and optional anchor + pattern: new RegExp(`\\((?:(?:\\.{1,2}\\/)+[^()]*?|)${fileName}\\.mdx(#[^)]+)?\\)`, 'g'), + // Preserve the anchor in replacement if it exists + replace: (/** @type {string} */ _match, anchor = '') => `(${newPath}${anchor})`, }; }); } diff --git a/packages/react/src/hooks/useAuth.ts b/packages/react/src/hooks/useAuth.ts index 0fe3055b0e7..9282175f2f3 100644 --- a/packages/react/src/hooks/useAuth.ts +++ b/packages/react/src/hooks/useAuth.ts @@ -18,6 +18,9 @@ import { createGetToken, createSignOut } from './utils'; type Nullish = T | undefined | null; type InitialAuthState = Record; +/** + * @inline + */ type UseAuthOptions = Nullish; /** @@ -27,7 +30,7 @@ type UseAuthOptions = Nullish; * By default, Next.js opts all routes into static rendering. If you need to opt a route or routes into dynamic rendering because you need to access the authentication data at request time, you can create a boundary by passing the `dynamic` prop to ``. See the [guide on rendering modes](https://clerk.com/docs/references/nextjs/rendering-modes) for more information, including code examples. * * - * @param [initialAuthState] - An object containing the initial authentication state. If not provided, the hook will attempt to derive the state from the context. + * @param [initialAuthStateOrOptions] - An object containing the initial authentication state. If not provided, the hook will attempt to derive the state from the context. * * @function * diff --git a/packages/types/src/session.ts b/packages/types/src/session.ts index 731d471421c..2aa60e190e1 100644 --- a/packages/types/src/session.ts +++ b/packages/types/src/session.ts @@ -27,6 +27,9 @@ import type { SessionJSONSnapshot } from './snapshots'; import type { TokenResource } from './token'; import type { UserResource } from './user'; +/** + * @inline + */ export type PendingSessionOptions = { /** * Determines if pending sessions are considered as signed-out state. From 34d659a77cd3a40d563134685ff8276477bb451c Mon Sep 17 00:00:00 2001 From: LekoArts Date: Wed, 9 Apr 2025 14:50:59 +0200 Subject: [PATCH 12/19] add tests --- .github/workflows/ci.yml | 13 +- .../__snapshots__/file-structure.test.ts.snap | 127 ++++++++++++++++++ .typedoc/__tests__/file-structure.test.ts | 65 +++++++++ package.json | 1 + 4 files changed, 205 insertions(+), 1 deletion(-) create mode 100644 .typedoc/__tests__/__snapshots__/file-structure.test.ts.snap create mode 100644 .typedoc/__tests__/file-structure.test.ts diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 33e5ec0c6f9..551a42c84a1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -141,7 +141,7 @@ jobs: turbo-team: ${{ vars.TURBO_TEAM }} turbo-token: ${{ secrets.TURBO_TOKEN }} - - name: Run tests + - name: Run tests in packages run: | if [ "${{ matrix.node-version }}" == "18" ]; then echo "Running tests on Node 18 only for packages with LTS support." @@ -152,6 +152,17 @@ jobs: fi env: NODE_VERSION: ${{ matrix.node-version }} + + - name: Run Typedoc tests + run: | + # Only run Typedoc tests for one matrix version + if [ "${{ matrix.node-version }}" == "22" ]; then + pnpm build:declarations + pnpm typedoc:generate + pnpm test:typedoc + fi + env: + NODE_VERSION: ${{ matrix.node-version }} - name: Upload Turbo Summary uses: actions/upload-artifact@v4 diff --git a/.typedoc/__tests__/__snapshots__/file-structure.test.ts.snap b/.typedoc/__tests__/__snapshots__/file-structure.test.ts.snap new file mode 100644 index 00000000000..40ac8d42900 --- /dev/null +++ b/.typedoc/__tests__/__snapshots__/file-structure.test.ts.snap @@ -0,0 +1,127 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`Typedoc output > should have a deliberate file structure 1`] = ` +[ + "types/act-claim.mdx", + "types/act-jwt-claim.mdx", + "types/active-session-resource.mdx", + "types/check-authorization-fn.mdx", + "types/check-authorization-from-session-claims.mdx", + "types/check-authorization-with-custom-permissions.mdx", + "types/clerk-api-error.mdx", + "types/clerk-host-router.mdx", + "types/clerk-jwt-claims.mdx", + "types/clerk-paginated-response.mdx", + "types/clerk-pagination-params.mdx", + "types/clerk-pagination-request.mdx", + "types/clerk-resource.mdx", + "types/clerk.mdx", + "types/create-organization-params.mdx", + "types/element-object-key.mdx", + "types/elements-config.mdx", + "types/get-token.mdx", + "types/id-selectors.mdx", + "types/jwt-claims.mdx", + "types/jwt-header.mdx", + "types/legacy-redirect-props.mdx", + "types/localization-resource.mdx", + "types/multi-domain-and-or-proxy.mdx", + "types/organization-custom-role-key.mdx", + "types/organization-invitation-status.mdx", + "types/organization-permission-key.mdx", + "types/organization-suggestion-status.mdx", + "types/organizations-jwt-claim.mdx", + "types/override.mdx", + "types/path-value.mdx", + "types/pending-session-options.mdx", + "types/pending-session-resource.mdx", + "types/record-to-path.mdx", + "types/redirect-options.mdx", + "types/saml-strategy.mdx", + "types/sdk-metadata.mdx", + "types/session-resource.mdx", + "types/session-status-claim.mdx", + "types/set-active-params.mdx", + "types/set-active.mdx", + "types/sign-in-resource.mdx", + "types/sign-out.mdx", + "types/sign-up-authenticate-with-metamask-params.mdx", + "types/sign-up-resource.mdx", + "types/signed-in-session-resource.mdx", + "types/state-selectors.mdx", + "types/use-auth-return.mdx", + "types/use-session-list-return.mdx", + "types/use-session-return.mdx", + "types/use-sign-in-return.mdx", + "types/use-sign-up-return.mdx", + "types/use-user-return.mdx", + "types/user-resource.mdx", + "types/without.mdx", + "shared/build-clerk-js-script-attributes.mdx", + "shared/clerk-js-script-url.mdx", + "shared/clerk-runtime-error.mdx", + "shared/create-path-matcher.mdx", + "shared/deep-camel-to-snake.mdx", + "shared/deep-snake-to-camel.mdx", + "shared/deprecated-object-property.mdx", + "shared/derive-state.mdx", + "shared/extract-dev-browser-jwt-from-url.mdx", + "shared/fast-deep-merge-and-replace.mdx", + "shared/get-clerk-js-major-version-or-tag.mdx", + "shared/get-env-variable.mdx", + "shared/get-script-url.mdx", + "shared/icon-image-url.mdx", + "shared/in-browser.mdx", + "shared/is-browser-online.mdx", + "shared/is-clerk-runtime-error.mdx", + "shared/is-publishable-key.mdx", + "shared/is-staging.mdx", + "shared/is-truthy.mdx", + "shared/is-valid-browser-online.mdx", + "shared/is-valid-browser.mdx", + "shared/isomorphic-atob.mdx", + "shared/load-clerk-js-script.mdx", + "shared/pages-or-infinite-options.mdx", + "shared/paginated-hook-config.mdx", + "shared/paginated-resources.mdx", + "shared/read-json-file.mdx", + "shared/set-clerk-js-loading-error-package-name.mdx", + "shared/to-sentence.mdx", + "shared/use-clerk.mdx", + "shared/use-organization-list-params.mdx", + "shared/use-organization-list-return.mdx", + "shared/use-organization-list.mdx", + "shared/use-organization-params.mdx", + "shared/use-organization-return.mdx", + "shared/use-organization.mdx", + "shared/use-reverification.mdx", + "shared/use-session-list.mdx", + "shared/use-session.mdx", + "shared/use-user.mdx", + "shared/user-agent-is-robot.mdx", + "shared/version-selector.mdx", + "nextjs/auth.mdx", + "nextjs/build-clerk-props.mdx", + "nextjs/clerk-middleware-options.mdx", + "nextjs/clerk-middleware.mdx", + "nextjs/create-async-get-auth.mdx", + "nextjs/create-sync-get-auth.mdx", + "nextjs/current-user.mdx", + "nextjs/get-auth.mdx", + "clerk-react/clerk-provider-props.mdx", + "clerk-react/protect.mdx", + "clerk-react/redirect-to-create-organization.mdx", + "clerk-react/redirect-to-organization-profile.mdx", + "clerk-react/redirect-to-user-profile.mdx", + "clerk-react/use-auth.mdx", + "clerk-react/use-clerk.mdx", + "clerk-react/use-organization-list.mdx", + "clerk-react/use-organization.mdx", + "clerk-react/use-reverification.mdx", + "clerk-react/use-session-list.mdx", + "clerk-react/use-session.mdx", + "clerk-react/use-sign-in.mdx", + "clerk-react/use-sign-up.mdx", + "clerk-react/use-user.mdx", +] +`; diff --git a/.typedoc/__tests__/file-structure.test.ts b/.typedoc/__tests__/file-structure.test.ts new file mode 100644 index 00000000000..bda304db15b --- /dev/null +++ b/.typedoc/__tests__/file-structure.test.ts @@ -0,0 +1,65 @@ +import { readdir } from 'fs/promises'; +import { join, relative } from 'path'; +import { describe, expect, it } from 'vitest'; + +// Same function as in custom-router.mjs +function toKebabCase(str: string) { + return str.replace(/((?<=[a-z\d])[A-Z]|(?<=[A-Z\d])[A-Z](?=[a-z]))/g, '-$1').toLowerCase(); +} + +const OUTPUT_LOCATION = `${process.cwd()}/docs`; + +async function scanDirectory(type: 'file' | 'directory' = 'file') { + const arr: string[] = []; + const dir = await readdir(OUTPUT_LOCATION, { recursive: true, withFileTypes: true }); + + for (const entry of dir) { + const relativePath = relative(OUTPUT_LOCATION, join(entry.parentPath, entry.name)); + + if (type === 'file' && entry.isFile()) { + arr.push(relativePath); + } else if (type === 'directory' && entry.isDirectory()) { + arr.push(relativePath); + } + } + + return arr; +} + +describe('Typedoc output', () => { + it('should only have these top-level folders', async () => { + const folders = await scanDirectory('directory'); + + expect(folders).toMatchInlineSnapshot(` + [ + "clerk-react", + "nextjs", + "shared", + "types", + ] + `); + }); + it('should have a deliberate file structure', async () => { + const files = await scanDirectory('file'); + + expect(files).toMatchSnapshot(); + }); + it('should only contain lowercase files', async () => { + const files = await scanDirectory('file'); + const upperCaseFiles = files.filter(file => /[A-Z]/.test(file)); + + expect(upperCaseFiles).toHaveLength(0); + }); + it('should only contain kebab-cased files', async () => { + const files = await scanDirectory('file'); + const incorrectFiles = files.filter(file => file !== toKebabCase(file)); + + expect(incorrectFiles).toHaveLength(0); + }); + it('should not contain README files', async () => { + const files = await scanDirectory('file'); + const readmeFiles = files.filter(file => file.includes('readme')); + + expect(readmeFiles).toHaveLength(0); + }); +}); diff --git a/package.json b/package.json index ec320bf49ca..0d854b795ef 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "test:integration:tanstack-react-router": "E2E_APP_ID=tanstack.react-router pnpm test:integration:base --grep @tanstack-react-router", "test:integration:tanstack-react-start": "E2E_APP_ID=tanstack.react-start pnpm test:integration:base --grep @tanstack-react-start", "test:integration:vue": "E2E_APP_ID=vue.vite pnpm test:integration:base --grep @vue", + "test:typedoc": "cd ./.typedoc && vitest run", "turbo:clean": "turbo daemon clean", "typedoc:generate": "typedoc --tsconfig tsconfig.typedoc.json", "version-packages": "changeset version && pnpm install --lockfile-only --engine-strict=false", From a748bfac6477a05951052564ec989a929662731f Mon Sep 17 00:00:00 2001 From: LekoArts Date: Thu, 10 Apr 2025 12:18:43 +0200 Subject: [PATCH 13/19] update plugin --- .typedoc/custom-theme.mjs | 35 +++++++++++++++++++++++------------ package.json | 2 +- pnpm-lock.yaml | 12 ++++++------ 3 files changed, 30 insertions(+), 19 deletions(-) diff --git a/.typedoc/custom-theme.mjs b/.typedoc/custom-theme.mjs index b02c6c8139c..5116d86eb79 100644 --- a/.typedoc/custom-theme.mjs +++ b/.typedoc/custom-theme.mjs @@ -37,7 +37,7 @@ class ClerkMarkdownThemeContext extends MarkdownThemeContext { ...superPartials, /** * Copied from default theme / source code. This hides the return type heading over the table from the output - * https://github.com/typedoc2md/typedoc-plugin-markdown/blob/9fe11dcbee410a5747427dbe0439b9b18dfce0a2/packages/typedoc-plugin-markdown/src/theme/context/partials/member.signatureReturns.ts + * https://github.com/typedoc2md/typedoc-plugin-markdown/blob/7032ebd3679aead224cf23bffd0f3fb98443d16e/packages/typedoc-plugin-markdown/src/theme/context/partials/member.signatureReturns.ts * @param {import('typedoc').SignatureReflection} model * @param {{ headingLevel: number }} options */ @@ -55,6 +55,22 @@ class ClerkMarkdownThemeContext extends MarkdownThemeContext { md.push(heading(options.headingLevel, i18n.theme_returns())); + if (!typeDeclaration?.signatures) { + if (model.type && this.helpers.hasUsefulTypeDetails(model.type)) { + if (model.type instanceof UnionType) { + md.push( + this.partials.typeDeclarationUnionContainer( + // @ts-expect-error - Some type error + model, + options, + ), + ); + } + } else { + md.push(this.helpers.getReturnType(model.type)); + } + } + const returnsTag = model.comment?.getTag('@returns'); if (returnsTag) { @@ -250,7 +266,7 @@ class ClerkMarkdownThemeContext extends MarkdownThemeContext { }, /** * Copied from default theme / source code. This hides the "Type parameters" section and the declaration title from the output - * https://github.com/typedoc2md/typedoc-plugin-markdown/blob/5d7c3c7fb816b6b009f3425cf284c95400f53929/packages/typedoc-plugin-markdown/src/theme/context/partials/member.declaration.ts + * https://github.com/typedoc2md/typedoc-plugin-markdown/blob/7032ebd3679aead224cf23bffd0f3fb98443d16e/packages/typedoc-plugin-markdown/src/theme/context/partials/member.declaration.ts * @param {import('typedoc').DeclarationReflection} model * @param {{ headingLevel: number, nested?: boolean }} options */ @@ -321,15 +337,7 @@ class ClerkMarkdownThemeContext extends MarkdownThemeContext { if (model.type instanceof UnionType) { if (this.helpers.hasUsefulTypeDetails(model.type)) { md.push(heading(opts.headingLevel, i18n.theme_type_declaration())); - - model.type.types.forEach(type => { - if (type instanceof ReflectionType) { - md.push(this.partials.someType(type, { forceCollapse: true })); - md.push(this.partials.typeDeclarationContainer(model, type.declaration, options)); - } else { - md.push(`${this.partials.someType(type)}`); - } - }); + md.push(this.partials.typeDeclarationUnionContainer(model, options)); } } else { const useHeading = @@ -367,8 +375,11 @@ class ClerkMarkdownThemeContext extends MarkdownThemeContext { // So, .someType adds the backticks to the string and we don't want to deal with modifying that partial. So just remove any backticks in the next step again :shrug: const defaultResult = this.partials.someType(unionType, { forceCollapse: true }); + // Escape stuff that would be turned into markdown + const escapedResult = defaultResult.replace(/__experimental_/g, '\\_\\_experimental\\_'); + // Remove any backticks - return defaultResult.replace(/`/g, ''); + return escapedResult.replace(/`/g, ''); }); const shouldFormat = useCodeBlocks && (typesOut?.join('').length > 70 || typesOut?.join('').includes('\n')); diff --git a/package.json b/package.json index afe57edfa23..92b24b45c6b 100644 --- a/package.json +++ b/package.json @@ -131,7 +131,7 @@ "turbo": "^2.4.4", "turbo-ignore": "^2.4.4", "typedoc": "0.28.2", - "typedoc-plugin-markdown": "4.6.1", + "typedoc-plugin-markdown": "4.6.2", "typedoc-plugin-replace-text": "4.1.0", "typescript": "catalog:repo", "typescript-eslint": "8.28.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 026090929b4..abc79959c3f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -278,8 +278,8 @@ importers: specifier: 0.28.2 version: 0.28.2(typescript@5.8.2) typedoc-plugin-markdown: - specifier: 4.6.1 - version: 4.6.1(typedoc@0.28.2(typescript@5.8.2)) + specifier: 4.6.2 + version: 4.6.2(typedoc@0.28.2(typescript@5.8.2)) typedoc-plugin-replace-text: specifier: 4.1.0 version: 4.1.0(typedoc@0.28.2(typescript@5.8.2)) @@ -2969,7 +2969,7 @@ packages: '@expo/bunyan@4.0.1': resolution: {integrity: sha512-+Lla7nYSiHZirgK+U/uYzsLv/X+HaJienbD5AKX1UQZHYfWaP+9uuQluRB4GrEVWF0GZ7vEVp/jzaOT9k/SQlg==} - engines: {node: '>=0.10.0'} + engines: {'0': node >=0.10.0} '@expo/cli@0.22.22': resolution: {integrity: sha512-sOttVuk/8gdnsiSeDpnRNpLgBJHLbyQQC0QBGd2iHpr/x6xSYpgoRO6AqwAwGtQsk4ZEPZ83ulvccei1IIPdwg==} @@ -13462,8 +13462,8 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} - typedoc-plugin-markdown@4.6.1: - resolution: {integrity: sha512-SrJv9zkpCWdG1cvtWniFU6M7MkCZuheN2R3fuqDPF+O+PeZ8bzmfj1ju/BJwoPWIKyFJVPhK8Sg6tBrM1y+VoA==} + typedoc-plugin-markdown@4.6.2: + resolution: {integrity: sha512-JVCIoK7FDN3t3PSLkwDyrBFyjtDznqDCJotP9evxhLyb6bEZTqhAGB0tPy1RmgHuY2WoAONMrsWs8LfLsD+A6A==} engines: {node: '>= 18'} peerDependencies: typedoc: 0.28.x @@ -30305,7 +30305,7 @@ snapshots: possible-typed-array-names: 1.0.0 reflect.getprototypeof: 1.0.10 - typedoc-plugin-markdown@4.6.1(typedoc@0.28.2(typescript@5.8.2)): + typedoc-plugin-markdown@4.6.2(typedoc@0.28.2(typescript@5.8.2)): dependencies: typedoc: 0.28.2(typescript@5.8.2) From da3188bb1a90669a53be62be9173f821e7e99d9a Mon Sep 17 00:00:00 2001 From: LekoArts Date: Thu, 10 Apr 2025 13:42:53 +0200 Subject: [PATCH 14/19] merge fixes --- .github/workflows/ci.yml | 11 ----------- docs/CONTRIBUTING.md | 2 +- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 96b3eb02d43..144ddf13db0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -152,17 +152,6 @@ jobs: fi env: NODE_VERSION: ${{ matrix.node-version }} - - - name: Run Typedoc tests - run: | - # Only run Typedoc tests for one matrix version - if [ "${{ matrix.node-version }}" == "22" ]; then - pnpm build:declarations - pnpm typedoc:generate - pnpm test:typedoc - fi - env: - NODE_VERSION: ${{ matrix.node-version }} - name: Run Typedoc tests run: | diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index e4ee635cba1..dabfd875c5d 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -96,7 +96,7 @@ If you want to run the `dev` script of an individual package, navigate to the fo Updating documentation is an important part of the contribution process. If you are changing existing behavior or adding a new feature, make sure [Clerk's documentation](https://github.com/clerk/clerk-docs) is also updated. -To improve the in-editor experience when using Clerk's SDKs, we do our best to add [JSDoc comments](https://jsdoc.app/about-getting-started.html) to our package's public exports. The JSDoc comments should not attempt to duplicate any existing type information, but should provide meaningful additional context or references. If you are adding a new export, make sure it has a JSDoc comment. If you are updating an existing export, make sure any existing comments are updated appropriately. When you use links inside the JSDoc comment, make sure that they are **absolute** links (e.g. `[Clerk docs](https://clerk.com/docs)`). +To improve the in-editor experience when using Clerk's SDKs, we do our best to add [JSDoc comments](https://jsdoc.app/about-getting-started.html) to our package's public exports. The JSDoc comments should not attempt to duplicate any existing type information, but should provide meaningful additional context or references. If you are adding a new export, make sure it has a JSDoc comment. If you are updating an existing export, make sure any existing comments are updated appropriately. ### Writing tests From feeac3bb1ce90a5a3f59b43c4bd73bcbf21f11c6 Mon Sep 17 00:00:00 2001 From: LekoArts Date: Thu, 10 Apr 2025 14:06:30 +0200 Subject: [PATCH 15/19] lockfile --- pnpm-lock.yaml | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index abc79959c3f..a72ccdae0ad 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2969,7 +2969,7 @@ packages: '@expo/bunyan@4.0.1': resolution: {integrity: sha512-+Lla7nYSiHZirgK+U/uYzsLv/X+HaJienbD5AKX1UQZHYfWaP+9uuQluRB4GrEVWF0GZ7vEVp/jzaOT9k/SQlg==} - engines: {'0': node >=0.10.0} + engines: {node: '>=0.10.0'} '@expo/cli@0.22.22': resolution: {integrity: sha512-sOttVuk/8gdnsiSeDpnRNpLgBJHLbyQQC0QBGd2iHpr/x6xSYpgoRO6AqwAwGtQsk4ZEPZ83ulvccei1IIPdwg==} @@ -3445,66 +3445,82 @@ packages: '@miniflare/cache@2.14.4': resolution: {integrity: sha512-ayzdjhcj+4mjydbNK7ZGDpIXNliDbQY4GPcY2KrYw0v1OSUdj5kZUkygD09fqoGRfAks0d91VelkyRsAXX8FQA==} engines: {node: '>=16.13'} + deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 '@miniflare/core@2.14.4': resolution: {integrity: sha512-FMmZcC1f54YpF4pDWPtdQPIO8NXfgUxCoR9uyrhxKJdZu7M6n8QKopPVNuaxR40jcsdxb7yKoQoFWnHfzJD9GQ==} engines: {node: '>=16.13'} + deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 '@miniflare/d1@2.14.4': resolution: {integrity: sha512-pMBVq9XWxTDdm+RRCkfXZP+bREjPg1JC8s8C0JTovA9OGmLQXqGTnFxIaS9vf1d8k3uSUGhDzPTzHr0/AUW1gA==} engines: {node: '>=16.7'} + deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 '@miniflare/durable-objects@2.14.4': resolution: {integrity: sha512-+JrmHP6gHHrjxV8S3axVw5lGHLgqmAGdcO/1HJUPswAyJEd3Ah2YnKhpo+bNmV4RKJCtEq9A2hbtVjBTD2YzwA==} engines: {node: '>=16.13'} + deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 '@miniflare/html-rewriter@2.14.4': resolution: {integrity: sha512-GB/vZn7oLbnhw+815SGF+HU5EZqSxbhIa3mu2L5MzZ2q5VOD5NHC833qG8c2GzDPhIaZ99ITY+ZJmbR4d+4aNQ==} engines: {node: '>=16.13'} + deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 '@miniflare/kv@2.14.4': resolution: {integrity: sha512-QlERH0Z+klwLg0xw+/gm2yC34Nnr/I0GcQ+ASYqXeIXBwjqOtMBa3YVQnocaD+BPy/6TUtSpOAShHsEj76R2uw==} engines: {node: '>=16.13'} + deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 '@miniflare/queues@2.14.4': resolution: {integrity: sha512-aXQ5Ik8Iq1KGMBzGenmd6Js/jJgqyYvjom95/N9GptCGpiVWE5F0XqC1SL5rCwURbHN+aWY191o8XOFyY2nCUA==} engines: {node: '>=16.7'} + deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 '@miniflare/r2@2.14.4': resolution: {integrity: sha512-4ctiZWh7Ty7LB3brUjmbRiGMqwyDZgABYaczDtUidblo2DxX4JZPnJ/ZAyxMPNJif32kOJhcg6arC2hEthR9Sw==} engines: {node: '>=16.13'} + deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 '@miniflare/runner-vm@2.14.4': resolution: {integrity: sha512-Nog0bB9SVhPbZAkTWfO4lpLAUsBXKEjlb4y+y66FJw77mPlmPlVdpjElCvmf8T3VN/pqh83kvELGM+/fucMf4g==} engines: {node: '>=16.13'} + deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 '@miniflare/shared-test-environment@2.14.4': resolution: {integrity: sha512-FdU2/8wEd00vIu+MfofLiHcfZWz+uCbE2VTL85KpyYfBsNGAbgRtzFMpOXdoXLqQfRu6MBiRwWpb2FbMrBzi7g==} engines: {node: '>=16.13'} + deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 '@miniflare/shared@2.14.4': resolution: {integrity: sha512-upl4RSB3hyCnITOFmRZjJj4A72GmkVrtfZTilkdq5Qe5TTlzsjVeDJp7AuNUM9bM8vswRo+N5jOiot6O4PVwwQ==} engines: {node: '>=16.13'} + deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 '@miniflare/sites@2.14.4': resolution: {integrity: sha512-O5npWopi+fw9W9Ki0gy99nuBbgDva/iXy8PDC4dAXDB/pz45nISDqldabk0rL2t4W2+lY6LXKzdOw+qJO1GQTA==} engines: {node: '>=16.13'} + deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 '@miniflare/storage-file@2.14.4': resolution: {integrity: sha512-JxcmX0hXf4cB0cC9+s6ZsgYCq+rpyUKRPCGzaFwymWWplrO3EjPVxKCcMxG44jsdgsII6EZihYUN2J14wwCT7A==} engines: {node: '>=16.13'} + deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 '@miniflare/storage-memory@2.14.4': resolution: {integrity: sha512-9jB5BqNkMZ3SFjbPFeiVkLi1BuSahMhc/W1Y9H0W89qFDrrD+z7EgRgDtHTG1ZRyi9gIlNtt9qhkO1B6W2qb2A==} engines: {node: '>=16.13'} + deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 '@miniflare/watcher@2.14.4': resolution: {integrity: sha512-PYn05ET2USfBAeXF6NZfWl0O32KVyE8ncQ/ngysrh3hoIV7l3qGGH7ubeFx+D8VWQ682qYhwGygUzQv2j1tGGg==} engines: {node: '>=16.13'} + deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 '@miniflare/web-sockets@2.14.4': resolution: {integrity: sha512-stTxvLdJ2IcGOs76AnvGYAzGvx8JvQPRxC5DW0P5zdAAnhL33noqb5LKdPt3P37BKp9FzBKZHuihQI9oVqwm0g==} engines: {node: '>=16.13'} + deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 '@modelcontextprotocol/sdk@1.7.0': resolution: {integrity: sha512-IYPe/FLpvF3IZrd/f5p5ffmWhMc3aEMuM2wGJASDqC2Ge7qatVCdbfPx3n/5xFeb19xN0j/911M2AaFuircsWA==} @@ -14042,6 +14058,7 @@ packages: vitest-environment-miniflare@2.14.4: resolution: {integrity: sha512-DzwQWdY42sVYR6aUndw9FdCtl/i0oh3NkbkQpw+xq5aYQw5eiJn5kwnKaKQEWaoBe8Cso71X2i1EJGvi1jZ2xw==} engines: {node: '>=16.13'} + deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4 peerDependencies: vitest: '>=0.23.0' From 222318309a00bff70eed81423ef3f6794862d125 Mon Sep 17 00:00:00 2001 From: LekoArts Date: Thu, 10 Apr 2025 14:10:40 +0200 Subject: [PATCH 16/19] add changeset --- .changeset/giant-bats-leave.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .changeset/giant-bats-leave.md diff --git a/.changeset/giant-bats-leave.md b/.changeset/giant-bats-leave.md new file mode 100644 index 00000000000..1be850ba749 --- /dev/null +++ b/.changeset/giant-bats-leave.md @@ -0,0 +1,7 @@ +--- +'@clerk/shared': patch +'@clerk/clerk-react': patch +'@clerk/types': patch +--- + +Improve JSDoc comments From 361692c3a4763a27c194dbf21cdf8da9d157f7c6 Mon Sep 17 00:00:00 2001 From: LekoArts Date: Thu, 10 Apr 2025 15:29:00 +0200 Subject: [PATCH 17/19] =?UTF-8?q?simplify=20theme=20overrides=20=E2=9C=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .typedoc/custom-plugin.mjs | 4 + .typedoc/custom-theme.mjs | 436 +++++-------------------------------- 2 files changed, 57 insertions(+), 383 deletions(-) diff --git a/.typedoc/custom-plugin.mjs b/.typedoc/custom-plugin.mjs index 13ab9297822..1c627d003b5 100644 --- a/.typedoc/custom-plugin.mjs +++ b/.typedoc/custom-plugin.mjs @@ -64,6 +64,10 @@ function getUnlinkedTypesReplacements() { pattern: /`_LocalizationResource`/g, replace: '[Localization](/docs/customization/localization)', }, + { + pattern: /`LoadedClerk`/g, + replace: '[Clerk](/docs/references/javascript/clerk)', + }, ]; } diff --git a/.typedoc/custom-theme.mjs b/.typedoc/custom-theme.mjs index 5116d86eb79..1cea03b2d47 100644 --- a/.typedoc/custom-theme.mjs +++ b/.typedoc/custom-theme.mjs @@ -1,5 +1,4 @@ // @ts-check -import { ArrayType, i18n, IntersectionType, ReflectionKind, ReflectionType, UnionType } from 'typedoc'; import { MarkdownTheme, MarkdownThemeContext } from 'typedoc-plugin-markdown'; /** @@ -36,428 +35,99 @@ class ClerkMarkdownThemeContext extends MarkdownThemeContext { this.partials = { ...superPartials, /** - * Copied from default theme / source code. This hides the return type heading over the table from the output - * https://github.com/typedoc2md/typedoc-plugin-markdown/blob/7032ebd3679aead224cf23bffd0f3fb98443d16e/packages/typedoc-plugin-markdown/src/theme/context/partials/member.signatureReturns.ts - * @param {import('typedoc').SignatureReflection} model - * @param {{ headingLevel: number }} options - */ - signatureReturns: (model, options) => { - const md = []; - - /** - * @type any - */ - const modelType = model.type; - /** - * @type {import('typedoc').DeclarationReflection} - */ - const typeDeclaration = modelType?.declaration; - - md.push(heading(options.headingLevel, i18n.theme_returns())); - - if (!typeDeclaration?.signatures) { - if (model.type && this.helpers.hasUsefulTypeDetails(model.type)) { - if (model.type instanceof UnionType) { - md.push( - this.partials.typeDeclarationUnionContainer( - // @ts-expect-error - Some type error - model, - options, - ), - ); - } - } else { - md.push(this.helpers.getReturnType(model.type)); - } - } - - const returnsTag = model.comment?.getTag('@returns'); - - if (returnsTag) { - md.push(this.helpers.getCommentParts(returnsTag.content)); - } - - if (typeDeclaration?.signatures) { - typeDeclaration.signatures.forEach(signature => { - md.push( - this.partials.signature(signature, { - headingLevel: options.headingLevel + 1, - nested: true, - }), - ); - }); - } - - if (typeDeclaration?.children) { - md.push( - this.partials.typeDeclaration(typeDeclaration, { - headingLevel: options.headingLevel, - }), - ); - } - - return md.join('\n\n'); - }, - /** - * Copied from default theme / source code. This hides the "Type parameters" section and the signature title from the output - * https://github.com/typedoc2md/typedoc-plugin-markdown/blob/9fe11dcbee410a5747427dbe0439b9b18dfce0a2/packages/typedoc-plugin-markdown/src/theme/context/partials/member.signature.ts + * This hides the "Type parameters" section and the signature title from the output * @param {import('typedoc').SignatureReflection} model * @param {{ headingLevel: number, nested?: boolean, accessor?: string, multipleSignatures?: boolean; hideTitle?: boolean }} options */ signature: (model, options) => { - const md = []; - - if (!options.nested && model.sources && !this.options.getValue('disableSources')) { - md.push(this.partials.sources(model)); - } - - let modelComments = options.multipleSignatures ? model.comment : model.comment || model.parent?.comment; - - if (modelComments && model.parent?.comment?.summary && !options.multipleSignatures) { - modelComments = Object.assign(modelComments, { - summary: model.parent.comment.summary, - }); - } - - if (modelComments && model.parent?.comment?.blockTags) { - modelComments.blockTags = [...(model.parent?.comment?.blockTags || []), ...(model.comment?.blockTags || [])]; - } - - if (modelComments) { - md.push( - this.partials.comment(modelComments, { - headingLevel: options.headingLevel, - showTags: false, - showSummary: true, - }), - ); - } - - if (!options.multipleSignatures && model.parent?.documents) { - md.push( - this.partials.documents(model?.parent, { - headingLevel: options.headingLevel, - }), - ); - } - - if (model.parameters?.length) { - md.push(heading(options.headingLevel, ReflectionKind.pluralString(ReflectionKind.Parameter))); - if (this.helpers.useTableFormat('parameters')) { - md.push(this.partials.parametersTable(model.parameters)); - } else { - md.push( - this.partials.parametersList(model.parameters, { - headingLevel: options.headingLevel, - }), - ); - } - } - - if (model.type) { - md.push( - this.partials.signatureReturns(model, { - headingLevel: options.headingLevel, - }), - ); - } - - if (modelComments) { - md.push( - this.partials.comment(modelComments, { - headingLevel: options.headingLevel, - showTags: true, - showSummary: false, - }), - ); - } + const customizedOptions = { + ...options, + hideTitle: true, + }; + const customizedModel = model; + customizedModel.typeParameters = undefined; - md.push(this.partials.inheritance(model, { headingLevel: options.headingLevel })); + const output = superPartials.signature(customizedModel, customizedOptions); - return md.join('\n\n'); + return output; }, /** - * Copied from default theme / source code. This hides the "Type parameters" section from the output - * https://github.com/typedoc2md/typedoc-plugin-markdown/blob/9fe11dcbee410a5747427dbe0439b9b18dfce0a2/packages/typedoc-plugin-markdown/src/theme/context/partials/member.memberWithGroups.ts + * This hides the "Type parameters" section from the output * @param {import('typedoc').DeclarationReflection} model * @param {{ headingLevel: number }} options */ memberWithGroups: (model, options) => { - const md = []; - - if (model.kind === ReflectionKind.TypeAlias) { - md.push(this.partials.declarationTitle(model)); - } - - if ( - ![ReflectionKind.Module, ReflectionKind.Namespace].includes(model.kind) && - model.sources && - !this.options.getValue('disableSources') - ) { - md.push(this.partials.sources(model)); - } - - if (model.comment) { - md.push( - this.partials.comment(model.comment, { - headingLevel: options.headingLevel, - }), - ); - } - - if (model.typeHierarchy?.next) { - md.push( - this.partials.hierarchy(model.typeHierarchy, { - headingLevel: options.headingLevel, - }), - ); - } + const customizedModel = model; + customizedModel.typeParameters = undefined; - if (model.implementedTypes?.length) { - md.push(heading(options.headingLevel, i18n.theme_implements())); - md.push( - unorderedList(model.implementedTypes.map(implementedType => this.partials.someType(implementedType))), - ); - } + const output = superPartials.memberWithGroups(customizedModel, options); - if (model.kind === ReflectionKind.Class && model.categories?.length) { - model.groups - ?.filter(group => group.title === i18n.kind_plural_constructor()) - .forEach(group => { - md.push(heading(options.headingLevel, i18n.kind_plural_constructor())); - group.children.forEach(child => { - md.push( - this.partials.constructor(/** @type {import('typedoc').DeclarationReflection} */ (child), { - headingLevel: options.headingLevel + 1, - }), - ); - }); - }); - } - - if ('signatures' in model && model.signatures?.length) { - const multipleSignatures = model.signatures?.length > 1; - model.signatures.forEach(signature => { - if (multipleSignatures) { - md.push(heading(options.headingLevel, i18n.kind_call_signature())); - } - md.push( - this.partials.signature(signature, { - headingLevel: multipleSignatures ? options.headingLevel + 1 : options.headingLevel, - }), - ); - }); - } - - if (model.indexSignatures?.length) { - md.push(heading(options.headingLevel, i18n.theme_indexable())); - model.indexSignatures.forEach(indexSignature => { - md.push( - this.partials.indexSignature(indexSignature, { - headingLevel: options.headingLevel + 1, - }), - ); - }); - } - - md.push(this.partials.body(model, { headingLevel: options.headingLevel })); - - return md.join('\n\n'); + return output; }, /** - * Copied from default theme / source code. This hides the "Type parameters" section and the declaration title from the output - * https://github.com/typedoc2md/typedoc-plugin-markdown/blob/7032ebd3679aead224cf23bffd0f3fb98443d16e/packages/typedoc-plugin-markdown/src/theme/context/partials/member.declaration.ts + * This hides the "Type parameters" section and the declaration title from the output * @param {import('typedoc').DeclarationReflection} model * @param {{ headingLevel: number, nested?: boolean }} options */ declaration: (model, options = { headingLevel: 2, nested: false }) => { - const md = []; - - const opts = { - nested: false, - ...options, + // Create a local override + const localPartials = { + ...this.partials, + declarationTitle: () => '', }; + // Store original so that we can restore it later + const originalPartials = this.partials; - if (!opts.nested && model.sources && !this.options.getValue('disableSources')) { - md.push(this.partials.sources(model)); - } - - if (model?.documents) { - md.push( - this.partials.documents(model, { - headingLevel: options.headingLevel, - }), - ); - } - - /** - * @type any - */ - const modelType = model.type; - /** - * @type {import('typedoc').DeclarationReflection} - */ - let typeDeclaration = modelType?.declaration; - - if (model.type instanceof ArrayType && model.type?.elementType instanceof ReflectionType) { - typeDeclaration = model.type?.elementType?.declaration; - } - - const hasTypeDeclaration = - Boolean(typeDeclaration) || - (model.type instanceof UnionType && model.type?.types.some(type => type instanceof ReflectionType)); - - if (model.comment) { - md.push( - this.partials.comment(model.comment, { - headingLevel: opts.headingLevel, - showSummary: true, - showTags: false, - }), - ); - } - - if (model.type instanceof IntersectionType) { - model.type?.types?.forEach(intersectionType => { - if (intersectionType instanceof ReflectionType && !intersectionType.declaration.signatures) { - if (intersectionType.declaration.children) { - md.push(heading(opts.headingLevel, i18n.theme_type_declaration())); - - md.push( - this.partials.typeDeclaration(intersectionType.declaration, { - headingLevel: opts.headingLevel, - }), - ); - } - } - }); - } - - if (hasTypeDeclaration) { - if (model.type instanceof UnionType) { - if (this.helpers.hasUsefulTypeDetails(model.type)) { - md.push(heading(opts.headingLevel, i18n.theme_type_declaration())); - md.push(this.partials.typeDeclarationUnionContainer(model, options)); - } - } else { - const useHeading = - typeDeclaration?.children?.length && - (model.kind !== ReflectionKind.Property || this.helpers.useTableFormat('properties')); - if (useHeading) { - md.push(heading(opts.headingLevel, i18n.theme_type_declaration())); - } - md.push(this.partials.typeDeclarationContainer(model, typeDeclaration, options)); - } - } - if (model.comment) { - md.push( - this.partials.comment(model.comment, { - headingLevel: opts.headingLevel, - showSummary: false, - showTags: true, - showReturns: true, - }), - ); - } + const customizedModel = model; + customizedModel.typeParameters = undefined; - md.push(this.partials.inheritance(model, { headingLevel: opts.headingLevel })); + this.partials = localPartials; + const output = superPartials.declaration(customizedModel, options); + this.partials = originalPartials; - return md.join('\n\n'); + return output; }, /** - * Copied from default theme / source code. This modifies the output of union types by wrapping everything in a single `foo | bar` tag instead of doing `foo` | `bar` - * https://github.com/typedoc2md/typedoc-plugin-markdown/blob/5d7c3c7fb816b6b009f3425cf284c95400f53929/packages/typedoc-plugin-markdown/src/theme/context/partials/type.union.ts + * This modifies the output of union types by wrapping everything in a single `foo | bar` tag instead of doing `foo` | `bar` * @param {import('typedoc').UnionType} model */ unionType: model => { - const useCodeBlocks = this.options.getValue('useCodeBlocks'); - const typesOut = model.types.map(unionType => { - // So, .someType adds the backticks to the string and we don't want to deal with modifying that partial. So just remove any backticks in the next step again :shrug: - const defaultResult = this.partials.someType(unionType, { forceCollapse: true }); + const defaultOutput = superPartials.unionType(model); + const output = defaultOutput // Escape stuff that would be turned into markdown - const escapedResult = defaultResult.replace(/__experimental_/g, '\\_\\_experimental\\_'); - + .replace(/__experimental_/g, '\\_\\_experimental\\_') // Remove any backticks - return escapedResult.replace(/`/g, ''); - }); - - const shouldFormat = useCodeBlocks && (typesOut?.join('').length > 70 || typesOut?.join('').includes('\n')); + .replace(/`/g, '') + // Remove any `` and `` tags + .replace(//g, '') + .replace(/<\/code>/g, ''); - const md = typesOut.join(shouldFormat ? `\n \\| ` : ` \\| `); - const result = shouldFormat ? `\n \\| ` + md : md; - - return `${result}`; + return `${output}`; }, /** - * Copied from default theme / source code. This ensures that everything is wrapped in a single codeblock (not individual ones). If there are function overloads they will be split by a `; `. - * https://github.com/typedoc2md/typedoc-plugin-markdown/blob/6cde68da7bdc048aa81f0fb2467034ae675c7e60/packages/typedoc-plugin-markdown/src/theme/context/partials/type.reflection.function.ts + * This ensures that everything is wrapped in a single codeblock (not individual ones) * @param {import('typedoc').SignatureReflection[]} model * @param {{ forceParameterType?: boolean; typeSeparator?: string }} [options] */ functionType: (model, options) => { - const shouldFormat = this.options.getValue('useCodeBlocks'); - const typeSeparator = options?.typeSeparator || ' => '; - const functions = model.map(fn => { - const typeParams = fn.typeParameters - ? `${this.helpers.getAngleBracket('<')}${fn.typeParameters - .map(typeParameter => typeParameter.name) - .join(', ')}${this.helpers.getAngleBracket('>')}` - : ''; - const showParameterType = options?.forceParameterType || this.options.getValue('expandParameters'); - - const params = fn.parameters - ? fn.parameters.map(param => { - const paramType = this.partials.someType(/** @type {import('typedoc').SomeType} */ param.type); - const paramItem = [ - `${param.flags?.isRest ? '...' : ''}${param.name}${param.flags?.isOptional ? '?' : ''}`, - ]; - if (showParameterType) { - paramItem.push(paramType); - } - return paramItem.join(': '); - }) - : []; - const returns = this.partials.someType(/** @type {import('typedoc').SomeType} */ fn.type); - return ( - typeParams + - `${shouldFormat && model.length > 1 ? ' ' : ''}(${params.join(', ')})${typeSeparator}${returns}` - ); - }); - - const cleanOutput = functions - .map(fn => { - return ( - fn - // Remove any backticks - .replace(/`/g, '') - // Remove any `` and `` tags - .replace(//g, '') - .replace(/<\/code>/g, '') - ); - }) - .join(shouldFormat ? ';\n' : '; '); - - return `${cleanOutput}`; + const defaultOutput = superPartials.functionType(model, options); + const delimiter = this.options.getValue('useCodeBlocks') ? ';\n' : '; '; + + const output = defaultOutput + .split(delimiter) + .map(fn => + fn + // Remove any backticks + .replace(/`/g, '') + // Remove any `` and `` tags + .replace(//g, '') + .replace(/<\/code>/g, ''), + ) + .join(delimiter); + + return `${output}`; }, }; } } - -/** - * Returns a heading in markdown format - * @param {number} level The level of the heading - * @param {string} text The text of the heading - */ -function heading(level, text) { - level = level > 6 ? 6 : level; - return `${[...Array(level)].map(() => '#').join('')} ${text}`; -} - -/** - * Create an unordered list from an array of items - * @param {string[]} items - */ -function unorderedList(items) { - return items.map(item => `- ${item}`).join('\n'); -} From 7b2af64e57fa529b4e2162cebe3aaf0c50157153 Mon Sep 17 00:00:00 2001 From: LekoArts Date: Fri, 11 Apr 2025 11:16:26 +0200 Subject: [PATCH 18/19] finishing touches --- .typedoc/custom-plugin.mjs | 4 ++++ .typedoc/custom-theme.mjs | 30 ++++++++++++++++++++++++ packages/types/src/hooks.ts | 12 ++++++++++ packages/types/src/organizationDomain.ts | 6 +++++ 4 files changed, 52 insertions(+) diff --git a/.typedoc/custom-plugin.mjs b/.typedoc/custom-plugin.mjs index 1c627d003b5..7ce9a30bc92 100644 --- a/.typedoc/custom-plugin.mjs +++ b/.typedoc/custom-plugin.mjs @@ -68,6 +68,10 @@ function getUnlinkedTypesReplacements() { pattern: /`LoadedClerk`/g, replace: '[Clerk](/docs/references/javascript/clerk)', }, + { + pattern: /`OrganizationCustomRoleKey`/g, + replace: '[OrganizationCustomRoleKey](/docs/references/javascript/types/organization-custom-role-key)', + }, ]; } diff --git a/.typedoc/custom-theme.mjs b/.typedoc/custom-theme.mjs index 1cea03b2d47..88c25395f6b 100644 --- a/.typedoc/custom-theme.mjs +++ b/.typedoc/custom-theme.mjs @@ -1,4 +1,5 @@ // @ts-check +import { ReflectionType, UnionType } from 'typedoc'; import { MarkdownTheme, MarkdownThemeContext } from 'typedoc-plugin-markdown'; /** @@ -128,6 +129,35 @@ class ClerkMarkdownThemeContext extends MarkdownThemeContext { return `${output}`; }, + /** + * Copied from original theme. + * Changes: + * - Remove summaries over tables (TODO: Use elementSummaries instead) + * - Only use one newline between items + * https://github.com/typedoc2md/typedoc-plugin-markdown/blob/7032ebd3679aead224cf23bffd0f3fb98443d16e/packages/typedoc-plugin-markdown/src/theme/context/partials/member.typeDeclarationUnionContainer.ts + * @param {import('typedoc').DeclarationReflection} model + * @param {{ headingLevel: number }} options + */ + typeDeclarationUnionContainer: (model, options) => { + /** + * @type {string[]} + */ + const md = []; + if (model.type instanceof UnionType) { + const elementSummaries = model.type?.elementSummaries; + model.type.types.forEach((type, i) => { + if (type instanceof ReflectionType) { + md.push(this.partials.typeDeclarationContainer(model, type.declaration, options)); + } else { + md.push(`${this.partials.someType(type)}`); + } + if (elementSummaries?.[i]) { + md.push(this.helpers.getCommentParts(elementSummaries[i])); + } + }); + } + return md.join('\n'); + }, }; } } diff --git a/packages/types/src/hooks.ts b/packages/types/src/hooks.ts index 8450fa430e8..e2a312b1670 100644 --- a/packages/types/src/hooks.ts +++ b/packages/types/src/hooks.ts @@ -25,6 +25,9 @@ type CheckAuthorizationWithoutOrgOrUser = (params: Parameters Date: Fri, 11 Apr 2025 11:22:40 +0200 Subject: [PATCH 19/19] update snapshot --- .typedoc/__tests__/__snapshots__/file-structure.test.ts.snap | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.typedoc/__tests__/__snapshots__/file-structure.test.ts.snap b/.typedoc/__tests__/__snapshots__/file-structure.test.ts.snap index 40ac8d42900..f252c5ca965 100644 --- a/.typedoc/__tests__/__snapshots__/file-structure.test.ts.snap +++ b/.typedoc/__tests__/__snapshots__/file-structure.test.ts.snap @@ -27,6 +27,8 @@ exports[`Typedoc output > should have a deliberate file structure 1`] = ` "types/localization-resource.mdx", "types/multi-domain-and-or-proxy.mdx", "types/organization-custom-role-key.mdx", + "types/organization-domain-verification-status.mdx", + "types/organization-enrollment-mode.mdx", "types/organization-invitation-status.mdx", "types/organization-permission-key.mdx", "types/organization-suggestion-status.mdx",