UNPKG

typedoc-plugin-discord-types

Version:

Adds support for linking to discord-api-types.dev types to TypeDoc.

1 lines 4.48 kB
{"version":3,"sources":["../src/index.ts","../src/getData.ts"],"sourcesContent":["import type { Application, JSONOutput } from 'typedoc';\nimport { request } from 'undici';\nimport { allExports, getData } from './getData';\n\nexport async function load(app: Application) {\n\tconst res = await request(\n\t\t'https://raw.githubusercontent.com/discordjs/discord-api-types/main/website/versioned_docs/version-0.33.5/api-typedoc.json'\n\t);\n\n\tif (res.statusCode !== 200) {\n\t\tapp.logger.verbose('Failed to load API documentation');\n\t\treturn;\n\t}\n\n\tconst data = (await res.body.json()) as JSONOutput.ProjectReflection;\n\n\tfor (const version of allExports)\n\t\tapp.renderer.addUnknownSymbolResolver(`discord-api-types/${version}`, (name) => {\n\t\t\tconst [doc, baseURL] = getData(data.children!, version);\n\t\t\tif (doc.constants.find((c) => c.name === name)) {\n\t\t\t\treturn `${baseURL}/${name}`;\n\t\t\t}\n\t\t\tif (doc.enums.find((c) => c.name === name)) {\n\t\t\t\treturn `${baseURL}/enum/${name}`;\n\t\t\t}\n\t\t\tif (doc.interfaces.find((c) => c.name === name)) {\n\t\t\t\treturn `${baseURL}/interface/${name}`;\n\t\t\t}\n\t\t\tif (doc.typeAliases.find((c) => c.name === name)) {\n\t\t\t\treturn `${baseURL}/${name}`;\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t});\n}\n","import { type JSONOutput, ReflectionKind } from 'typedoc';\nimport type { IDiscordAPIDoc } from './interfaces/typedoc-json';\n\nexport const allExports = [\n\t'gateway/common',\n\t'globals',\n\t'payloads/common',\n\t'rest/common',\n\t'rpc/common',\n\t'rpc/v10',\n\t'rpc/v8',\n\t'rpc/v9',\n\t'utils/v10',\n\t'utils/v8',\n\t'utils/v9',\n\t'v10',\n\t'v6',\n\t'v8',\n\t'v9',\n\t'voice/v4'\n] as const;\n\nexport const getData = (moduleChildren: JSONOutput.DeclarationReflection[], path: typeof allExports[number]): [IDiscordAPIDoc, string] => {\n\tconst data = moduleChildren.find((child) => child.name === path)!;\n\n\tconst { children = [] } = data;\n\n\t//\n\tconst constants = children\n\t\t.filter((child) => child.kind === ReflectionKind.Variable)\n\t\t.map((child) => ({ name: child.name, description: child.comment?.shortText }));\n\tconst enums = children\n\t\t.filter((child) => child.kind === ReflectionKind.Enum)\n\t\t.map((child) => ({ name: child.name, description: child.comment?.shortText }));\n\tconst interfaces = children\n\t\t.filter((child) => child.kind === ReflectionKind.Interface)\n\t\t.map((child) => ({ name: child.name, description: child.comment?.shortText }));\n\tconst typeAliases = children\n\t\t.filter((child) => child.kind === ReflectionKind.TypeAlias)\n\t\t.map((child) => ({ name: child.name, description: child.comment?.shortText }));\n\n\tconst doc = {\n\t\tconstants,\n\t\tenums,\n\t\tinterfaces,\n\t\ttypeAliases\n\t};\n\n\tconst baseURL = `https://discord-api-types.dev/api/discord-api-types-${path}/`;\n\n\treturn [doc, baseURL];\n};\n"],"mappings":";;;;AACA;;;ACDA;AAGO,IAAM,aAAa;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAEO,IAAM,UAAU,wBAAC,gBAAoD,SAA8D;AACzI,QAAM,OAAO,eAAe,KAAK,CAAC,UAAU,MAAM,SAAS,IAAI;AAE/D,QAAM,EAAE,WAAW,CAAC,MAAM;AAG1B,QAAM,YAAY,SAChB,OAAO,CAAC,UAAU,MAAM,SAAS,eAAe,QAAQ,EACxD,IAAI,CAAC,UAAW,GAAE,MAAM,MAAM,MAAM,aAAa,MAAM,SAAS,UAAU,EAAE;AAC9E,QAAM,QAAQ,SACZ,OAAO,CAAC,UAAU,MAAM,SAAS,eAAe,IAAI,EACpD,IAAI,CAAC,UAAW,GAAE,MAAM,MAAM,MAAM,aAAa,MAAM,SAAS,UAAU,EAAE;AAC9E,QAAM,aAAa,SACjB,OAAO,CAAC,UAAU,MAAM,SAAS,eAAe,SAAS,EACzD,IAAI,CAAC,UAAW,GAAE,MAAM,MAAM,MAAM,aAAa,MAAM,SAAS,UAAU,EAAE;AAC9E,QAAM,cAAc,SAClB,OAAO,CAAC,UAAU,MAAM,SAAS,eAAe,SAAS,EACzD,IAAI,CAAC,UAAW,GAAE,MAAM,MAAM,MAAM,aAAa,MAAM,SAAS,UAAU,EAAE;AAE9E,QAAM,MAAM;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAEA,QAAM,UAAU,uDAAuD;AAEvE,SAAO,CAAC,KAAK,OAAO;AACrB,GA7BuB;;;ADlBvB,oBAA2B,KAAkB;AAC5C,QAAM,MAAM,MAAM,QACjB,2HACD;AAEA,MAAI,IAAI,eAAe,KAAK;AAC3B,QAAI,OAAO,QAAQ,kCAAkC;AACrD;AAAA,EACD;AAEA,QAAM,OAAQ,MAAM,IAAI,KAAK,KAAK;AAElC,aAAW,WAAW;AACrB,QAAI,SAAS,yBAAyB,qBAAqB,WAAW,CAAC,SAAS;AAC/E,YAAM,CAAC,KAAK,WAAW,QAAQ,KAAK,UAAW,OAAO;AACtD,UAAI,IAAI,UAAU,KAAK,CAAC,MAAM,EAAE,SAAS,IAAI,GAAG;AAC/C,eAAO,GAAG,WAAW;AAAA,MACtB;AACA,UAAI,IAAI,MAAM,KAAK,CAAC,MAAM,EAAE,SAAS,IAAI,GAAG;AAC3C,eAAO,GAAG,gBAAgB;AAAA,MAC3B;AACA,UAAI,IAAI,WAAW,KAAK,CAAC,MAAM,EAAE,SAAS,IAAI,GAAG;AAChD,eAAO,GAAG,qBAAqB;AAAA,MAChC;AACA,UAAI,IAAI,YAAY,KAAK,CAAC,MAAM,EAAE,SAAS,IAAI,GAAG;AACjD,eAAO,GAAG,WAAW;AAAA,MACtB;AAEA,aAAO;AAAA,IACR,CAAC;AACH;AA9BsB","names":[]}