diff --git a/.changeset/pink-pens-turn.md b/.changeset/pink-pens-turn.md new file mode 100644 index 00000000000..a49ba48448f --- /dev/null +++ b/.changeset/pink-pens-turn.md @@ -0,0 +1,2 @@ +--- +--- \ No newline at end of file diff --git a/apps/docs/.gitignore b/apps/docs/.gitignore index dca506bbece..f575016c740 100644 --- a/apps/docs/.gitignore +++ b/apps/docs/.gitignore @@ -1,2 +1,4 @@ .vitepress/cache .vitepress/.temp + +src/api \ No newline at end of file diff --git a/apps/docs/.typedoc/api-readme.md b/apps/docs/.typedoc/api-readme.md new file mode 100644 index 00000000000..ab179391bc0 --- /dev/null +++ b/apps/docs/.typedoc/api-readme.md @@ -0,0 +1,10 @@ + + +# The Fuel TypeScript SDK API Documentation + +
+ +#### Version Notice: Docs generated using Fuels `v{{fuels}}`, Fuel Core `v{{fuelCore}}`, Sway `v{{forc}}`, and Forc `v{{forc}}`. diff --git a/apps/docs/.vitepress/config.ts b/apps/docs/.vitepress/config.ts index 51991ba0c93..c3f7486a4e8 100644 --- a/apps/docs/.vitepress/config.ts +++ b/apps/docs/.vitepress/config.ts @@ -354,6 +354,42 @@ export default defineConfig({ }, ], }, + { + text: 'API', + link: '/api/', + items: [ + { + text: 'Address', + link: '/api/modules/fuel_ts_address', + collapsed: true, + items: [ + { + text: 'Address', + link: '/api/classes/fuel_ts_address-Address', + }, + ], + }, + { + text: 'Interfaces', + link: '/api/modules/fuel_ts_interfaces', + collapsed: true, + items: [ + { + text: 'AbstractAccount', + link: 'api/classes/fuel_ts_interfaces-AbstractAccount', + }, + { + text: 'AbstractAddress', + link: 'api/classes/fuel_ts_interfaces-AbstractAddress', + }, + { + text: 'AbstractContract', + link: 'api/classes/fuel_ts_interfaces-AbstractContract', + }, + ], + }, + ], + }, ], }, }); diff --git a/apps/docs/package.json b/apps/docs/package.json index bf6c3eebd46..9f51364ee85 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -4,15 +4,17 @@ "version": "0.41.1", "description": "", "scripts": { - "dev": "nodemon --config nodemon.config.json -x 'vitepress dev'", - "build": "vitepress build", - "preview": "vitepress preview" + "dev": "nodemon --config nodemon.config.json -x 'typedoc && vitepress dev'", + "build": "typedoc && vitepress build", + "preview": "typedoc && vitepress preview", + "docs": "typedoc" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { - "@fuel-ts/versions": "workspace:*" + "@fuel-ts/versions": "workspace:*", + "typedoc-plugin-markdown": "^3.15.3" }, "devDependencies": { "@types/markdown-it": "^12.2.3", @@ -20,6 +22,8 @@ "flexsearch": "^0.7.31", "markdown-it": "^13.0.1", "nodemon": "^2.0.22", + "typedoc": "^0.24.8", + "typedoc-plugin-merge-modules": "^5.0.1", "vitepress": "1.0.0-alpha.51", "vitepress-plugin-search": "1.0.4-alpha.19", "vue": "^3.2.47" diff --git a/apps/docs/typedoc.json b/apps/docs/typedoc.json new file mode 100644 index 00000000000..913756578a6 --- /dev/null +++ b/apps/docs/typedoc.json @@ -0,0 +1,27 @@ +{ + // ************** // + // TypeDoc Config + // ************** // + "$schema": "https://typedoc.org/schema.json", + "includeVersion": true, + "entryPointStrategy": "packages", + "entryPoints": ["../../packages/address", "../../packages/interfaces"], + "out": "src/api", + "githubPages": false, + "readme": ".typedoc/api-readme.md", + "categorizeByGroup": true, + "cacheBust": true, + "hideGenerator": true, + "plugin": ["typedoc-plugin-markdown", "typedoc-plugin-merge-modules"], + "filenameSeparator": "-", + // ********************** // + // Markdown Config + // ********************** // + "hideBreadcrumbs": true, + "hideInPageTOC": true, + "entryDocument": "index.md", + // ******************** // + // Merge Modules Config + // ******************** // + "mergeModulesMergeMode": "module" +} diff --git a/packages/address/src/address.ts b/packages/address/src/address.ts index e17505bb6c9..af825e0c147 100644 --- a/packages/address/src/address.ts +++ b/packages/address/src/address.ts @@ -18,11 +18,18 @@ import { const logger = new Logger(versions.FUELS); +/** + * `Address` provides a type safe wrapper for converting between different address formats + * ands comparing them for equality. + */ export default class Address extends AbstractAddress { // #region address-2 readonly bech32Address: Bech32Address; // #endregion address-2 + /** + * @param address - A Bech32 address + */ constructor(address: Bech32Address) { super(); logger.checkNew(new.target, Address); @@ -34,52 +41,63 @@ export default class Address extends AbstractAddress { } /** - * @returns This address as a Bech32m string + * Returns the `bech32Address` property + * + * @returns The `bech32Address` property */ toAddress(): Bech32Address { return this.bech32Address; } /** - * @returns This address as 256 bit hash string + * Converts and returns the `bech32Address` property to a 256 bit hash string + * + * @returns The `bech32Address` property as a 256 bit hash string */ toB256(): B256Address { return toB256(this.bech32Address); } /** - * @returns Returns this address as a byte array + * Converts and returns the `bech32Address` property to a byte array + * + * @returns The `bech32Address` property as a byte array */ toBytes(): Uint8Array { return getBytesFromBech32(this.bech32Address); } /** - * @returns This address as hexed 256 bit hash string + * Converts + * + * @returns The `bech32Address` property as a 256 bit hash string */ toHexString(): B256Address { return this.toB256(); } /** - * Prints this Address value - * @returns a string address in Bech32m Format + * Converts and returns the `bech32Address` property as a string + * + * @returns The `bech32Address` property as a string */ toString(): string { return this.bech32Address; } /** - * Parses this Address value - * @returns a string address in Bech32m Format + * Converts and returns the `bech32Address` property as a string + * + * @returns The `bech32Address` property as a string */ toJSON(): string { - return this.toString(); + return this.bech32Address; } /** - * Returns the address value as an EvmAddress - * @returns the bech32 address as an EvmAddress + * Clears the first 12 bytes of the `bech32Address` property and returns it as a `EvmAddress` + * + * @returns The `bech32Address` property as an {@link EvmAddress | `EvmAddress`} */ toEvmAddress(): EvmAddress { const b256Address = toB256(this.bech32Address); @@ -90,26 +108,29 @@ export default class Address extends AbstractAddress { } /** - * Returns the value of this Address value - * @returns a string address in Bech32m Format + * Returns the value of the `bech32Address` property + * + * @returns The value of `bech32Address` property */ valueOf(): string { - return this.toString(); + return this.bech32Address; } /** - * Compare this Address value to another for direct equality - * @param other - the other address to compare against - * @returns true if addresses are equal + * Compares this the `bech32Address` property to another for direct equality + * + * @param other - Another address to compare against + * @returns The equality of the comparison */ equals(other: Address): boolean { return this.bech32Address === other.bech32Address; } /** - * Takes a Public Key, hashes it, and creates an Address - * @param publicKey - the wallets public key - * @returns a new `Address` instance + * Takes a Public Key, hashes it, and creates an `Address` + * + * @param publicKey - A wallets public key + * @returns A new `Address` instance */ static fromPublicKey(publicKey: string): Address { const b256Address = sha256(publicKey); @@ -117,32 +138,37 @@ export default class Address extends AbstractAddress { } /** - * Takes a B256Address and creates an Address - * @param b256Address - the b256 hash - * @returns a new `Address` instance + * Takes a B256 Address and creates an `Address` + * + * @param b256Address - A b256 hash + * @returns A new `Address` instance */ static fromB256(b256Address: string): Address { return new Address(toBech32(b256Address)); } /** - * Creates a random address within an Address - * @returns a new `Address` instance + * Creates an `Address` with a randomized `bech32Address` property + * + * @returns A new `Address` instance */ static fromRandom(): Address { return this.fromB256(getRandomB256()); } /** - * Takes an ambiguous string and attempts to create an Address - * @returns a new `Address` instance + * Takes an ambiguous string and attempts to create an `Address` + * + * @param address - An ambiguous string + * @returns A new `Address` instance */ static fromString(address: string): Address { return isBech32(address) ? new Address(address as Bech32Address) : this.fromB256(address); } /** - * Takes an ambiguous string or address and creates an address + * Takes an ambiguous string or address and creates an `Address` + * * @returns a new `Address` instance */ static fromAddressOrString(address: string | AbstractAddress): AbstractAddress { @@ -150,12 +176,11 @@ export default class Address extends AbstractAddress { } /** - * Takes an optional string and returns back an Address + * Takes a dynamic string or `AbstractAddress` and creates an `Address` * - * @param addressId - Can be a string containing Bech32, B256, or Public Key - * @throws Error - * thrown if the input string is not nilsy and cannot be resolved to a valid address format - * @returns a new `Address` instance + * @param addressId - A string containing Bech32, B256, or Public Key + * @throws Error - Unknown address if the format is not recognised + * @returns A new `Address` instance */ static fromDynamicInput(address: string | AbstractAddress): Address { // If address is a object than we assume it's a AbstractAddress @@ -180,8 +205,9 @@ export default class Address extends AbstractAddress { } /** - * Takes an EvmAddress and returns back an Address - * @returns a new `Address` instance + * Takes an `EvmAddress` and returns back an `Address` + * + * @returns A new `Address` instance */ static fromEvmAddress(evmAddress: EvmAddress): Address { return new Address(toBech32(evmAddress.value)); diff --git a/packages/address/src/utils.ts b/packages/address/src/utils.ts index cbe8d3232a3..d73d9ff34b6 100644 --- a/packages/address/src/utils.ts +++ b/packages/address/src/utils.ts @@ -17,11 +17,17 @@ import { bech32m } from 'bech32'; const logger = new Logger(versions.FUELS); -// Fuel Network HRP (human-readable part) for bech32 encoding +/** + * Fuel Network HRP (human-readable part) for bech32 encoding + * + * @hidden + */ export const FUEL_BECH32_HRP_PREFIX = 'fuel'; /** * Decodes a Bech32 address string into Decoded + * + * @hidden */ export function fromBech32(address: Bech32Address): Decoded { return bech32m.decode(address); @@ -29,6 +35,8 @@ export function fromBech32(address: Bech32Address): Decoded { /** * Converts a B256 address string into Bech32 + * + * @hidden */ export function toBech32(address: B256Address): Bech32Address { return bech32m.encode( @@ -39,6 +47,8 @@ export function toBech32(address: B256Address): Bech32Address { /** * Determines if a given string is Bech32 format + * + * @hidden */ export function isBech32(address: BytesLike): boolean { return ( @@ -50,6 +60,8 @@ export function isBech32(address: BytesLike): boolean { /** * Determines if a given string is B256 format + * + * @hidden */ export function isB256(address: string): boolean { return (address.length === 66 || address.length === 64) && /(0x)?[0-9a-f]{64}$/i.test(address); @@ -57,6 +69,8 @@ export function isB256(address: string): boolean { /** * Determines if a given string is in Public Key format (512 bits) + * + * @hidden */ export function isPublicKey(address: string): boolean { return (address.length === 130 || address.length === 128) && /(0x)?[0-9a-f]{128}$/i.test(address); @@ -64,6 +78,8 @@ export function isPublicKey(address: string): boolean { /** * Takes a Bech32 address and returns the byte data + * + * @hidden */ export function getBytesFromBech32(address: Bech32Address): Uint8Array { return new Uint8Array(bech32m.fromWords(fromBech32(address).words)); @@ -71,6 +87,8 @@ export function getBytesFromBech32(address: Bech32Address): Uint8Array { /** * Converts a Bech32 address string into B256 + * + * @hidden */ export function toB256(address: Bech32Address): B256Address { if (!isBech32(address)) { @@ -85,12 +103,19 @@ export function toB256(address: Bech32Address): B256Address { * * The input is validated along the way, which makes this significantly safer than * using `address.toLowerCase()`. + * + * @hidden */ export function normalizeBech32(address: Bech32Address): Bech32Address { const { words } = fromBech32(address); return bech32m.encode(FUEL_BECH32_HRP_PREFIX, words) as Bech32Address; } +/** + * Takes an indeterminate address type and returns an address + * + * @hidden + */ export const addressify = (addressLike: AddressLike | ContractIdLike): AbstractAddress => { if (addressLike instanceof AbstractAccount) { return addressLike.address; @@ -103,6 +128,9 @@ export const addressify = (addressLike: AddressLike | ContractIdLike): AbstractA return addressLike; }; +/** + * @hidden + */ export const getRandomB256 = () => hexlify(randomBytes(32)); /** @@ -110,6 +138,8 @@ export const getRandomB256 = () => hexlify(randomBytes(32)); * * @param b256 - the address to clear * @returns b256 with first 12 bytes cleared + * + * @hidden */ export const clearFirst12BytesFromB256 = (b256: B256Address): B256AddressEvm => { let bytes; diff --git a/packages/address/tsdoc.json b/packages/address/tsdoc.json new file mode 100644 index 00000000000..4514b072727 --- /dev/null +++ b/packages/address/tsdoc.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json", + "extends": ["../../tsdoc.base.json"] +} diff --git a/packages/address/typedoc.json b/packages/address/typedoc.json new file mode 100644 index 00000000000..801c3ba6328 --- /dev/null +++ b/packages/address/typedoc.json @@ -0,0 +1,5 @@ +{ + "$schema": "https://typedoc.org/schema.json", + "extends": ["../../typedoc.base.json"], + "entryPoints": ["src/index.ts"] +} diff --git a/packages/interfaces/src/index.ts b/packages/interfaces/src/index.ts index bb129f46f95..1eecf4b8fd7 100644 --- a/packages/interfaces/src/index.ts +++ b/packages/interfaces/src/index.ts @@ -2,6 +2,8 @@ /* eslint-disable max-classes-per-file */ /** + * @privateRemarks + * * TODO: Consider re-distritubing interfaces near their original packages */ @@ -12,10 +14,16 @@ export type B256Address = string; export type B256AddressEvm = `0x000000000000000000000000${string}`; +/** + * @prop value - A 256 bit hash string with the first 12 bytes cleared + */ export type EvmAddress = { value: B256AddressEvm; }; +/** + * @hidden + */ export abstract class AbstractScriptRequest { abstract bytes: Uint8Array; abstract encodeScriptData: (data: T) => Uint8Array; @@ -41,6 +49,9 @@ export abstract class AbstractAccount { abstract simulateTransaction(transactionRequest: any): any; } +/** + * @hidden + */ export abstract class AbstractProgram { abstract account: AbstractAccount | null; abstract interface: { @@ -58,14 +69,21 @@ export abstract class AbstractContract extends AbstractProgram { abstract id: AbstractAddress; } +/** + * @hidden + */ export abstract class AbstractScript extends AbstractProgram { abstract bytes: Uint8Array; } +/** A simple type alias defined using the `type` keyword. */ export type AddressLike = AbstractAddress | AbstractAccount; export type ContractIdLike = AbstractAddress | AbstractContract; +/** + * @hidden + */ export abstract class AbstractPredicate { abstract bytes: Uint8Array; abstract address: AbstractAddress; diff --git a/packages/interfaces/tsdoc.json b/packages/interfaces/tsdoc.json new file mode 100644 index 00000000000..4514b072727 --- /dev/null +++ b/packages/interfaces/tsdoc.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json", + "extends": ["../../tsdoc.base.json"] +} diff --git a/packages/interfaces/typedoc.json b/packages/interfaces/typedoc.json new file mode 100644 index 00000000000..801c3ba6328 --- /dev/null +++ b/packages/interfaces/typedoc.json @@ -0,0 +1,5 @@ +{ + "$schema": "https://typedoc.org/schema.json", + "extends": ["../../typedoc.base.json"], + "entryPoints": ["src/index.ts"] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ecb892b7add..00797c59355 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -298,6 +298,9 @@ importers: '@fuel-ts/versions': specifier: workspace:* version: link:../../packages/versions + typedoc-plugin-markdown: + specifier: ^3.15.3 + version: 3.15.3(typedoc@0.24.8) devDependencies: '@types/markdown-it': specifier: ^12.2.3 @@ -314,6 +317,12 @@ importers: nodemon: specifier: ^2.0.22 version: 2.0.22 + typedoc: + specifier: ^0.24.8 + version: 0.24.8(typescript@5.1.6) + typedoc-plugin-merge-modules: + specifier: ^5.0.1 + version: 5.0.1(typedoc@0.24.8) vitepress: specifier: 1.0.0-alpha.51 version: 1.0.0-alpha.51(@algolia/client-search@4.18.0)(@types/node@18.15.3)(search-insights@2.6.0) @@ -6841,7 +6850,6 @@ packages: /ansi-sequence-parser@1.1.0: resolution: {integrity: sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==} - dev: true /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} @@ -12087,7 +12095,6 @@ packages: /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - dev: true /jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} @@ -12383,6 +12390,9 @@ packages: dependencies: yallist: 4.0.0 + /lunr@2.3.9: + resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} + /lz-string@1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true @@ -12447,6 +12457,11 @@ packages: repeat-string: 1.6.1 dev: true + /marked@4.3.0: + resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} + engines: {node: '>= 12'} + hasBin: true + /md5@2.3.0: resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} dependencies: @@ -15436,7 +15451,6 @@ packages: jsonc-parser: 3.2.0 vscode-oniguruma: 1.7.0 vscode-textmate: 8.0.0 - dev: true /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} @@ -16601,6 +16615,36 @@ packages: is-typedarray: 1.0.0 dev: false + /typedoc-plugin-markdown@3.15.3(typedoc@0.24.8): + resolution: {integrity: sha512-idntFYu3vfaY3eaD+w9DeRd0PmNGqGuNLKihPU9poxFGnATJYGn9dPtEhn2QrTdishFMg7jPXAhos+2T6YCWRQ==} + peerDependencies: + typedoc: '>=0.24.0' + dependencies: + handlebars: 4.7.7 + typedoc: 0.24.8(typescript@5.1.6) + dev: false + + /typedoc-plugin-merge-modules@5.0.1(typedoc@0.24.8): + resolution: {integrity: sha512-7fiMYDUaeslsGSFDevw+azhD0dFJce0h2g5UuQ8zXljoky+YfmzoNkoTCx+KWaNJo6rz2DzaD2feVJyUhvUegg==} + peerDependencies: + typedoc: 0.24.x + dependencies: + typedoc: 0.24.8(typescript@5.1.6) + dev: true + + /typedoc@0.24.8(typescript@5.1.6): + resolution: {integrity: sha512-ahJ6Cpcvxwaxfu4KtjA8qZNqS43wYt6JL27wYiIgl1vd38WW/KWX11YuAeZhuz9v+ttrutSsgK+XO1CjL1kA3w==} + engines: {node: '>= 14.14'} + hasBin: true + peerDependencies: + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x + dependencies: + lunr: 2.3.9 + marked: 4.3.0 + minimatch: 9.0.2 + shiki: 0.14.3 + typescript: 5.1.6 + /typescript@4.9.5: resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} @@ -16968,11 +17012,9 @@ packages: /vscode-oniguruma@1.7.0: resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} - dev: true /vscode-textmate@8.0.0: resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} - dev: true /vue-demi@0.14.5(vue@3.2.47): resolution: {integrity: sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==} diff --git a/tsdoc.base.json b/tsdoc.base.json new file mode 100644 index 00000000000..a7e80d93aa2 --- /dev/null +++ b/tsdoc.base.json @@ -0,0 +1,109 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json", + "noStandardTags": false, + "tagDefinitions": [ + { + "tagName": "@module", + "syntaxKind": "block" + }, + { + "tagName": "@typedef", + "syntaxKind": "block" + }, + { + "tagName": "@callback", + "syntaxKind": "block" + }, + { + "tagName": "@prop", + "syntaxKind": "block", + "allowMultiple": true + }, + { + "tagName": "@property", + "syntaxKind": "block", + "allowMultiple": true + }, + { + "tagName": "@group", + "syntaxKind": "block", + "allowMultiple": true + }, + { + "tagName": "@category", + "syntaxKind": "block", + "allowMultiple": true + }, + { + "tagName": "@hidden", + "syntaxKind": "modifier" + }, + { + "tagName": "@ignore", + "syntaxKind": "modifier" + }, + { + "tagName": "@enum", + "syntaxKind": "modifier" + }, + { + "tagName": "@event", + "syntaxKind": "modifier" + }, + { + "tagName": "@template", + "syntaxKind": "block", + "allowMultiple": true + }, + { + "tagName": "@linkcode", + "syntaxKind": "inline", + "allowMultiple": true + }, + { + "tagName": "@linkplain", + "syntaxKind": "block", + "allowMultiple": true + }, + { + "tagName": "@private", + "syntaxKind": "modifier" + }, + { + "tagName": "@protected", + "syntaxKind": "modifier" + }, + { + "tagName": "@satisfies", + "syntaxKind": "block" + }, + { + "tagName": "@overload", + "syntaxKind": "modifier" + }, + { + "tagName": "@namespace", + "syntaxKind": "modifier" + }, + { + "tagName": "@interface", + "syntaxKind": "modifier" + }, + { + "tagName": "@showCategories", + "syntaxKind": "modifier" + }, + { + "tagName": "@hideCategories", + "syntaxKind": "modifier" + }, + { + "tagName": "@showGroups", + "syntaxKind": "modifier" + }, + { + "tagName": "@hideGroups", + "syntaxKind": "modifier" + } + ] +} diff --git a/typedoc.base.json b/typedoc.base.json new file mode 100644 index 00000000000..a5817e7d56d --- /dev/null +++ b/typedoc.base.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://typedoc.org/schema.json", + "includeVersion": true, +}