From 49caea41b26c4412b04b5f9335a895aaea633d4c Mon Sep 17 00:00:00 2001 From: Romain Lenzotti Date: Mon, 28 Oct 2024 19:28:33 +0100 Subject: [PATCH] chore: add template to build doc --- .../code-highlight/code-highlight.ejs | 3 ++ .../code-highlight/code-highlight.js | 11 +++++ docs/.templates/page/page.ejs | 30 ++++++++++++++ docs/.templates/page/page.js | 21 ++++++++++ docs/.templates/page/page.old | 25 +++++++++++ .../symbol-header/symbol-header.ejs | 1 + .../.templates/symbol-header/symbol-header.js | 28 +++++++++++++ docs/.templates/symbol-label/symbol-label.ejs | 1 + docs/.templates/symbol-label/symbol-label.js | 7 ++++ .../symbol-member/symbol-member.ejs | 9 ++++ .../.templates/symbol-member/symbol-member.js | 25 +++++++++++ .../symbol-members/symbol-members.ejs | 19 +++++++++ .../symbol-members/symbol-members.js | 20 +++++++++ .../symbol-params/symbol-params.ejs | 6 +++ .../.templates/symbol-params/symbol-params.js | 39 ++++++++++++++++++ .../symbol-summary/symbol-summary.ejs | 7 ++++ .../symbol-summary/symbol-summary.js | 9 ++++ docs/.vitepress/config.mts | 17 ++++---- docs/api.data.ts | 21 ++++++++++ docs/api.md | 14 +++++++ docs/package.json | 2 +- docs/public/apple-touch-icon.png | Bin 20523 -> 0 bytes docs/public/icon512_maskable.png | Bin 0 -> 59009 bytes docs/public/tsed.png | Bin 0 -> 21702 bytes docs/yarn.lock | 10 ++--- package.json | 20 +++------ packages/core/src/domain/Store.ts | 2 +- packages/orm/mikro-orm/src/MikroOrmModule.ts | 2 +- .../decorators/multer/multerFileSize.ts | 2 +- .../common/decorators/multer/multerOptions.ts | 2 +- .../common/decorators/multer/multipartFile.ts | 2 +- .../schema/src/decorators/common/format.ts | 6 --- .../event-emitter/src/EventEmitterModule.ts | 2 +- .../src/interfaces/EventEmitterStore.ts | 2 +- .../src/services/EventEmitterFactory.ts | 10 ++--- scripts/docs/install.sh | 35 ---------------- tsdoc.config.js | 3 +- yarn.lock | 11 ++--- 38 files changed, 337 insertions(+), 87 deletions(-) create mode 100644 docs/.templates/code-highlight/code-highlight.ejs create mode 100644 docs/.templates/code-highlight/code-highlight.js create mode 100644 docs/.templates/page/page.ejs create mode 100644 docs/.templates/page/page.js create mode 100644 docs/.templates/page/page.old create mode 100644 docs/.templates/symbol-header/symbol-header.ejs create mode 100644 docs/.templates/symbol-header/symbol-header.js create mode 100644 docs/.templates/symbol-label/symbol-label.ejs create mode 100644 docs/.templates/symbol-label/symbol-label.js create mode 100644 docs/.templates/symbol-member/symbol-member.ejs create mode 100644 docs/.templates/symbol-member/symbol-member.js create mode 100644 docs/.templates/symbol-members/symbol-members.ejs create mode 100644 docs/.templates/symbol-members/symbol-members.js create mode 100644 docs/.templates/symbol-params/symbol-params.ejs create mode 100644 docs/.templates/symbol-params/symbol-params.js create mode 100644 docs/.templates/symbol-summary/symbol-summary.ejs create mode 100644 docs/.templates/symbol-summary/symbol-summary.js create mode 100644 docs/api.data.ts create mode 100644 docs/api.md delete mode 100644 docs/public/apple-touch-icon.png create mode 100644 docs/public/icon512_maskable.png create mode 100644 docs/public/tsed.png diff --git a/docs/.templates/code-highlight/code-highlight.ejs b/docs/.templates/code-highlight/code-highlight.ejs new file mode 100644 index 00000000000..de070a91005 --- /dev/null +++ b/docs/.templates/code-highlight/code-highlight.ejs @@ -0,0 +1,3 @@ +```ts +<%- code %> +``` diff --git a/docs/.templates/code-highlight/code-highlight.js b/docs/.templates/code-highlight/code-highlight.js new file mode 100644 index 00000000000..ad50086dd69 --- /dev/null +++ b/docs/.templates/code-highlight/code-highlight.js @@ -0,0 +1,11 @@ +import {stripsComments} from "@tsed/ts-doc/src/utils/strips.js"; + +export default { + name: "codeHighlight", + trim: false, + method(overview, symbolName, deprecated) { + return {code: stripsComments(overview + .replace(/( )+#private;\n/gi, "")) + .replace(/\n( )+\n/gi, '\n'), deprecated}; + } +}; diff --git a/docs/.templates/page/page.ejs b/docs/.templates/page/page.ejs new file mode 100644 index 00000000000..ee8c8e10808 --- /dev/null +++ b/docs/.templates/page/page.ejs @@ -0,0 +1,30 @@ +--- +meta: + - name: keywords + description: api typescript node.js documentation <%- symbol.symbolName %> <%- symbol.symbolType %> +--- +# <%- symbol.symbolLabel %> <%- symbol.symbolName %> + +<%- components.symbolSummary(symbol) %> +<% if(symbol.overview) { %> + +## Overview + +<%- components.codeHighlight(symbol.overview, symbol.symbolName) %> +<% } + +if (hasParams) { %> +<%- components.symbolParams(params, symbol.overview) %> +<% } + +if (description) { %> + +## Description + +<%- description %> +<% } + +if (symbol.members.length) { %> + +<%- components.symbolMembers(symbol) %> +<% } %> diff --git a/docs/.templates/page/page.js b/docs/.templates/page/page.js new file mode 100644 index 00000000000..8d23626ca01 --- /dev/null +++ b/docs/.templates/page/page.js @@ -0,0 +1,21 @@ +export default { + name: "page", + trim: false, + method(symbol) { + let params = [], + hasParams = false; + let description = symbol.description || ""; + + if (symbol.symbolType === "function" || symbol.symbolType === "decorator") { + params = symbol.getParams(); + hasParams = params.length && symbol.overview.match(/\((.*)\):/); + } + + return { + params, + hasParams, + symbol, + description + }; + } +}; diff --git a/docs/.templates/page/page.old b/docs/.templates/page/page.old new file mode 100644 index 00000000000..db5a37cf511 --- /dev/null +++ b/docs/.templates/page/page.old @@ -0,0 +1,25 @@ +<%- components.symbolHeader(symbol) %> + +<%- components.symbolSummary(symbol) %> + +<% if(symbol.overview) { %> + +### Overview + +<%- components.codeHighlight(symbol.overview, symbol.symbolName) %> +<% } %> + +<% if (hasParams) { %> +<%- components.symbolParams(params, symbol.overview) %> +<% } %> + +<% if (description) { %> + +### Description + +<%- description %> +<% } %> + +<% if (symbol.members.length) { %> +<%- components.symbolMembers(symbol) %> +<% } %> \ No newline at end of file diff --git a/docs/.templates/symbol-header/symbol-header.ejs b/docs/.templates/symbol-header/symbol-header.ejs new file mode 100644 index 00000000000..8e6d3a3fde1 --- /dev/null +++ b/docs/.templates/symbol-header/symbol-header.ejs @@ -0,0 +1 @@ + <%- labels.map((label) => components.symbolLabel(label)).join(' ') %> \ No newline at end of file diff --git a/docs/.templates/symbol-header/symbol-header.js b/docs/.templates/symbol-header/symbol-header.js new file mode 100644 index 00000000000..3ec0a807e04 --- /dev/null +++ b/docs/.templates/symbol-header/symbol-header.js @@ -0,0 +1,28 @@ +export default { + name: "symbolHeader", + trim: true, + method(symbol) { + const ignoreLabels = ["type", "returns", "decorator", "param", "constructor"]; + const id = symbol.symbolName.replace(/ /gi, "").toLowerCase(); + let isPrivateAdded; + + const labels = (symbol.labels || []) + .filter((label) => ignoreLabels.indexOf(label.key) === -1) + .filter((label) => { + if (label.key === "private" && !isPrivateAdded) { + isPrivateAdded = true; + return true; + } + if (label.key === "private") { + return !isPrivateAdded; + } + return true; + }); + + return { + id, + symbol, + labels + }; + } +}; diff --git a/docs/.templates/symbol-label/symbol-label.ejs b/docs/.templates/symbol-label/symbol-label.ejs new file mode 100644 index 00000000000..3fe2d312026 --- /dev/null +++ b/docs/.templates/symbol-label/symbol-label.ejs @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/.templates/symbol-label/symbol-label.js b/docs/.templates/symbol-label/symbol-label.js new file mode 100644 index 00000000000..a768b799ff1 --- /dev/null +++ b/docs/.templates/symbol-label/symbol-label.js @@ -0,0 +1,7 @@ +export default { + name: "symbolLabel", + trim: true, + method(label) { + return {label}; + } +}; diff --git a/docs/.templates/symbol-member/symbol-member.ejs b/docs/.templates/symbol-member/symbol-member.ejs new file mode 100644 index 00000000000..7561886fbf9 --- /dev/null +++ b/docs/.templates/symbol-member/symbol-member.ejs @@ -0,0 +1,9 @@ +## <%- title %> + +<%- components.codeHighlight(member.overview.trim(), undefined) %> +<% if (hasParams) { %> +<%- components.symbolParams(member.params, member.overview) %> +<% } %> +<% if (member.description) { %> +<%- member.description %> +<% } %> diff --git a/docs/.templates/symbol-member/symbol-member.js b/docs/.templates/symbol-member/symbol-member.js new file mode 100644 index 00000000000..680b2fff9f0 --- /dev/null +++ b/docs/.templates/symbol-member/symbol-member.js @@ -0,0 +1,25 @@ +export default { + name: "symbolMember", + method(member) { + let deprecated = false; + const hasParams = member.params.length && member.overview.match(/\((.*)\):/); + + if (member.labels) { + if (member.labels.find((k) => k.key === "deprecated")) { + deprecated = true; + } + } + + const title = member.overview.match(/(.*)(\(|\?|=|:)+/) + + return { + title: title ? title[1] + .split("(")[0] + .split("<")[0] + .trim() : "", + member, + deprecated, + hasParams + }; + } +}; diff --git a/docs/.templates/symbol-members/symbol-members.ejs b/docs/.templates/symbol-members/symbol-members.ejs new file mode 100644 index 00000000000..cc30ebf7686 --- /dev/null +++ b/docs/.templates/symbol-members/symbol-members.ejs @@ -0,0 +1,19 @@ +<%# Constructor %> +<% if (hasConstructor) { %> + +## Constructor + +<% if (hasConstructorOverview) { %> +<%- components.codeHighlight(construct.overview) %> +<% } %> + +<% if (construct.description) { %> +<%- construct.description %> +<% } %> + +<% } %> +<% if (members.length) { %> +<% members.forEach((member, index, map) => { %> +<%- components.symbolMember(member) %> +<% }) %> +<% } %> diff --git a/docs/.templates/symbol-members/symbol-members.js b/docs/.templates/symbol-members/symbol-members.js new file mode 100644 index 00000000000..4f9c2f088e6 --- /dev/null +++ b/docs/.templates/symbol-members/symbol-members.js @@ -0,0 +1,20 @@ +export default { + name: "symbolMembers", + trim: false, + method(symbol) { + const flattenMembers = symbol.getMembers(); + const construct = flattenMembers.filter((member) => member.overview.match("constructor"))[0]; + const hasConstructor = construct && (construct.description || !construct.overview.match("constructor()")); + let hasConstructorOverview = hasConstructor && construct.overview.match("constructor()"); + const members = flattenMembers + .filter((member) => !member.overview.includes("#private")) + .filter((member) => !member.overview.match("constructor")); + + return { + hasConstructor, + hasConstructorOverview, + members, + construct + }; + } +}; diff --git a/docs/.templates/symbol-params/symbol-params.ejs b/docs/.templates/symbol-params/symbol-params.ejs new file mode 100644 index 00000000000..a88559c8f4f --- /dev/null +++ b/docs/.templates/symbol-params/symbol-params.ejs @@ -0,0 +1,6 @@ + +<% params.forEach(param => { %> + +- **<%- param.paramKey %>** (<%- param.type %>): <%- param.description %> + +<% }) %> diff --git a/docs/.templates/symbol-params/symbol-params.js b/docs/.templates/symbol-params/symbol-params.js new file mode 100644 index 00000000000..fdfaa1ad273 --- /dev/null +++ b/docs/.templates/symbol-params/symbol-params.js @@ -0,0 +1,39 @@ + +export default { + name: "symbolParams", + trim: false, + method(params, overview) { + const signatureMatch = overview.match(/\((.*)\):/); + const signature = signatureMatch[1] + ","; + + params = params.map((param) => { + const matched = signature.match(new RegExp(`${param.paramKey}(\\?)?:?(.[^,]+),`)); + const type = (param.type || matched[2] ? matched[2].trim() : "") + .split("|") + .map((type) => { + // type = bindSymbols(type.trim(), ""); + + // if (type.startsWith("<") && type.endsWith(">")) { + // return type; + // } + + return `\`${type.trim()}\``.trim(); + }) + .join(" | "); + + const description = (matched[1] ? "Optional. " : "") + param.description.replace(/Optional\.?/gi, "").trim(); + + return { + param, + signature, + paramKey: param.paramKey, + type: type, + description + }; + }); + + return { + params + }; + } +}; diff --git a/docs/.templates/symbol-summary/symbol-summary.ejs b/docs/.templates/symbol-summary/symbol-summary.ejs new file mode 100644 index 00000000000..c1facf53dbe --- /dev/null +++ b/docs/.templates/symbol-summary/symbol-summary.ejs @@ -0,0 +1,7 @@ +## Usage + +```typescript +import { <%- symbol.symbolName %> } from "<%- symbol.importFrom %>"; +``` + +> See [<%- symbol.relativePath %>](<%- symbol.githubUrl %>). diff --git a/docs/.templates/symbol-summary/symbol-summary.js b/docs/.templates/symbol-summary/symbol-summary.js new file mode 100644 index 00000000000..b8b971c927a --- /dev/null +++ b/docs/.templates/symbol-summary/symbol-summary.js @@ -0,0 +1,9 @@ +export default { + name: "symbolSummary", + trim: false, + method(symbol) { + return { + symbol + }; + } +}; diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 6efd39dd830..fa460c96120 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -15,10 +15,8 @@ export default defineConfig({ // ['link', { rel: 'icon', type: 'image/svg+xml', href: '/tsed.svg' }], ["link", {rel: "icon", type: "image/png", href: "/tsed-og.png"}], ["link", {rel: "shortcut icon", href: "/favicon.ico", type: "image/x-icon"}], - ["link", {rel: "icon", href: "/favicon.ico", type: "apple-touch-icon"}], - ["link", {rel: "icon", href: "/apple-touch-icon.png", type: "image/x-icon", sizes: "180x180"}], - ["link", {rel: "icon", href: "/favicon-32x32.png", type: "image/png", sizes: "32x32"}], - ["link", {rel: "icon", href: "/favicon-16x16.png", type: "image/png", sizes: "16x16"}], + ["link", {rel: "icon", href: "/icon512_maskable.png", type: "apple-touch-icon"}], + ["link", {rel: "icon", href: "/icon512_maskable.png", type: "image/x-icon", sizes: "512x512"}], ["meta", {name: "theme-color", content: "#5f67ee"}], ["meta", {property: "og:type", content: "website"}], ["meta", {property: "og:locale", content: "en"}], @@ -31,8 +29,8 @@ export default defineConfig({ themeConfig: { logo: "/tsed.svg", siteTitle: false, - apiUrl: "https://tsed.io/api.json", - apiRedirectUrl: "https://api-docs.tsed.io", + apiUrl: "http://localhost:5173/api.json", + apiRedirectUrl: "", repo: "tsedio/tsed", githubProxyUrl: "https://api.tsed.io/rest/github/tsedio/tsed", editLink: { @@ -163,7 +161,8 @@ export default defineConfig({ link: `/docs/testing` }, {text: "Upload files", link: "/docs/upload-files"}, - {text: "Customize 404", link: "/docs/not-found-page"} + {text: "Customize 404", link: "/docs/not-found-page"}, + {text: "Api references", link: "/api"}, ] }, { @@ -433,6 +432,10 @@ export default defineConfig({ { text: "Customize 404", link: "/docs/not-found-page" + }, + { + text: "Api references", + link: "/api" } ] } diff --git a/docs/api.data.ts b/docs/api.data.ts new file mode 100644 index 00000000000..1f1887641e7 --- /dev/null +++ b/docs/api.data.ts @@ -0,0 +1,21 @@ +import {defineLoader} from "vitepress"; +import * as fs from "node:fs/promises"; +import {mapApiReferences} from "@tsed/vitepress-theme/composables/api/mappers/mapApiReferences"; +import type {ApiResponse} from "@tsed/vitepress-theme/composables/api/interfaces/Api"; + +export interface Data extends ApiResponse { + // data type +} + +declare const data: Data; +export {data}; + +export default defineLoader({ + watch: ["./public/api.json"], + async load(watchedFiles) { + // fetch remote data + const response = JSON.parse(await fs.readFile(watchedFiles[0], {encoding: "utf-8"})); + + return mapApiReferences(response); + } +}); diff --git a/docs/api.md b/docs/api.md new file mode 100644 index 00000000000..57d29bf12ec --- /dev/null +++ b/docs/api.md @@ -0,0 +1,14 @@ +--- +layout: page +meta: + - name: description + content: Api Reference of Ts.ED. Use decorator to build your model and map data. + - name: keywords + content: api reference model decorators ts.ed express typescript node.js javascript jsonschema json mapper serialization deserialization +--- + + + + diff --git a/docs/package.json b/docs/package.json index 01bf0910140..5b0fb2a2179 100644 --- a/docs/package.json +++ b/docs/package.json @@ -8,7 +8,7 @@ "docs:preview": "vitepress preview ." }, "dependencies": { - "@tsed/vitepress-theme": "1.0.8", + "@tsed/vitepress-theme": "1.2.2", "@vueuse/core": "10.11.0", "axios": "1.7.7", "lodash": "4.17.21", diff --git a/docs/public/apple-touch-icon.png b/docs/public/apple-touch-icon.png deleted file mode 100644 index 7b3ccc8ee821a9677ecd3529c1db3a7534d8012f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20523 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�Bcj%FvMn`d@jn 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 C03~z) literal 0 HcmV?d00001 diff --git a/docs/public/tsed.png b/docs/public/tsed.png new file mode 100644 index 0000000000000000000000000000000000000000..ccff1e837a18f58727f5a03c18d02de3c82d80be GIT binary patch literal 21702 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 literal 0 HcmV?d00001 diff --git a/docs/yarn.lock b/docs/yarn.lock index 22381041d26..a13b7f8e469 100644 --- a/docs/yarn.lock +++ b/docs/yarn.lock @@ -734,7 +734,7 @@ __metadata: version: 0.0.0-use.local resolution: "@tsed/docs-new@workspace:." dependencies: - "@tsed/vitepress-theme": "npm:1.0.8" + "@tsed/vitepress-theme": "npm:1.2.0" "@vueuse/core": "npm:10.11.0" autoprefixer: "npm:^10.4.19" axios: "npm:1.7.7" @@ -746,14 +746,14 @@ __metadata: languageName: unknown linkType: soft -"@tsed/vitepress-theme@npm:1.0.8": - version: 1.0.8 - resolution: "@tsed/vitepress-theme@npm:1.0.8" +"@tsed/vitepress-theme@npm:1.2.0": + version: 1.2.0 + resolution: "@tsed/vitepress-theme@npm:1.2.0" dependencies: "@vueuse/core": "npm:10.11.0" axios: "npm:1.7.7" lucide-vue-next: "npm:^0.436.0" - checksum: 10/b20cba3e438419347298dc76ad8460eec78e04a3021f466943b04fc70b032fbdc139a82b4a46c313411ab32b2800a839436ac822f14e79466e3ed1d9d7ecf376 + checksum: 10/acac9f8f7f0ef8a17311e6fd0991cb6f3c5fdb45bd17d065b78836eaedec674f2d68c6accca756baab01f5c413d92992eff19cb0fa64a26005fa1aa84fbe95c3 languageName: node linkType: hard diff --git a/package.json b/package.json index 07ee41e443c..7cc82304679 100644 --- a/package.json +++ b/package.json @@ -45,17 +45,14 @@ "build:references": "node ./tools/typescript", "build:eslint": "node ./tools/eslint", "sync:packages": "monorepo sync packages", - "api:build": "lerna run build && tsdoc", - "docs:install": "sh ./scripts/docs/install.sh", + "api:build": "lerna run build --concurrency=4 && tsdoc", + "api:build:dev": "npx -p chokidar-cli chokidar \"docs/.templates/**/*.{js,ejs}\" -c \"tsdoc\"", + "docs:install": "cd docs && yarn install && cd ..", "docs:serve": "yarn api:build && yarn vitepress:docs:serve", "docs:build": "yarn api:build && yarn vitepress:build", "docs:publish": "CI=1 monorepo publish ghpages", - "//vitepress:build": "yarn vitepress:docs:build && yarn vitepress:ref:build", - "vitepress:build": "yarn vitepress:docs:build", - "vitepress:docs:build": "rm -rf ./docs/api && cd ./docs && yarn docs:build", - "vitepress:ref:build": "cd ./docs-references && yarn vitepress:build", + "vitepress:build": "rm -rf ./docs/api && cd ./docs && yarn docs:build", "vitepress:docs:serve": "yarn docs:install && cd docs && yarn docs:serve -p 8080", - "vitepress:ref:serve": "yarn docs:install && cd docs-references && yarn docs:serve -p 8081", "prettier": "prettier '**/*.{ts,js,json,md,yml,yaml}' --write", "release": "semantic-release", "release:dryRun": "semantic-release --dry-run", @@ -118,7 +115,7 @@ "@swc/core": "1.7.28", "@swc/helpers": "0.5.13", "@tsed/monorepo-utils": "2.3.9", - "@tsed/ts-doc": "4.1.0", + "@tsed/ts-doc": "5.0.0", "@types/axios": "0.14.0", "@types/globby": "9.1.0", "@types/node": "22.7.4", @@ -203,13 +200,6 @@ "cname": "tsed.dev", "if": "production" }, - { - "dir": "./docs-references/.vuepress/dist", - "url": "https://github.com/tsedio/api-docs.tsed.io.git", - "branch": "main", - "cname": "api-docs.tsed.dev", - "if": "production" - }, { "dir": "./docs/.vuepress/dist", "url": "https://github.com/tsedio/rc.tsed.dev.git", diff --git a/packages/core/src/domain/Store.ts b/packages/core/src/domain/Store.ts index 021c0f6131f..dd3abac19ef 100644 --- a/packages/core/src/domain/Store.ts +++ b/packages/core/src/domain/Store.ts @@ -72,7 +72,7 @@ function defineStore(args: any[]): Store { export class Store { private _entries = new Map(); /** - * Create or get a Store from args {target + methodName + descriptor} + * Create or get a Store from given args (target, property, descriptor). * @param args * @returns {Store} */ diff --git a/packages/orm/mikro-orm/src/MikroOrmModule.ts b/packages/orm/mikro-orm/src/MikroOrmModule.ts index 4e4b62c64af..5bd15734ee2 100644 --- a/packages/orm/mikro-orm/src/MikroOrmModule.ts +++ b/packages/orm/mikro-orm/src/MikroOrmModule.ts @@ -1,4 +1,4 @@ -import "./services/MikroOrmFactory"; +import "./services/MikroOrmFactory.js"; import {EventSubscriber, Options} from "@mikro-orm/core"; import {classOf, isFunction, Store} from "@tsed/core"; diff --git a/packages/platform/platform-http/src/common/decorators/multer/multerFileSize.ts b/packages/platform/platform-http/src/common/decorators/multer/multerFileSize.ts index c784f281874..7f2a8419e02 100644 --- a/packages/platform/platform-http/src/common/decorators/multer/multerFileSize.ts +++ b/packages/platform/platform-http/src/common/decorators/multer/multerFileSize.ts @@ -21,7 +21,7 @@ import {MulterOptions} from "./multerOptions.js"; * } * ``` * - * > See the tutorial on the [multer configuration](/tutorials/multer.md). + * > See the tutorial on the [multer configuration](/docs/upload-files.md). * @param fileSize * @returns {(target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor} * @decorator diff --git a/packages/platform/platform-http/src/common/decorators/multer/multerOptions.ts b/packages/platform/platform-http/src/common/decorators/multer/multerOptions.ts index 16d46c6c673..e13346e07b0 100644 --- a/packages/platform/platform-http/src/common/decorators/multer/multerOptions.ts +++ b/packages/platform/platform-http/src/common/decorators/multer/multerOptions.ts @@ -37,7 +37,7 @@ import {PlatformMulterMiddleware} from "../../middlewares/PlatformMulterMiddlewa * } * ``` * - * See the tutorial on the [multer configuration](/tutorials/multer.md). + * See the tutorial on the [multer configuration](/docs/upload-files.md). * * @param {multer.Options} options * @returns {(target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor} diff --git a/packages/platform/platform-http/src/common/decorators/multer/multipartFile.ts b/packages/platform/platform-http/src/common/decorators/multer/multipartFile.ts index a3b33b956dc..2cbf416d4ff 100644 --- a/packages/platform/platform-http/src/common/decorators/multer/multipartFile.ts +++ b/packages/platform/platform-http/src/common/decorators/multer/multipartFile.ts @@ -53,7 +53,7 @@ function mapOptions(name: string, maxCount: number | undefined): MulterInputOpti * } * ``` * - * > See the tutorial on the [multer configuration](/tutorials/multer.md). + * > See the tutorial on the [multer configuration](/docs/upload-files.md). * * @param name * @param maxCount diff --git a/packages/specs/schema/src/decorators/common/format.ts b/packages/specs/schema/src/decorators/common/format.ts index e3617ff3586..641c20e9116 100644 --- a/packages/specs/schema/src/decorators/common/format.ts +++ b/packages/specs/schema/src/decorators/common/format.ts @@ -142,7 +142,6 @@ export const Format = withErrorMsg("format", (format: JsonFormatTypes | ValueOf< * } * ``` * - * > See [Format](api/common/jsonschema/schema) decorator. * @returns {Function} * @decorator * @validation @@ -209,7 +208,6 @@ export const Email = withErrorMsg("format", () => { * } * ``` * - * > See [Format](api/common/jsonschema/schema) decorator. * @returns {Function} * @decorator * @validation @@ -277,7 +275,6 @@ export const DateTime = withErrorMsg("format", () => { * } * ``` * - * > See [Format](api/common/jsonschema/schema) decorator. * @returns {Function} * @decorator * @validation @@ -344,7 +341,6 @@ export const DateFormat = withErrorMsg("format", () => { * } * ``` * - * > See [Format](api/common/jsonschema/schema) decorator. * @returns {Function} * @decorator * @validation @@ -411,7 +407,6 @@ export const TimeFormat = withErrorMsg("format", () => { * } * ``` * - * > See [Format](api/common/jsonschema/schema) decorator. * @returns {Function} * @decorator * @validation @@ -478,7 +473,6 @@ export const Uri = withErrorMsg("format", () => { * } * ``` * - * > See [Format](api/common/jsonschema/schema) decorator. * @returns {Function} * @decorator * @validation diff --git a/packages/third-parties/event-emitter/src/EventEmitterModule.ts b/packages/third-parties/event-emitter/src/EventEmitterModule.ts index fe0aefddf7a..2d494aaa18e 100644 --- a/packages/third-parties/event-emitter/src/EventEmitterModule.ts +++ b/packages/third-parties/event-emitter/src/EventEmitterModule.ts @@ -1,5 +1,5 @@ import {Constant, Inject, InjectorService, LOGGER, Module, Provider} from "@tsed/di"; -import {ListenerFn} from "eventemitter2"; +import type {ListenerFn} from "eventemitter2"; import {EventEmitterStore} from "./interfaces/EventEmitterStore.js"; import {EventEmitterService} from "./services/EventEmitterFactory.js"; diff --git a/packages/third-parties/event-emitter/src/interfaces/EventEmitterStore.ts b/packages/third-parties/event-emitter/src/interfaces/EventEmitterStore.ts index 31b799809e4..7072702c158 100644 --- a/packages/third-parties/event-emitter/src/interfaces/EventEmitterStore.ts +++ b/packages/third-parties/event-emitter/src/interfaces/EventEmitterStore.ts @@ -1,4 +1,4 @@ -import {event, eventNS, OnOptions} from "eventemitter2"; +import type {event, eventNS, OnOptions} from "eventemitter2"; export interface EventEmitterStore { onEvent?: {[propertyKey: string]: {event: event | eventNS; options?: boolean | OnOptions}}; diff --git a/packages/third-parties/event-emitter/src/services/EventEmitterFactory.ts b/packages/third-parties/event-emitter/src/services/EventEmitterFactory.ts index 785ca51f069..186b415370c 100644 --- a/packages/third-parties/event-emitter/src/services/EventEmitterFactory.ts +++ b/packages/third-parties/event-emitter/src/services/EventEmitterFactory.ts @@ -1,15 +1,15 @@ import {Configuration, registerProvider} from "@tsed/di"; import type {ConstructorOptions} from "eventemitter2"; -import {EventEmitter2} from "eventemitter2"; +import eventEmitter2 from "eventemitter2"; -export const EventEmitterService = EventEmitter2; -export type EventEmitterService = EventEmitter2; +export const EventEmitterService = eventEmitter2.EventEmitter2; +export type EventEmitterService = eventEmitter2.EventEmitter2; registerProvider({ - provide: EventEmitter2, + provide: eventEmitter2.EventEmitter2, deps: [Configuration], useFactory(settings: Configuration) { const opts = settings.get("eventEmitter", {enabled: false}); - return opts.enabled ? new EventEmitter2(opts) : {}; + return opts.enabled ? new eventEmitter2.EventEmitter2(opts) : {}; } }); diff --git a/scripts/docs/install.sh b/scripts/docs/install.sh index 7727034d867..7d38351f9c7 100644 --- a/scripts/docs/install.sh +++ b/scripts/docs/install.sh @@ -1,36 +1 @@ cd docs && yarn install && cd .. - -# clean -rm -rf "$PWD/docs-references/package.json" -rm -rf "$PWD/docs-references/.vitepress/scripts" -rm -rf "$PWD/docs-references/.vitepress/components" -rm -rf "$PWD/docs-references/.vitepress/styles" -rm -rf "$PWD/docs-references/.vitepress/public" -rm -rf "$PWD/docs-references/assets" -rm -rf "$PWD/docs-references/.vuepress/enhanceApp.js" -rm -rf "$PWD/docs-references/.vuepress/config.base.js" -rm -rf "$PWD/docs-references/node_modules" -rm -rf "$PWD/docs-references/docs/getting-started/" -rm -rf "$PWD/docs-references/docs/snippets/" -rm -rf "$PWD/docs-references/tutorials/snippets/" - -# install -cp -f "$PWD/docs/package.json" "$PWD/docs-references" -cp -R -f "$PWD/docs/assets" "$PWD/docs-references/assets" -cp -R -f "$PWD/docs/.vuepress/scripts" "$PWD/docs-references/.vuepress/scripts" -cp -R -f "$PWD/docs/.vuepress/components" "$PWD/docs-references/.vuepress/components" -cp -R -f "$PWD/docs/.vuepress/styles" "$PWD/docs-references/.vuepress/styles" -cp -R -f "$PWD/docs/.vuepress/public" "$PWD/docs-references/.vuepress/public" -cp -f "$PWD/docs/.vuepress/enhanceApp.js" "$PWD/docs-references/.vuepress" -cp -f "$PWD/docs/.vuepress/config.base.js" "$PWD/docs-references/.vuepress" -cp -f "$PWD/docs/.vuepress/window-boot.js" "$PWD/docs-references/.vuepress" - -mkdir "$PWD/docs-references/docs/" -mkdir "$PWD/docs-references/docs/getting-started/" -mkdir "$PWD/docs-references/tutorials/" - -cp -R -f "$PWD/docs/snippets" "$PWD/docs-references/docs/snippets" -cp -R -f "$PWD/docs/getting-started/snippets" "$PWD/docs-references/docs/getting-started/snippets" -cp -R -f "$PWD/docs/tutorials/snippets" "$PWD/docs-references/tutorials/snippets" - -ln -s "$PWD/docs/node_modules" "$PWD/docs-references/node_modules" diff --git a/tsdoc.config.js b/tsdoc.config.js index d53967b9c2c..84aac9034bc 100644 --- a/tsdoc.config.js +++ b/tsdoc.config.js @@ -43,9 +43,10 @@ module.exports = { "!/packages/platform/platform-test-sdk", "!**/node_modules" ], - outputDir: "/docs-references/api", + outputDir: "/docs/api", baseUrl: "/api", jsonOutputDir: "/docs/public", + templatesDir: "/docs/.templates", scope: "@tsed", modules: {} }; diff --git a/yarn.lock b/yarn.lock index d63a08311d7..9dcb511f3c3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8043,7 +8043,7 @@ __metadata: "@swc/helpers": "npm:0.5.13" "@tsed/logger": "npm:^6.7.8" "@tsed/monorepo-utils": "npm:2.3.9" - "@tsed/ts-doc": "npm:4.1.0" + "@tsed/ts-doc": "npm:5.0.0" "@types/axios": "npm:0.14.0" "@types/globby": "npm:9.1.0" "@types/node": "npm:22.7.4" @@ -8417,9 +8417,9 @@ __metadata: languageName: unknown linkType: soft -"@tsed/ts-doc@npm:4.1.0": - version: 4.1.0 - resolution: "@tsed/ts-doc@npm:4.1.0" +"@tsed/ts-doc@npm:5.0.0": + version: 5.0.0 + resolution: "@tsed/ts-doc@npm:5.0.0" dependencies: chalk: "npm:3.0.0" ejs: "npm:2.7.1" @@ -8428,11 +8428,12 @@ __metadata: glob: "npm:7.1.6" globby: "npm:8.0.2" listr: "npm:^0.14.3" + lodash: "npm:^4.17.21" normalize-path: "npm:3.0.0" read-pkg-up: "npm:7.0.0" bin: tsdoc: bin/tsdoc.js - checksum: 10/c51352c32265a086e7f09ef202952234353481d2429d8eec3902e0c7b3c47d80b271c4126a450a538037be0c05fe8ee0b93e9ed4dd938205dd71e20418aa50d7 + checksum: 10/0e726341daae5fcc1e6cf86e9be23b384e9348c1b1d5591b1185f3f26afb39c2e163855a05b123179aa82a91698d6fc1e1dc6ad6808d39641e4f7d08d817118a languageName: node linkType: hard