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,
+}