diff --git a/.github/workflows/publish-main-docs.yml b/.github/workflows/publish-main-docs.yml new file mode 100644 index 0000000000..15617feedc --- /dev/null +++ b/.github/workflows/publish-main-docs.yml @@ -0,0 +1,19 @@ +name: Publish main branch docs to GitHub Pages + +on: + push: + branches: + - main + +jobs: + publish-to-gh-pages: + name: Publish docs to `staging` directory of `gh-pages` branch + permissions: + contents: write + uses: ./.github/workflows/publish-github-pages.yml + with: + build_script: yarn workspace @metamask/snaps-sdk build:docs + destination_dir: docs/staging + publish_dir: ./packages/snaps-sdk/docs + secrets: + PUBLISH_PAGES_TOKEN: ${{ secrets.PUBLISH_PAGES_TOKEN }} diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml index ecae76c2fb..93c638a223 100644 --- a/.github/workflows/publish-release.yml +++ b/.github/workflows/publish-release.yml @@ -122,6 +122,47 @@ jobs: npm-token: ${{ secrets.NPM_TOKEN }} npm-tag: ${{ needs.get-release-tag.outputs.tag }} + get-sdk-release-version: + needs: npm-publish + runs-on: ubuntu-latest + outputs: + RELEASE_VERSION: ${{ steps.get-release-version.outputs.RELEASE_VERSION }} + steps: + - uses: actions/checkout@v6 + with: + ref: ${{ github.sha }} + - id: get-release-version + shell: bash + run: | + RELEASE_VERSION="$(jq --raw-output '.version' packages/snaps-sdk/package.json)" + echo "RELEASE_VERSION=$RELEASE_VERSION" >> "$GITHUB_OUTPUT" + + publish-release-to-gh-pages: + name: Publish docs to `docs/${{ needs.get-release-version.outputs.RELEASE_VERSION }}` directory of `gh-pages` branch + needs: get-sdk-release-version + permissions: + contents: write + uses: ./.github/workflows/publish-github-pages.yml + with: + build_script: yarn workspace @metamask/snaps-sdk build:docs + destination_dir: docs/${{ needs.get-sdk-release-version.outputs.RELEASE_VERSION }} + publish_dir: ./packages/snaps-sdk/docs + secrets: + PUBLISH_PAGES_TOKEN: ${{ secrets.PUBLISH_PAGES_TOKEN }} + + publish-release-to-latest-gh-pages: + name: Publish docs to `latest` directory of `gh-pages` branch + needs: publish-release-to-gh-pages + permissions: + contents: write + uses: ./.github/workflows/publish-github-pages.yml + with: + build_script: yarn workspace @metamask/snaps-sdk build:docs + destination_dir: docs/latest + publish_dir: ./packages/snaps-sdk/docs + secrets: + PUBLISH_PAGES_TOKEN: ${{ secrets.PUBLISH_PAGES_TOKEN }} + is-environment-release: name: Determine whether this release updates the iframe execution environment runs-on: ubuntu-latest diff --git a/eslint.config.mjs b/eslint.config.mjs index 9589c3cefd..f6aea46a61 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -78,7 +78,15 @@ const config = createConfig([ 'jsdoc/check-tag-names': [ 'error', { - definedTags: ['property'], + definedTags: [ + 'property', + + // Typedoc tags + 'category', + 'primaryExport', + 'showCategories', + 'showGroups', + ], }, ], diff --git a/packages/snaps-execution-environments/lavamoat/build-system/policy.json b/packages/snaps-execution-environments/lavamoat/build-system/policy.json index dfdc4aa31a..6ea7ee8144 100644 --- a/packages/snaps-execution-environments/lavamoat/build-system/policy.json +++ b/packages/snaps-execution-environments/lavamoat/build-system/policy.json @@ -433,7 +433,7 @@ "html-webpack-plugin>pretty-error>renderkid>css-select>domutils>dom-serializer": { "packages": { "html-webpack-plugin>pretty-error>renderkid>htmlparser2>domelementtype": true, - "html-webpack-plugin>pretty-error>renderkid>htmlparser2>entities": true + "html-webpack-plugin>pretty-error>renderkid>css-select>domutils>dom-serializer>entities": true } }, "html-webpack-plugin>pretty-error>renderkid>css-select>domhandler": { diff --git a/packages/snaps-sdk/.depcheckrc.json b/packages/snaps-sdk/.depcheckrc.json index c437c59cd2..5709342492 100644 --- a/packages/snaps-sdk/.depcheckrc.json +++ b/packages/snaps-sdk/.depcheckrc.json @@ -13,6 +13,7 @@ "prettier-plugin-packagejson", "ts-node", "typedoc", + "typedoc-theme-fresh", "typescript" ] } diff --git a/packages/snaps-sdk/.gitignore b/packages/snaps-sdk/.gitignore new file mode 100644 index 0000000000..d8f8d46921 --- /dev/null +++ b/packages/snaps-sdk/.gitignore @@ -0,0 +1 @@ +docs diff --git a/packages/snaps-sdk/assets/favicon.svg b/packages/snaps-sdk/assets/favicon.svg new file mode 100644 index 0000000000..990a37c657 --- /dev/null +++ b/packages/snaps-sdk/assets/favicon.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/snaps-sdk/package.json b/packages/snaps-sdk/package.json index 929b3a42a1..7a0e5f67e9 100644 --- a/packages/snaps-sdk/package.json +++ b/packages/snaps-sdk/package.json @@ -74,6 +74,7 @@ ], "scripts": { "build": "ts-bridge --project tsconfig.build.json --verbose --clean --no-references", + "build:docs": "typedoc", "changelog:update": "../../scripts/update-changelog.sh @metamask/snaps-sdk", "changelog:validate": "../../scripts/validate-changelog.sh @metamask/snaps-sdk", "lint": "yarn lint:eslint && yarn lint:misc --check && yarn changelog:validate && yarn lint:dependencies", @@ -114,6 +115,8 @@ "jest-silent-reporter": "^0.6.0", "prettier": "^3.3.3", "ts-jest": "^29.1.1", + "typedoc": "^0.28.16", + "typedoc-theme-fresh": "^0.2.3", "typescript": "~5.3.3" }, "engines": { diff --git a/packages/snaps-sdk/src/index.ts b/packages/snaps-sdk/src/index.ts index b42dc6b833..776393c235 100644 --- a/packages/snaps-sdk/src/index.ts +++ b/packages/snaps-sdk/src/index.ts @@ -1,3 +1,12 @@ +/** + * The main entry point for the Snaps SDK, which can be accessed by importing + * from `@metamask/snaps-sdk`. + * + * @module Main + * @primaryExport + * @showGroups + */ + // Only internals that are used by other Snaps packages should be exported here. export type { EnumToUnion } from './internals'; export type { UriOptions } from './internals'; diff --git a/packages/snaps-sdk/src/jsx/components/Address.ts b/packages/snaps-sdk/src/jsx/components/Address.ts index 4c40c35753..de8bb92f35 100644 --- a/packages/snaps-sdk/src/jsx/components/Address.ts +++ b/packages/snaps-sdk/src/jsx/components/Address.ts @@ -10,6 +10,7 @@ import { createSnapComponent } from '../component'; * @property truncate - Whether to truncate the address. Defaults to `true`. * @property displayName - Whether to show the account name. Defaults to `false`. * @property avatar - Whether to show the address avatar. Defaults to `true`. + * @category Component Props */ export type AddressProps = { address: `0x${string}` | CaipAccountId; @@ -42,12 +43,14 @@ const TYPE = 'Address'; *
* @example *
+ * @category Components */ export const Address = createSnapComponent(TYPE); /** * An address element. * - * @see Address + * @see {@link Address} + * @category Elements */ export type AddressElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/Avatar.ts b/packages/snaps-sdk/src/jsx/components/Avatar.ts index d1f1a624fc..d29a60bce8 100644 --- a/packages/snaps-sdk/src/jsx/components/Avatar.ts +++ b/packages/snaps-sdk/src/jsx/components/Avatar.ts @@ -7,6 +7,7 @@ import { createSnapComponent } from '../component'; * * @property address - The address to display. This should be a valid CAIP-10 address. * @property size - The size of the avatar. Can be `sm`, `md`, or `lg`. Defaults to `md`. + * @category Component Props */ export type AvatarProps = { address: CaipAccountId; @@ -28,12 +29,14 @@ const TYPE = 'Avatar'; * * @example * + * @category Components */ export const Avatar = createSnapComponent(TYPE); /** * An avatar element. * - * @see Avatar + * @see {@link Avatar} + * @category Elements */ export type AvatarElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/Banner.ts b/packages/snaps-sdk/src/jsx/components/Banner.ts index 2be70444d0..01724b7dde 100644 --- a/packages/snaps-sdk/src/jsx/components/Banner.ts +++ b/packages/snaps-sdk/src/jsx/components/Banner.ts @@ -24,6 +24,7 @@ export type BannerChildren = SnapsChildren< * @param children - The content to display in the banner. * @param title - Title of the banner. * @param severity - Severity level of the banner. + * @category Component Props */ export type BannerProps = { children: BannerChildren; @@ -44,12 +45,14 @@ const TYPE = 'Banner'; * * Here is the banner content! * + * @category Components */ export const Banner = createSnapComponent(TYPE); /** * A Banner element. * - * @see Banner + * @see {@link Banner} + * @category Elements */ export type BannerElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/Box.ts b/packages/snaps-sdk/src/jsx/components/Box.ts index bed06118b2..a95c3db5c1 100644 --- a/packages/snaps-sdk/src/jsx/components/Box.ts +++ b/packages/snaps-sdk/src/jsx/components/Box.ts @@ -9,6 +9,7 @@ import { createSnapComponent } from '../component'; * @property alignment - The alignment mode to use within the box. Defaults to `start`. * @property crossAlignment - The cross alignment mode to use within the box. * @property center - Whether to center the children within the box. Defaults to `false`. + * @category Component Props */ export type BoxProps = { // We can't use `JSXElement` because it causes a circular reference. @@ -41,12 +42,14 @@ const TYPE = 'Box'; * * Hello world! * + * @category Components */ export const Box = createSnapComponent(TYPE); /** * A box element. * - * @see Box + * @see {@link Box} + * @category Elements */ export type BoxElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/Card.ts b/packages/snaps-sdk/src/jsx/components/Card.ts index 811f65df5d..14e7846188 100644 --- a/packages/snaps-sdk/src/jsx/components/Card.ts +++ b/packages/snaps-sdk/src/jsx/components/Card.ts @@ -9,6 +9,7 @@ import { createSnapComponent } from '../component'; * @property description - The description, shown below the title. * @property value - The value, shown on the right side. * @property extra - An additional optional value shown below the value. + * @category Component Props */ export type CardProps = { image?: string | undefined; @@ -32,12 +33,14 @@ const TYPE = 'Card'; * @returns A card element. * @example * + * @category Components */ export const Card = createSnapComponent(TYPE); /** * A card element. * - * @see Card + * @see {@link Card} + * @category Elements */ export type CardElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/Container.ts b/packages/snaps-sdk/src/jsx/components/Container.ts index 2f1c4b1b25..5e9c099983 100644 --- a/packages/snaps-sdk/src/jsx/components/Container.ts +++ b/packages/snaps-sdk/src/jsx/components/Container.ts @@ -11,6 +11,7 @@ export type ContainerBackgroundColor = 'default' | 'alternative'; * The props of the {@link Container} component. * * @property children - The Box and the Footer or the Box element. + * @category Component Props */ export type ContainerProps = { children: [GenericSnapElement, FooterElement] | GenericSnapElement; @@ -36,12 +37,14 @@ const TYPE = 'Container'; * * * + * @category Components */ export const Container = createSnapComponent(TYPE); /** * A container element. * - * @see Container + * @see {@link Container} + * @category Elements */ export type ContainerElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/Copyable.ts b/packages/snaps-sdk/src/jsx/components/Copyable.ts index 0fe333fac4..658020c5f5 100644 --- a/packages/snaps-sdk/src/jsx/components/Copyable.ts +++ b/packages/snaps-sdk/src/jsx/components/Copyable.ts @@ -7,6 +7,7 @@ import { createSnapComponent } from '../component'; * element. * @property sensitive - Whether the value is sensitive. If `true`, the value * will be hidden when the user is not interacting with the copyable element. + * @category Component Props */ export type CopyableProps = { value: string; @@ -27,12 +28,14 @@ const TYPE = 'Copyable'; * @example * * + * @category Components */ export const Copyable = createSnapComponent(TYPE); /** * A copyable element. * - * @see Copyable + * @see {@link Copyable} + * @category Elements */ export type CopyableElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/Divider.ts b/packages/snaps-sdk/src/jsx/components/Divider.ts index 3ae27e403e..9fef441458 100644 --- a/packages/snaps-sdk/src/jsx/components/Divider.ts +++ b/packages/snaps-sdk/src/jsx/components/Divider.ts @@ -11,12 +11,14 @@ const TYPE = 'Divider'; * @returns A divider element. * @example * + * @category Components */ export const Divider = createSnapComponent(TYPE); /** * A divider element. * - * @see Divider + * @see {@link Divider} + * @category Elements */ export type DividerElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/Footer.ts b/packages/snaps-sdk/src/jsx/components/Footer.ts index 5fd9ac2652..f787890bc6 100644 --- a/packages/snaps-sdk/src/jsx/components/Footer.ts +++ b/packages/snaps-sdk/src/jsx/components/Footer.ts @@ -5,6 +5,7 @@ import { createSnapComponent } from '../component'; * The props of the {@link Footer} component. * * @property children - The single or multiple buttons in the footer. + * @category Component Props */ export type FooterProps = { children: ButtonElement | [ButtonElement, ButtonElement]; @@ -23,12 +24,14 @@ const TYPE = 'Footer'; * * * + * @category Components */ export const Footer = createSnapComponent(TYPE); /** * A footer element. * - * @see Footer + * @see {@link Footer} + * @category Elements */ export type FooterElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/Heading.ts b/packages/snaps-sdk/src/jsx/components/Heading.ts index 33546a4d22..ee866d8d1a 100644 --- a/packages/snaps-sdk/src/jsx/components/Heading.ts +++ b/packages/snaps-sdk/src/jsx/components/Heading.ts @@ -6,6 +6,7 @@ import { createSnapComponent } from '../component'; * * @property children - The text to display in the heading. * @property size - The size of the heading. Defaults to `sm`. + * @category Component Props */ type HeadingProps = { children: StringElement; @@ -25,12 +26,14 @@ const TYPE = 'Heading'; * Hello world! * @example * Hello world! + * @category Components */ export const Heading = createSnapComponent(TYPE); /** * A heading element. * - * @see Heading + * @see {@link Heading} + * @category Elements */ export type HeadingElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/Icon.ts b/packages/snaps-sdk/src/jsx/components/Icon.ts index 048845ac90..cb0dae69b0 100644 --- a/packages/snaps-sdk/src/jsx/components/Icon.ts +++ b/packages/snaps-sdk/src/jsx/components/Icon.ts @@ -284,6 +284,7 @@ export enum IconName { * @property name - The name of the icon to display from a pre-defined list. * @property color - The color of the displayed icon. * @property size - The size of the displayed icon. Use `inherit` to size it the same as the text. + * @category Component Props */ export type IconProps = { name: `${IconName}`; @@ -303,12 +304,14 @@ const TYPE = 'Icon'; * @returns An icon element. * @example * + * @category Components */ export const Icon = createSnapComponent(TYPE); /** * An icon element. * - * @see Icon + * @see {@link Icon} + * @category Elements */ export type IconElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/Image.ts b/packages/snaps-sdk/src/jsx/components/Image.ts index 3fa023d3bb..6caab1e3d8 100644 --- a/packages/snaps-sdk/src/jsx/components/Image.ts +++ b/packages/snaps-sdk/src/jsx/components/Image.ts @@ -9,6 +9,7 @@ import { createSnapComponent } from '../component'; * the `data:` URL scheme to embed images inside the SVG. * @property alt - The alternative text of the image, which describes the image * for users who cannot see it. + * @category Component Props */ type ImageProps = { src: string; @@ -37,12 +38,14 @@ const TYPE = 'Image'; * @returns An image element. * @example * An example image + * @category Components */ export const Image = createSnapComponent(TYPE); /** * An image element. * - * @see Image + * @see {@link Image} + * @category Elements */ export type ImageElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/Link.ts b/packages/snaps-sdk/src/jsx/components/Link.ts index 5b6262e2dc..1b3c486b7d 100644 --- a/packages/snaps-sdk/src/jsx/components/Link.ts +++ b/packages/snaps-sdk/src/jsx/components/Link.ts @@ -22,6 +22,7 @@ export type LinkChildren = SnapsChildren< * @property children - The text to display in the link. * @property href - The URL to link to. This must be an `https` or `mailto` URL. * `http` is not allowed. + * @category Component Props */ export type LinkProps = { children: LinkChildren; @@ -40,12 +41,14 @@ const TYPE = 'Link'; * @returns A link element. * @example * Click here + * @category Components */ export const Link = createSnapComponent(TYPE); /** * A link element. * - * @see Link + * @see {@link Link} + * @category Elements */ export type LinkElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/Row.ts b/packages/snaps-sdk/src/jsx/components/Row.ts index 12d286ad92..07cb840316 100644 --- a/packages/snaps-sdk/src/jsx/components/Row.ts +++ b/packages/snaps-sdk/src/jsx/components/Row.ts @@ -13,6 +13,7 @@ export type RowChildren = GenericSnapElement; * @property children - The content of the row. This can be any component. * @property variant - The variant of the row. * @property tooltip - An optional tooltip to show for the row. + * @category Component Props */ export type RowProps = { label: string; @@ -37,12 +38,14 @@ const TYPE = 'Row'; * *
* + * @category Components */ export const Row = createSnapComponent(TYPE); /** * A row element. * - * @see Row + * @see {@link Row} + * @category Elements */ export type RowElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/Section.ts b/packages/snaps-sdk/src/jsx/components/Section.ts index abeb084609..b21ae3819c 100644 --- a/packages/snaps-sdk/src/jsx/components/Section.ts +++ b/packages/snaps-sdk/src/jsx/components/Section.ts @@ -5,6 +5,7 @@ import { createSnapComponent } from '../component'; * The props of the {@link Section} component. * * @property children - The children of the section. + * @category Component Props */ export type SectionProps = { // We can't use `JSXElement` because it causes a circular reference. @@ -39,12 +40,14 @@ const TYPE = 'Section'; *
* * + * @category Components */ export const Section = createSnapComponent(TYPE); /** * A section element. * - * @see Section + * @see {@link Section} + * @category Elements */ export type SectionElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/Skeleton.ts b/packages/snaps-sdk/src/jsx/components/Skeleton.ts index adf72774b7..80b9967fdd 100644 --- a/packages/snaps-sdk/src/jsx/components/Skeleton.ts +++ b/packages/snaps-sdk/src/jsx/components/Skeleton.ts @@ -7,6 +7,7 @@ import { createSnapComponent } from '../component'; * @param width - Width of the Skeleton. * @param width - Height of the Skeleton. * @param borderRadius - Border radius of the Skeleton. + * @category Component Props */ export type SkeletonProps = { width?: number | string | undefined; @@ -25,12 +26,14 @@ const TYPE = 'Skeleton'; * @param props.borderRadius - Border radius of the Skeleton. * @example * + * @category Components */ export const Skeleton = createSnapComponent(TYPE); /** * A Skeleton element. * - * @see Skeleton + * @see {@link Skeleton} + * @category Elements */ export type SkeletonElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/Spinner.ts b/packages/snaps-sdk/src/jsx/components/Spinner.ts index f28c263752..071385ae26 100644 --- a/packages/snaps-sdk/src/jsx/components/Spinner.ts +++ b/packages/snaps-sdk/src/jsx/components/Spinner.ts @@ -11,12 +11,14 @@ const TYPE = 'Spinner'; * @returns A spinner element. * @example * + * @category Components */ export const Spinner = createSnapComponent(TYPE); /** * A spinner element. * - * @see Spinner + * @see {@link Spinner} + * @category Elements */ export type SpinnerElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/Text.ts b/packages/snaps-sdk/src/jsx/components/Text.ts index a5f94962e2..80d101af46 100644 --- a/packages/snaps-sdk/src/jsx/components/Text.ts +++ b/packages/snaps-sdk/src/jsx/components/Text.ts @@ -35,6 +35,7 @@ export type TextColors = * @property color - The color of the text. * @property size - The size of the text. Defaults to `md`. * @property fontWeight - The font weight of the text. Defaults to `regular`. + * @category Component Props */ export type TextProps = { children: TextChildren; @@ -72,12 +73,14 @@ const TYPE = 'Text'; * * Hello world! * + * @category Components */ export const Text = createSnapComponent(TYPE); /** * A text element. * - * @see Text + * @see {@link Text} + * @category Elements */ export type TextElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/Tooltip.ts b/packages/snaps-sdk/src/jsx/components/Tooltip.ts index ca59d33373..2d191bcd3f 100644 --- a/packages/snaps-sdk/src/jsx/components/Tooltip.ts +++ b/packages/snaps-sdk/src/jsx/components/Tooltip.ts @@ -19,6 +19,7 @@ export type TooltipChildren = * * @property children - The children of the box. * @property content - The text to display in the tooltip. + * @category Component Props */ export type TooltipProps = { children: TooltipChildren; @@ -47,12 +48,14 @@ const TYPE = 'Tooltip'; * Text with formatting}> * Hello world! * + * @category Components */ export const Tooltip = createSnapComponent(TYPE); /** * A tooltip element. * - * @see Tooltip + * @see {@link Tooltip} + * @category Elements */ export type TooltipElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/Value.ts b/packages/snaps-sdk/src/jsx/components/Value.ts index 026ef54401..3175e92b12 100644 --- a/packages/snaps-sdk/src/jsx/components/Value.ts +++ b/packages/snaps-sdk/src/jsx/components/Value.ts @@ -6,6 +6,7 @@ import { createSnapComponent } from '../component'; * * @property value - The value shown on the right side. * @property extra - The extra text shown on the left side. + * @category Component Props */ export type ValueProps = { value: TextElement | string; @@ -29,12 +30,14 @@ const TYPE = 'Value'; * * @example * 0.05 ETH} extra={$200} /> + * @category Components */ export const Value = createSnapComponent(TYPE); /** * A value element. * - * @see Value + * @see {@link Value} + * @category Elements */ export type ValueElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/form/AccountSelector.ts b/packages/snaps-sdk/src/jsx/components/form/AccountSelector.ts index b36e7b56c5..2c0af478ba 100644 --- a/packages/snaps-sdk/src/jsx/components/form/AccountSelector.ts +++ b/packages/snaps-sdk/src/jsx/components/form/AccountSelector.ts @@ -12,6 +12,7 @@ import { createSnapComponent } from '../../component'; * @property switchGlobalAccount - Whether to switch the selected account in the client. * @property disabled - Whether the account selector is disabled. * @property value - The selected address. + * @category Component Props */ export type AccountSelectorProps = { name: string; @@ -48,6 +49,7 @@ const TYPE = 'AccountSelector'; * * @example * + * @category Components */ export const AccountSelector = createSnapComponent< AccountSelectorProps, @@ -57,6 +59,7 @@ export const AccountSelector = createSnapComponent< /** * An account selector element. * - * @see AccountSelector + * @see {@link AccountSelector} + * @category Elements */ export type AccountSelectorElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/form/AddressInput.ts b/packages/snaps-sdk/src/jsx/components/form/AddressInput.ts index 2d1595d5dc..b23e9692d8 100644 --- a/packages/snaps-sdk/src/jsx/components/form/AddressInput.ts +++ b/packages/snaps-sdk/src/jsx/components/form/AddressInput.ts @@ -2,6 +2,17 @@ import type { CaipChainId } from '@metamask/utils'; import { createSnapComponent } from '../../component'; +/** + * The props of the {@link AddressInput} component. + * + * @property name - The name of the input field. + * @property value - The value of the input field. + * @property chainId - The CAIP-2 chain ID of the address. + * @property placeholder - The placeholder text of the input field. + * @property disabled - Whether the input field is disabled. + * @property displayAvatar - Whether to display the avatar of the address. + * @category Component Props + */ export type AddressInputProps = { name: string; value?: string | undefined; @@ -26,9 +37,16 @@ const TYPE = 'AddressInput'; * @returns An input element. * @example * + * @category Components */ export const AddressInput = createSnapComponent( TYPE, ); +/** + * An address input element. + * + * @see {@link AddressInput} + * @category Elements + */ export type AddressInputElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/form/AssetSelector.ts b/packages/snaps-sdk/src/jsx/components/form/AssetSelector.ts index 54a9a729d0..34f9222b51 100644 --- a/packages/snaps-sdk/src/jsx/components/form/AssetSelector.ts +++ b/packages/snaps-sdk/src/jsx/components/form/AssetSelector.ts @@ -19,6 +19,7 @@ import { createSnapComponent } from '../../component'; * @property value - The selected value of the asset selector. * Only non-EIP-155 namespaces are supported for now. * @property disabled - Whether the asset selector is disabled. + * @category Component Props */ export type AssetSelectorProps = { name: string; @@ -59,10 +60,17 @@ const TYPE = 'AssetSelector'; * ]} * chainIds={['solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp']} * /> + * @category Components */ export const AssetSelector = createSnapComponent< AssetSelectorProps, typeof TYPE >(TYPE); +/** + * An asset selector element. + * + * @see {@link AssetSelector} + * @category Elements + */ export type AssetSelectorElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/form/Button.ts b/packages/snaps-sdk/src/jsx/components/form/Button.ts index f165bb30db..95d2773344 100644 --- a/packages/snaps-sdk/src/jsx/components/form/Button.ts +++ b/packages/snaps-sdk/src/jsx/components/form/Button.ts @@ -19,6 +19,7 @@ import type { ImageElement } from '../Image'; * @property disabled - Whether the button is disabled. Defaults to `false`. * @property loading - Whether the button is loading. Defaults to `false`. * @property form - The name of the form component to associate the button with. + * @category Component Props */ export type ButtonProps = { children: SnapsChildren; @@ -42,12 +43,14 @@ const TYPE = 'Button'; * @returns A button element. * @example * + * @category Components */ export const Button = createSnapComponent(TYPE); /** * A button element. * - * @see Button + * @see {@link Button} + * @category Elements */ export type ButtonElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/form/Checkbox.ts b/packages/snaps-sdk/src/jsx/components/form/Checkbox.ts index df462ef5cf..3fb27d783d 100644 --- a/packages/snaps-sdk/src/jsx/components/form/Checkbox.ts +++ b/packages/snaps-sdk/src/jsx/components/form/Checkbox.ts @@ -9,6 +9,7 @@ import { createSnapComponent } from '../../component'; * @property label - An optional label for the checkbox. * @property variant - An optional variant for the checkbox. * @property disabled - Whether the checkbox is disabled. + * @category Component Props */ export type CheckboxProps = { name: string; @@ -33,12 +34,14 @@ const TYPE = 'Checkbox'; * @returns A checkbox element. * @example * + * @category Components */ export const Checkbox = createSnapComponent(TYPE); /** * A checkbox element. * - * @see Checkbox + * @see {@link Checkbox} + * @category Elements */ export type CheckboxElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/form/DateTimePicker.ts b/packages/snaps-sdk/src/jsx/components/form/DateTimePicker.ts index 31a102eafd..05369d9416 100644 --- a/packages/snaps-sdk/src/jsx/components/form/DateTimePicker.ts +++ b/packages/snaps-sdk/src/jsx/components/form/DateTimePicker.ts @@ -13,6 +13,7 @@ import { createSnapComponent } from '../../component'; * @property disabled - Whether the date/time picker field is disabled. * @property disablePast - Whether to allow selection of past dates. Defaults to false. * @property disableFuture - Whether to allow selection of future dates. Defaults to false. + * @category Component Props */ export type DateTimePickerProps = { name: string; @@ -39,6 +40,7 @@ const TYPE = 'DateTimePicker'; * @param props.disabled - Whether the date/time picker field is disabled. * @param props.disablePast - Whether to allow selection of past dates. Defaults to false. * @param props.disableFuture - Whether to allow selection of future dates. Defaults to false. + * @category Components */ export const DateTimePicker = createSnapComponent< DateTimePickerProps, @@ -48,6 +50,7 @@ export const DateTimePicker = createSnapComponent< /** * A DateTimePicker element. * - * @see DateTimePicker + * @see {@link DateTimePicker} + * @category Elements */ export type DateTimePickerElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/form/Dropdown.ts b/packages/snaps-sdk/src/jsx/components/form/Dropdown.ts index 22e556523c..2b8133f37d 100644 --- a/packages/snaps-sdk/src/jsx/components/form/Dropdown.ts +++ b/packages/snaps-sdk/src/jsx/components/form/Dropdown.ts @@ -10,6 +10,7 @@ import { createSnapComponent } from '../../component'; * @property value - The selected value of the dropdown. * @property children - The children of the dropdown. * @property disabled - Whether the dropdown is disabled. + * @category Component Props */ export type DropdownProps = { name: string; @@ -36,12 +37,14 @@ const TYPE = 'Dropdown'; * * * + * @category Components */ export const Dropdown = createSnapComponent(TYPE); /** * A dropdown element. * - * @see Dropdown + * @see {@link Dropdown} + * @category Elements */ export type DropdownElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/form/Field.ts b/packages/snaps-sdk/src/jsx/components/form/Field.ts index 7d9caf33dd..b691b0d8fa 100644 --- a/packages/snaps-sdk/src/jsx/components/form/Field.ts +++ b/packages/snaps-sdk/src/jsx/components/form/Field.ts @@ -17,6 +17,7 @@ import { createSnapComponent } from '../../component'; * @property label - The label of the field. * @property error - The error message of the field. * @property children - The input field and the submit button. + * @category Component Props */ export type FieldProps = { label?: string | undefined; @@ -56,12 +57,14 @@ const TYPE = 'Field'; * * * + * @category Components */ export const Field = createSnapComponent(TYPE); /** * A field element. * - * @see Field + * @see {@link Field} + * @category Elements */ export type FieldElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/form/FileInput.ts b/packages/snaps-sdk/src/jsx/components/form/FileInput.ts index 56bc6b9b95..16169e33bc 100644 --- a/packages/snaps-sdk/src/jsx/components/form/FileInput.ts +++ b/packages/snaps-sdk/src/jsx/components/form/FileInput.ts @@ -11,6 +11,7 @@ import { createSnapComponent } from '../../component'; * @property compact - Whether the file input field is compact. Default is * `false`. * @property disabled - whether the file input is disabled. + * @category Component Props */ export type FileInputProps = { name: string; @@ -45,12 +46,14 @@ const TYPE = 'FileInput'; * * * + * @category Components */ export const FileInput = createSnapComponent(TYPE); /** * A file input element. * - * @see FileInput + * @see {@link FileInput} + * @category Elements */ export type FileInputElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/form/Form.ts b/packages/snaps-sdk/src/jsx/components/form/Form.ts index 879d0c2b84..a39759c18b 100644 --- a/packages/snaps-sdk/src/jsx/components/form/Form.ts +++ b/packages/snaps-sdk/src/jsx/components/form/Form.ts @@ -9,6 +9,7 @@ import { createSnapComponent } from '../../component'; * @property children - The children of the form. * @property name - The name of the form. This is used to identify the form in * the event handler. + * @category Component Props */ export type FormProps = { children: SnapsChildren; @@ -33,12 +34,14 @@ const TYPE = 'Form'; * * * + * @category Components */ export const Form = createSnapComponent(TYPE); /** * A form element. * - * @see Form + * @see {@link Form} + * @category Elements */ export type FormElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/form/Input.ts b/packages/snaps-sdk/src/jsx/components/form/Input.ts index 6897019687..752193b724 100644 --- a/packages/snaps-sdk/src/jsx/components/form/Input.ts +++ b/packages/snaps-sdk/src/jsx/components/form/Input.ts @@ -2,6 +2,9 @@ import { createSnapComponent } from '../../component'; // TODO: Add the `onChange` prop to the `InputProps` type. +/** + * @category Component Props + */ export type GenericInputProps = { name: string; value?: string | undefined; @@ -9,10 +12,19 @@ export type GenericInputProps = { disabled?: boolean | undefined; }; +/** + * @category Component Props + */ export type TextInputProps = { type: 'text' } & GenericInputProps; +/** + * @category Component Props + */ export type PasswordInputProps = { type: 'password' } & GenericInputProps; +/** + * @category Component Props + */ export type NumberInputProps = { type: 'number'; min?: number; @@ -34,6 +46,7 @@ export type NumberInputProps = { * Only applicable to the type `number` input. * @property step - The step value of the input field. * Only applicable to the type `number` input. + * @category Component Props */ export type InputProps = | GenericInputProps @@ -64,12 +77,14 @@ const TYPE = 'Input'; * * @example * + * @category Components */ export const Input = createSnapComponent(TYPE); /** * An input element. * - * @see Input + * @see {@link Input} + * @category Elements */ export type InputElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/form/Option.ts b/packages/snaps-sdk/src/jsx/components/form/Option.ts index 631f9e74cf..91bfc3b0af 100644 --- a/packages/snaps-sdk/src/jsx/components/form/Option.ts +++ b/packages/snaps-sdk/src/jsx/components/form/Option.ts @@ -11,6 +11,7 @@ import { createSnapComponent } from '../../component'; * state in the form data. * @property children - The text to display. * @property disabled - Whether the option is disabled. + * @category Component Props */ type OptionProps = { value: string; @@ -36,12 +37,14 @@ const TYPE = 'Option'; * * * + * @category Components */ export const Option = createSnapComponent(TYPE); /** * A dropdown option element. * - * @see Option + * @see {@link Option} + * @category Elements */ export type OptionElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/form/Radio.ts b/packages/snaps-sdk/src/jsx/components/form/Radio.ts index f52998725e..0478bc334a 100644 --- a/packages/snaps-sdk/src/jsx/components/form/Radio.ts +++ b/packages/snaps-sdk/src/jsx/components/form/Radio.ts @@ -7,6 +7,7 @@ import { createSnapComponent } from '../../component'; * state in the form data. * @property children - The text to display. * @property disabled - Whether the radio is disabled. + * @category Component Props */ type RadioProps = { value: string; @@ -32,12 +33,14 @@ const TYPE = 'Radio'; * Option 2 * Option 3 * + * @category Components */ export const Radio = createSnapComponent(TYPE); /** * A radio element. * - * @see Radio + * @see {@link Radio} + * @category Elements */ export type RadioElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/form/RadioGroup.ts b/packages/snaps-sdk/src/jsx/components/form/RadioGroup.ts index 88fe599bd9..9012d1f67e 100644 --- a/packages/snaps-sdk/src/jsx/components/form/RadioGroup.ts +++ b/packages/snaps-sdk/src/jsx/components/form/RadioGroup.ts @@ -12,6 +12,7 @@ const TYPE = 'RadioGroup'; * @property value - The value of the radio group element. * @property children - Radio options in form of elements. * @property disabled - Whether the radio group is disabled. + * @category Component Props */ type RadioGroupProps = { name: string; @@ -31,6 +32,7 @@ type RadioGroupProps = { * @returns A RadioGroup element. * @example * + * @category Components */ export const RadioGroup = createSnapComponent( TYPE, @@ -39,6 +41,7 @@ export const RadioGroup = createSnapComponent( /** * A RadioGroup element. * - * @see RadioGroup + * @see {@link RadioGroup} + * @category Elements */ export type RadioGroupElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/form/Selector.ts b/packages/snaps-sdk/src/jsx/components/form/Selector.ts index 908d765a25..4fae17587e 100644 --- a/packages/snaps-sdk/src/jsx/components/form/Selector.ts +++ b/packages/snaps-sdk/src/jsx/components/form/Selector.ts @@ -11,6 +11,7 @@ import { createSnapComponent } from '../../component'; * @property value - The selected value of the selector. * @property children - The children of the selector. * @property disabled - Whether the selector is disabled. + * @category Component Props */ export type SelectorProps = { name: string; @@ -39,12 +40,14 @@ const TYPE = 'Selector'; * * * + * @category Components */ export const Selector = createSnapComponent(TYPE); /** * A selector element. * - * @see Selector + * @see {@link Selector} + * @category Elements */ export type SelectorElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/form/SelectorOption.ts b/packages/snaps-sdk/src/jsx/components/form/SelectorOption.ts index 00c847c01c..38e9e8e13d 100644 --- a/packages/snaps-sdk/src/jsx/components/form/SelectorOption.ts +++ b/packages/snaps-sdk/src/jsx/components/form/SelectorOption.ts @@ -8,6 +8,7 @@ import type { CardElement } from '../Card'; * state in the form data. * @property children - The component to display. * @property disabled - Whether the selector option is disabled. + * @category Component Props */ export type SelectorOptionProps = { value: string; @@ -33,6 +34,7 @@ const TYPE = 'SelectorOption'; * * * + * @category Components */ export const SelectorOption = createSnapComponent< SelectorOptionProps, @@ -42,6 +44,7 @@ export const SelectorOption = createSnapComponent< /** * A selector option element. * - * @see SelectorOption + * @see {@link SelectorOption} + * @category Elements */ export type SelectorOptionElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/formatting/Bold.ts b/packages/snaps-sdk/src/jsx/components/formatting/Bold.ts index c98eb27c34..f981f3d827 100644 --- a/packages/snaps-sdk/src/jsx/components/formatting/Bold.ts +++ b/packages/snaps-sdk/src/jsx/components/formatting/Bold.ts @@ -16,6 +16,7 @@ export type BoldChildren = SnapsChildren< * The props of the {@link Bold} component. * * @property children - The text to display in bold. + * @category Component Props */ export type BoldProps = { children: BoldChildren; @@ -34,12 +35,14 @@ const TYPE = 'Bold'; * * Hello world! * + * @category Components */ export const Bold = createSnapComponent(TYPE); /** * A bold element. * - * @see Bold + * @see {@link Bold} + * @category Elements */ export type BoldElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/components/formatting/Italic.ts b/packages/snaps-sdk/src/jsx/components/formatting/Italic.ts index 5d68913576..1ba770e725 100644 --- a/packages/snaps-sdk/src/jsx/components/formatting/Italic.ts +++ b/packages/snaps-sdk/src/jsx/components/formatting/Italic.ts @@ -15,6 +15,7 @@ export type ItalicChildren = SnapsChildren< * * @property children - The text to display in italic. This should be a string * or an array of strings. + * @category Component Props */ export type ItalicProps = { children: ItalicChildren; @@ -34,12 +35,14 @@ const TYPE = 'Italic'; * * Hello world! * + * @category Components */ export const Italic = createSnapComponent(TYPE); /** * An italic element. * - * @see Italic + * @see {@link Italic} + * @category Elements */ export type ItalicElement = ReturnType; diff --git a/packages/snaps-sdk/src/jsx/index.ts b/packages/snaps-sdk/src/jsx/index.ts index b5cb2e6a51..6d8993e8a9 100644 --- a/packages/snaps-sdk/src/jsx/index.ts +++ b/packages/snaps-sdk/src/jsx/index.ts @@ -1,3 +1,26 @@ +/** + * The JSX entry point for the Snaps SDK, which can be accessed by importing + * from `@metamask/snaps-sdk/jsx`. + * + * To use the JSX features, ensure your project is set up to handle JSX syntax, + * and configure the JSX import source to point to `@metamask/snaps-sdk/jsx`. + * For example, in a TypeScript project, you can set the `jsxImportSource` + * compiler option in your `tsconfig.json`: + * + * ```json + * { + * "compilerOptions": { + * "jsx": "react-jsx", + * "jsxImportSource": "@metamask/snaps-sdk/jsx" + * } + * } + * ``` + * + * @module Main/JSX + * @primaryExport + * @showCategories + */ + export * from './component'; export * from './components'; export * from './jsx-runtime'; diff --git a/packages/snaps-sdk/typedoc.jsonc b/packages/snaps-sdk/typedoc.jsonc new file mode 100644 index 0000000000..09f0015989 --- /dev/null +++ b/packages/snaps-sdk/typedoc.jsonc @@ -0,0 +1,37 @@ +{ + "name": "Snaps SDK", + "entryPoints": [ + "./src/index.ts", + "./src/jsx/index.ts" + ], + + // Hide the internal APIs. + "exclude": [ + "./src/internals/**" + ], + + // Exclude internal and private members. + "excludeInternal": true, + "excludePrivate": true, + + // Customise the favicon to use the MetaMask fox icon. + "favicon": "./assets/favicon.svg", + + // Hide the TypeDoc generator from the footer. + "hideGenerator": true, + + // Add additional links to the header. + "navigationLinks": { + "MetaMask Documentation": "https://docs.metamask.io/", + "GitHub": "https://github.com/MetaMask/snaps" + }, + + // Specify the output directory for the generated documentation. + "out": "docs", + + // Configuration for the theme to use. + "plugin": [ + "typedoc-theme-fresh" + ], + "theme": "fresh" +} diff --git a/yarn.lock b/yarn.lock index c06ea29471..a8453ec082 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2071,6 +2071,19 @@ __metadata: languageName: node linkType: hard +"@gerrit0/mini-shiki@npm:^3.17.0": + version: 3.22.0 + resolution: "@gerrit0/mini-shiki@npm:3.22.0" + dependencies: + "@shikijs/engine-oniguruma": "npm:^3.22.0" + "@shikijs/langs": "npm:^3.22.0" + "@shikijs/themes": "npm:^3.22.0" + "@shikijs/types": "npm:^3.22.0" + "@shikijs/vscode-textmate": "npm:^10.0.2" + checksum: 10/c81a6320f9286ecbd77084687da9a30a4fbd3041ad280b5bc72835fec588e3968df30bde8007ae43924371f1cb1c767a2e65dce68669973bca8b6f866e6f288d + languageName: node + linkType: hard + "@humanfs/core@npm:^0.19.1": version: 0.19.1 resolution: "@humanfs/core@npm:0.19.1" @@ -4575,6 +4588,8 @@ __metadata: luxon: "npm:^3.5.0" prettier: "npm:^3.3.3" ts-jest: "npm:^29.1.1" + typedoc: "npm:^0.28.16" + typedoc-theme-fresh: "npm:^0.2.3" typescript: "npm:~5.3.3" languageName: unknown linkType: soft @@ -5591,6 +5606,51 @@ __metadata: languageName: node linkType: hard +"@shikijs/engine-oniguruma@npm:^3.22.0": + version: 3.22.0 + resolution: "@shikijs/engine-oniguruma@npm:3.22.0" + dependencies: + "@shikijs/types": "npm:3.22.0" + "@shikijs/vscode-textmate": "npm:^10.0.2" + checksum: 10/611654868bc2538ab4d7c3770ad2829a623fcf354ce5c09ba8fde29ecc106b5e4a6270de7d970da4524c1ad00d4f7ed3e5afef2be2ff0b94f8bb8541d0775320 + languageName: node + linkType: hard + +"@shikijs/langs@npm:^3.22.0": + version: 3.22.0 + resolution: "@shikijs/langs@npm:3.22.0" + dependencies: + "@shikijs/types": "npm:3.22.0" + checksum: 10/091cdaeda7763e1170a6a289315a8371f07af541ad4d8fe17a247b45c4a3be82dc9d321a1e4589cdc8464a694692a5c8bfdd1909372b6ec52b0caa53d69e4a1f + languageName: node + linkType: hard + +"@shikijs/themes@npm:^3.22.0": + version: 3.22.0 + resolution: "@shikijs/themes@npm:3.22.0" + dependencies: + "@shikijs/types": "npm:3.22.0" + checksum: 10/ba60849b4056ea4e243e2c2047382312e504d10f8e1ee09d73041d9de54bce30e28c79168406d8a8e3b7a7ab19d0f9c610e3469679f96145aa975460ac7e1407 + languageName: node + linkType: hard + +"@shikijs/types@npm:3.22.0, @shikijs/types@npm:^3.22.0": + version: 3.22.0 + resolution: "@shikijs/types@npm:3.22.0" + dependencies: + "@shikijs/vscode-textmate": "npm:^10.0.2" + "@types/hast": "npm:^3.0.4" + checksum: 10/c5abd9050d4645bbf9f6c9af1a3df31d24d823d21c232e47b171cc68bd4865adab20533503a5c97ffb9e87eae2f88e7a3835d64a0a8aa11a69dbfd45aabd58bf + languageName: node + linkType: hard + +"@shikijs/vscode-textmate@npm:^10.0.2": + version: 10.0.2 + resolution: "@shikijs/vscode-textmate@npm:10.0.2" + checksum: 10/d924cba8a01cd9ca12f56ba097d628fdb81455abb85884c8d8a5ae85b628a37dd5907e7691019b97107bd6608c866adf91ba04a1c3bba391281c88e386c044ea + languageName: node + linkType: hard + "@sinclair/typebox@npm:^0.27.8": version: 0.27.8 resolution: "@sinclair/typebox@npm:0.27.8" @@ -6164,6 +6224,15 @@ __metadata: languageName: node linkType: hard +"@types/hast@npm:^3.0.4": + version: 3.0.4 + resolution: "@types/hast@npm:3.0.4" + dependencies: + "@types/unist": "npm:*" + checksum: 10/732920d81bb7605895776841b7658b4d8cc74a43a8fa176017cc0fb0ecc1a4c82a2b75a4fe6b71aa262b649d3fb62858c6789efa3793ea1d40269953af96ecb5 + languageName: node + linkType: hard + "@types/hoist-non-react-statics@npm:^3.3.1": version: 3.3.1 resolution: "@types/hoist-non-react-statics@npm:3.3.1" @@ -6494,6 +6563,13 @@ __metadata: languageName: node linkType: hard +"@types/unist@npm:*": + version: 3.0.3 + resolution: "@types/unist@npm:3.0.3" + checksum: 10/96e6453da9e075aaef1dc22482463898198acdc1eeb99b465e65e34303e2ec1e3b1ed4469a9118275ec284dc98019f63c3f5d49422f0e4ac707e5ab90fb3b71a + languageName: node + linkType: hard + "@types/use-sync-external-store@npm:^0.0.3": version: 0.0.3 resolution: "@types/use-sync-external-store@npm:0.0.3" @@ -13671,6 +13747,15 @@ __metadata: languageName: node linkType: hard +"linkify-it@npm:^5.0.0": + version: 5.0.0 + resolution: "linkify-it@npm:5.0.0" + dependencies: + uc.micro: "npm:^2.0.0" + checksum: 10/ef3b7609dda6ec0c0be8a7b879cea195f0d36387b0011660cd6711bba0ad82137f59b458b7e703ec74f11d88e7c1328e2ad9b855a8500c0ded67461a8c4519e6 + languageName: node + linkType: hard + "lint-staged@npm:^12.4.1": version: 12.4.1 resolution: "lint-staged@npm:12.4.1" @@ -13859,6 +13944,13 @@ __metadata: languageName: node linkType: hard +"lunr@npm:^2.3.9": + version: 2.3.9 + resolution: "lunr@npm:2.3.9" + checksum: 10/f2f6db34c046f5a767782fe2454e6dd69c75ba3c5cf5c1cb9cacca2313a99c2ba78ff8fa67dac866fb7c4ffd5f22e06684793f5f15ba14bddb598b94513d54bf + languageName: node + linkType: hard + "luxon@npm:3.3.0": version: 3.3.0 resolution: "luxon@npm:3.3.0" @@ -13978,6 +14070,22 @@ __metadata: languageName: node linkType: hard +"markdown-it@npm:^14.1.0": + version: 14.1.0 + resolution: "markdown-it@npm:14.1.0" + dependencies: + argparse: "npm:^2.0.1" + entities: "npm:^4.4.0" + linkify-it: "npm:^5.0.0" + mdurl: "npm:^2.0.0" + punycode.js: "npm:^2.3.1" + uc.micro: "npm:^2.1.0" + bin: + markdown-it: bin/markdown-it.mjs + checksum: 10/f34f921be178ed0607ba9e3e27c733642be445e9bb6b1dba88da7aafe8ba1bc5d2f1c3aa8f3fc33b49a902da4e4c08c2feadfafb290b8c7dda766208bb6483a9 + languageName: node + linkType: hard + "marked@npm:^12.0.1": version: 12.0.1 resolution: "marked@npm:12.0.1" @@ -14005,6 +14113,13 @@ __metadata: languageName: node linkType: hard +"mdurl@npm:^2.0.0": + version: 2.0.0 + resolution: "mdurl@npm:2.0.0" + checksum: 10/1720349d4a53e401aa993241368e35c0ad13d816ad0b28388928c58ca9faa0cf755fa45f18ccbf64f4ce54a845a50ddce5c84e4016897b513096a68dac4b0158 + languageName: node + linkType: hard + "media-typer@npm:0.3.0": version: 0.3.0 resolution: "media-typer@npm:0.3.0" @@ -15514,6 +15629,13 @@ __metadata: languageName: node linkType: hard +"punycode.js@npm:^2.3.1": + version: 2.3.1 + resolution: "punycode.js@npm:2.3.1" + checksum: 10/f0e946d1edf063f9e3d30a32ca86d8ff90ed13ca40dad9c75d37510a04473340cfc98db23a905cc1e517b1e9deb0f6021dce6f422ace235c60d3c9ac47c5a16a + languageName: node + linkType: hard + "punycode@npm:2.1.0": version: 2.1.0 resolution: "punycode@npm:2.1.0" @@ -17892,6 +18014,32 @@ __metadata: languageName: node linkType: hard +"typedoc-theme-fresh@npm:^0.2.3": + version: 0.2.3 + resolution: "typedoc-theme-fresh@npm:0.2.3" + peerDependencies: + typedoc: ^0.28.14 + checksum: 10/53d0e7682a99b0e3abffef8da3e1897d677837618f428bbeb4ee7f83ba93ac1435bfbf275cfc99ad3610cd9ba81947c313b893769dff8170c07987fd835da8f0 + languageName: node + linkType: hard + +"typedoc@npm:^0.28.16": + version: 0.28.16 + resolution: "typedoc@npm:0.28.16" + dependencies: + "@gerrit0/mini-shiki": "npm:^3.17.0" + lunr: "npm:^2.3.9" + markdown-it: "npm:^14.1.0" + minimatch: "npm:^9.0.5" + yaml: "npm:^2.8.1" + peerDependencies: + typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x + bin: + typedoc: bin/typedoc + checksum: 10/657afd087d88a14cf77ad941de8913041a6a025e87c78833a5ee58a52b8252b685730394ab7920781b0b2faa0507b1c9d87fcf82dd86d1b788420716fc17ded3 + languageName: node + linkType: hard + "typescript-compare@npm:^0.0.2": version: 0.0.2 resolution: "typescript-compare@npm:0.0.2" @@ -17951,6 +18099,13 @@ __metadata: languageName: node linkType: hard +"uc.micro@npm:^2.0.0, uc.micro@npm:^2.1.0": + version: 2.1.0 + resolution: "uc.micro@npm:2.1.0" + checksum: 10/37197358242eb9afe367502d4638ac8c5838b78792ab218eafe48287b0ed28aaca268ec0392cc5729f6c90266744de32c06ae938549aee041fc93b0f9672d6b2 + languageName: node + linkType: hard + "uncontrollable@npm:^7.2.1": version: 7.2.1 resolution: "uncontrollable@npm:7.2.1" @@ -18870,10 +19025,12 @@ __metadata: languageName: node linkType: hard -"yaml@npm:^2.2.2": - version: 2.3.4 - resolution: "yaml@npm:2.3.4" - checksum: 10/f8207ce43065a22268a2806ea6a0fa3974c6fde92b4b2fa0082357e487bc333e85dc518910007e7ac001b532c7c84bd3eccb6c7757e94182b564028b0008f44b +"yaml@npm:^2.2.2, yaml@npm:^2.8.1": + version: 2.8.2 + resolution: "yaml@npm:2.8.2" + bin: + yaml: bin.mjs + checksum: 10/4eab0074da6bc5a5bffd25b9b359cf7061b771b95d1b3b571852098380db3b1b8f96e0f1f354b56cc7216aa97cea25163377ccbc33a2e9ce00316fe8d02f4539 languageName: node linkType: hard