diff --git a/.circleci/config.yml b/.circleci/config.yml index 0f9cbca7..20b62f62 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -69,6 +69,21 @@ jobs: name: Build command: yarn build + generate-docs: + docker: + - image: cimg/node:<< pipeline.parameters.node-image-tag >> + resource_class: << pipeline.parameters.resource-class >> + steps: + - checkout + - install-yarn + - install-dependencies + - run: + name: Build + command: yarn build + - run: + name: Generate Docs + command: yarn generate-docs + run-example: docker: - image: cimg/node:<< pipeline.parameters.node-image-tag >> @@ -90,4 +105,5 @@ workflows: - lint - build - coverage + - generate-docs - run-example diff --git a/package.json b/package.json index c9a8d1c8..908af191 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "example": "yarn workspace @evolvedbinary/lwdita-xdita run example", "test": "mocha", "test:watch": "mocha -w", + "generate-docs": "yarn workspaces foreach --parallel --recursive --from '@evolvedbinary/lwdita-*' run docs", "lint": "eslint", "coverage": "rimraf coverage && nyc yarn mocha", "coveralls": "nyc --reporter=text-lcov report | coveralls" diff --git a/packages/lwdita-ast/package.json b/packages/lwdita-ast/package.json index 0c054876..6a36776f 100644 --- a/packages/lwdita-ast/package.json +++ b/packages/lwdita-ast/package.json @@ -10,7 +10,8 @@ "scripts": { "build": "tsc", "clean": "rimraf dist", - "prepack": "yarn run build" + "prepack": "yarn run build", + "docs": "typedoc --options typedoc.config.mjs --entryPoints src/index.ts --out dist/doc" }, "keywords": [ "LwDITA", @@ -30,6 +31,7 @@ }, "devDependencies": { "rimraf": "^6.1.0", + "typedoc": "^0.28.14", "typescript": "5.9.3" }, "packageManager": "yarn@4.2.2" diff --git a/packages/lwdita-ast/typedoc.config.mjs b/packages/lwdita-ast/typedoc.config.mjs new file mode 100644 index 00000000..459e0bbf --- /dev/null +++ b/packages/lwdita-ast/typedoc.config.mjs @@ -0,0 +1,29 @@ +/*! +Copyright (C) 2020 Evolved Binary + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ + +import { OptionDefaults } from "typedoc"; + +/** @type {Partial} */ +const config = { + tsconfig: "./tsconfig.json", + modifierTags: [...OptionDefaults.modifierTags, "@decorator"], + highlightLanguages: ["ts", "js", "xml", "json", "bash"], + treatWarningsAsErrors: true, + treatValidationWarningsAsErrors: true, +}; + +export default config; \ No newline at end of file diff --git a/packages/lwdita-xdita/package.json b/packages/lwdita-xdita/package.json index 1ddebdbe..47efa84d 100644 --- a/packages/lwdita-xdita/package.json +++ b/packages/lwdita-xdita/package.json @@ -11,6 +11,7 @@ "build": "tsc", "clean": "rimraf dist", "prepack": "yarn run build", + "docs": "typedoc --options typedoc.config.mjs --entryPoints src/index.ts --out dist/doc", "example": "ts-node ./example.ts" }, "keywords": [ @@ -40,6 +41,7 @@ "@types/node": "^24.9.2", "rimraf": "^6.1.0", "ts-node": "^10.9.2", + "typedoc": "^0.28.14", "typescript": "5.9.3" }, "packageManager": "yarn@4.2.2" diff --git a/packages/lwdita-xdita/typedoc.config.mjs b/packages/lwdita-xdita/typedoc.config.mjs new file mode 100644 index 00000000..459e0bbf --- /dev/null +++ b/packages/lwdita-xdita/typedoc.config.mjs @@ -0,0 +1,29 @@ +/*! +Copyright (C) 2020 Evolved Binary + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ + +import { OptionDefaults } from "typedoc"; + +/** @type {Partial} */ +const config = { + tsconfig: "./tsconfig.json", + modifierTags: [...OptionDefaults.modifierTags, "@decorator"], + highlightLanguages: ["ts", "js", "xml", "json", "bash"], + treatWarningsAsErrors: true, + treatValidationWarningsAsErrors: true, +}; + +export default config; \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index a45dfb0c..890b8780 100644 --- a/yarn.lock +++ b/yarn.lock @@ -378,6 +378,7 @@ __metadata: resolution: "@evolvedbinary/lwdita-ast@workspace:packages/lwdita-ast" dependencies: rimraf: "npm:^6.1.0" + typedoc: "npm:^0.28.14" typescript: "npm:5.9.3" languageName: unknown linkType: soft @@ -391,6 +392,7 @@ __metadata: "@types/node": "npm:^24.9.2" rimraf: "npm:^6.1.0" ts-node: "npm:^10.9.2" + typedoc: "npm:^0.28.14" typescript: "npm:5.9.3" languageName: unknown linkType: soft @@ -419,6 +421,19 @@ __metadata: languageName: unknown linkType: soft +"@gerrit0/mini-shiki@npm:^3.12.0": + version: 3.14.0 + resolution: "@gerrit0/mini-shiki@npm:3.14.0" + dependencies: + "@shikijs/engine-oniguruma": "npm:^3.14.0" + "@shikijs/langs": "npm:^3.14.0" + "@shikijs/themes": "npm:^3.14.0" + "@shikijs/types": "npm:^3.14.0" + "@shikijs/vscode-textmate": "npm:^10.0.2" + checksum: 10c0/9539688aec140f2167203b424078d34deec016c8418c497146c6c24920d0590d10b2cd5eec721668a56cb5d42fb278f6f0502bc340274398bb690317ded563b2 + languageName: node + linkType: hard + "@humanfs/core@npm:^0.19.1": version: 0.19.1 resolution: "@humanfs/core@npm:0.19.1" @@ -636,6 +651,51 @@ __metadata: languageName: node linkType: hard +"@shikijs/engine-oniguruma@npm:^3.14.0": + version: 3.14.0 + resolution: "@shikijs/engine-oniguruma@npm:3.14.0" + dependencies: + "@shikijs/types": "npm:3.14.0" + "@shikijs/vscode-textmate": "npm:^10.0.2" + checksum: 10c0/6dab2310c910fedd89046299c4423b2100c8c771822e487070d9eb158907782f195f1b9dd560b6b84f74432bdd1ca4e4429f4af76d30c0e45f8448f100094996 + languageName: node + linkType: hard + +"@shikijs/langs@npm:^3.14.0": + version: 3.14.0 + resolution: "@shikijs/langs@npm:3.14.0" + dependencies: + "@shikijs/types": "npm:3.14.0" + checksum: 10c0/59ed3b0e9f893a57c8e88b77e9280d993b0dfe219b91db2f8143a65728ef47b02e17056a029f710753184e1c077dfa589cbc5491253d791472a94dca9f598fa3 + languageName: node + linkType: hard + +"@shikijs/themes@npm:^3.14.0": + version: 3.14.0 + resolution: "@shikijs/themes@npm:3.14.0" + dependencies: + "@shikijs/types": "npm:3.14.0" + checksum: 10c0/3326482f081e313957c3e74ae86721d18efb32c022b31936f7da1b4782f4c970dea71989934baf9ab8adbeafea07235834b2e6ab83b67e71dc87fb328a1caa58 + languageName: node + linkType: hard + +"@shikijs/types@npm:3.14.0, @shikijs/types@npm:^3.14.0": + version: 3.14.0 + resolution: "@shikijs/types@npm:3.14.0" + dependencies: + "@shikijs/vscode-textmate": "npm:^10.0.2" + "@types/hast": "npm:^3.0.4" + checksum: 10c0/154ec7a79e3c155ed47a14d14ccf91ea09909779993f999cf3d7e424c2f732cd7d7faf8074441a543445f64af1ef9456dcf9ddd4edad96615b68ca60eca2b7bc + languageName: node + linkType: hard + +"@shikijs/vscode-textmate@npm:^10.0.2": + version: 10.0.2 + resolution: "@shikijs/vscode-textmate@npm:10.0.2" + checksum: 10c0/36b682d691088ec244de292dc8f91b808f95c89466af421cf84cbab92230f03c8348649c14b3251991b10ce632b0c715e416e992dd5f28ff3221dc2693fd9462 + languageName: node + linkType: hard + "@tsconfig/node10@npm:^1.0.7": version: 1.0.11 resolution: "@tsconfig/node10@npm:1.0.11" @@ -695,6 +755,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: 10c0/3249781a511b38f1d330fd1e3344eed3c4e7ea8eff82e835d35da78e637480d36fad37a78be5a7aed8465d237ad0446abc1150859d0fde395354ea634decf9f7 + languageName: node + linkType: hard + "@types/json-schema@npm:^7.0.15": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15" @@ -718,6 +787,13 @@ __metadata: languageName: node linkType: hard +"@types/unist@npm:*": + version: 3.0.3 + resolution: "@types/unist@npm:3.0.3" + checksum: 10c0/2b1e4adcab78388e088fcc3c0ae8700f76619dbcb4741d7d201f87e2cb346bfc29a89003cfea2d76c996e1061452e14fcd737e8b25aacf949c1f2d6b2bc3dd60 + languageName: node + linkType: hard + "@typescript-eslint/eslint-plugin@npm:8.46.2": version: 8.46.2 resolution: "@typescript-eslint/eslint-plugin@npm:8.46.2" @@ -1562,6 +1638,13 @@ __metadata: languageName: node linkType: hard +"entities@npm:^4.4.0": + version: 4.5.0 + resolution: "entities@npm:4.5.0" + checksum: 10c0/5b039739f7621f5d1ad996715e53d964035f75ad3b9a4d38c6b3804bb226e282ffeae2443624d8fdd9c47d8e926ae9ac009c54671243f0c3294c26af7cc85250 + languageName: node + linkType: hard + "env-paths@npm:^2.2.0": version: 2.2.1 resolution: "env-paths@npm:2.2.1" @@ -2744,6 +2827,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: 10c0/ff4abbcdfa2003472fc3eb4b8e60905ec97718e11e33cca52059919a4c80cc0e0c2a14d23e23d8c00e5402bc5a885cdba8ca053a11483ab3cc8b3c7a52f88e2d + languageName: node + linkType: hard + "locate-path@npm:^5.0.0": version: 5.0.0 resolution: "locate-path@npm:5.0.0" @@ -2823,6 +2915,13 @@ __metadata: languageName: node linkType: hard +"lunr@npm:^2.3.9": + version: 2.3.9 + resolution: "lunr@npm:2.3.9" + checksum: 10c0/77d7dbb4fbd602aac161e2b50887d8eda28c0fa3b799159cee380fbb311f1e614219126ecbbd2c3a9c685f1720a8109b3c1ca85cc893c39b6c9cc6a62a1d8a8b + languageName: node + linkType: hard + "make-dir@npm:^3.0.0, make-dir@npm:^3.0.2": version: 3.1.0 resolution: "make-dir@npm:3.1.0" @@ -2868,6 +2967,29 @@ __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: 10c0/9a6bb444181d2db7016a4173ae56a95a62c84d4cbfb6916a399b11d3e6581bf1cc2e4e1d07a2f022ae72c25f56db90fbe1e529fca16fbf9541659dc53480d4b4 + languageName: node + linkType: hard + +"mdurl@npm:^2.0.0": + version: 2.0.0 + resolution: "mdurl@npm:2.0.0" + checksum: 10c0/633db522272f75ce4788440669137c77540d74a83e9015666a9557a152c02e245b192edc20bc90ae953bbab727503994a53b236b4d9c99bdaee594d0e7dd2ce0 + languageName: node + linkType: hard + "merge2@npm:^1.3.0": version: 1.4.1 resolution: "merge2@npm:1.4.1" @@ -3480,6 +3602,13 @@ __metadata: languageName: node linkType: hard +"punycode.js@npm:^2.3.1": + version: 2.3.1 + resolution: "punycode.js@npm:2.3.1" + checksum: 10c0/1d12c1c0e06127fa5db56bd7fdf698daf9a78104456a6b67326877afc21feaa821257b171539caedd2f0524027fa38e67b13dd094159c8d70b6d26d2bea4dfdb + languageName: node + linkType: hard + "punycode@npm:^2.1.0, punycode@npm:^2.1.1": version: 2.3.1 resolution: "punycode@npm:2.3.1" @@ -4086,6 +4215,23 @@ __metadata: languageName: node linkType: hard +"typedoc@npm:^0.28.14": + version: 0.28.14 + resolution: "typedoc@npm:0.28.14" + dependencies: + "@gerrit0/mini-shiki": "npm:^3.12.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: 10c0/a8727134991ba3f9a982e9f6ceecfbcf0fac531e4865e4865cdee68ea6fe1a594228b8654011d38ffa2332b7e84e4eaa3d0dac04a8bdf36a0686d1c3f327e80b + languageName: node + linkType: hard + "typescript-eslint@npm:^8.46.2": version: 8.46.2 resolution: "typescript-eslint@npm:8.46.2" @@ -4121,6 +4267,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: 10c0/8862eddb412dda76f15db8ad1c640ccc2f47cdf8252a4a30be908d535602c8d33f9855dfcccb8b8837855c1ce1eaa563f7fa7ebe3c98fd0794351aab9b9c55fa + languageName: node + linkType: hard + "undefsafe@npm:^2.0.5": version: 2.0.5 resolution: "undefsafe@npm:2.0.5" @@ -4342,6 +4495,15 @@ __metadata: languageName: node linkType: hard +"yaml@npm:^2.8.1": + version: 2.8.1 + resolution: "yaml@npm:2.8.1" + bin: + yaml: bin.mjs + checksum: 10c0/7c587be00d9303d2ae1566e03bc5bc7fe978ba0d9bf39cc418c3139d37929dfcb93a230d9749f2cb578b6aa5d9ebebc322415e4b653cb83acd8bc0bc321707f3 + languageName: node + linkType: hard + "yargs-parser@npm:^18.1.2": version: 18.1.3 resolution: "yargs-parser@npm:18.1.3"