From 0350eeb0a11981dc5a7b9999e47d9c4b40744f61 Mon Sep 17 00:00:00 2001 From: Shahed Nasser Date: Thu, 5 Oct 2023 12:09:42 +0300 Subject: [PATCH] docs: create typedoc theme and plugins for references (#5297) * update typedoc and its plugins * refactor existing typedoc configurations * added new typedoc plugin and themes * added more customization options * added more customization options * refactored doc-utils to a workspace * fix tsconfig * update README files * remove comments * revert type changes * remove dependencies no longer needed * removed modules action --- .github/workflows/docs-freshness-check.yml | 5 + .github/workflows/docs-new-announcement.yml | 6 +- .../workflows/docs-remove-announcement.yml | 5 + .github/workflows/docs-test.yml | 1 + .github/workflows/generate-api-reference.yml | 48 - .../workflows/generate-entity-reference.yml | 47 - .github/workflows/generate-js-reference.yml | 47 - .github/workflows/generate-reference.yml | 47 - .github/workflows/generate-references.yml | 183 ++ docs-util/.eslintrc.js | 121 + .../.gitignore | 0 docs-util/.prettierrc | 8 + docs-util/.yarnrc.yml | 1 + docs-util/README.md | 3 + docs-util/package.json | 22 + .../packages/scripts/doc-change-release.ts | 90 + docs-util/packages/scripts/freshness-check.ts | 171 ++ .../packages/scripts/generate-reference.ts | 25 + docs-util/packages/scripts/package.json | 28 + docs-util/packages/scripts/tsconfig.json | 7 + .../packages/typedoc-config/base.js | 0 docs-util/packages/typedoc-config/entities.js | 21 + .../packages/typedoc-config/js-client.js | 15 +- docs-util/packages/typedoc-config/modules.js | 71 + .../packages/typedoc-config/package.json | 9 + docs-util/packages/typedoc-config/services.js | 17 + .../packages/typedoc-config/tsconfig.json | 7 + .../typedoc-plugin-frontmatter/.gitignore | 2 + .../typedoc-plugin-frontmatter}/README.md | 4 +- .../typedoc-plugin-frontmatter}/package.json | 21 +- .../typedoc-plugin-frontmatter/src/index.ts | 54 + .../typedoc-plugin-frontmatter/tsconfig.json | 7 + .../typedoc-plugin-markdown-medusa/.gitignore | 2 + .../typedoc-plugin-markdown-medusa/README.md | 28 + .../package.json | 37 + .../src/groups.ts | 23 + .../src/index.ts | 106 + .../src/options-reader.ts | 12 + .../src/render-utils.ts | 99 + .../src/resources/helpers/breadcrumbs.ts | 51 + .../src/resources/helpers/comment.ts | 120 + .../src/resources/helpers/comments.ts | 42 + .../resources/helpers/declaration-title.ts | 65 + .../src/resources/helpers/escape.ts | 8 + .../helpers/get-formatting-option.ts | 15 + .../src/resources/helpers/hierarchy.ts | 28 + .../src/resources/helpers/if-is-reference.ts | 16 + .../src/resources/helpers/if-named-anchors.ts | 12 + .../resources/helpers/if-show-breadcrumbs.ts | 12 + .../helpers/if-show-named-anchors.ts | 12 + .../resources/helpers/if-show-page-title.ts | 12 + .../src/resources/helpers/if-show-returns.ts | 13 + .../helpers/if-show-type-hierarchy.ts | 18 + .../helpers/index-signature-title.ts | 22 + .../src/resources/helpers/parameter-list.ts | 28 + .../src/resources/helpers/parameter-table.ts | 119 + .../src/resources/helpers/parameter.ts | 18 + .../src/resources/helpers/reference-member.ts | 25 + .../src/resources/helpers/reflection-path.ts | 36 + .../src/resources/helpers/reflection-title.ts | 40 + .../src/resources/helpers/relative-url.ts | 13 + .../src/resources/helpers/returns.ts | 34 + .../src/resources/helpers/section-enabled.ts | 13 + .../src/resources/helpers/signature-title.ts | 60 + .../src/resources/helpers/title-level.ts | 12 + .../src/resources/helpers/toc.ts | 57 + .../src/resources/helpers/type-and-parent.ts | 57 + .../type-declaration-object-literal.ts | 139 + .../resources/helpers/type-parameter-list.ts | 18 + .../resources/helpers/type-parameter-table.ts | 82 + .../src/resources/helpers/type-parameter.ts | 18 + .../src/resources/helpers/type.ts | 306 ++ .../src/resources/partials/comment.hbs | 13 + .../src/resources/partials/header.hbs | 5 + .../src/resources/partials/main.hbs | 3 + .../resources/partials/member.declaration.hbs | 87 + .../partials/member.getterSetter.hbs | 27 + .../src/resources/partials/member.hbs | 61 + .../resources/partials/member.signature.hbs | 147 + .../src/resources/partials/member.sources.hbs | 71 + .../src/resources/partials/members.group.hbs | 41 + .../src/resources/partials/members.hbs | 43 + .../src/resources/partials/title.hbs | 13 + .../src/resources/templates/index.hbs | 7 + .../src/resources/templates/reflection.hbs | 127 + .../resources/templates/reflection.member.hbs | 9 + .../src/theme.ts | 454 +++ .../src/types.ts | 143 + .../src/utils.ts | 83 + .../src/utils/front-matter.ts | 46 + .../src/utils/params-utils.ts | 36 + .../src/utils/reflection-formatter.ts | 70 + .../tsconfig.json | 7 + .../typedoc-plugin-modules/.gitignore | 2 + .../packages/typedoc-plugin-modules/README.md | 15 + .../typedoc-plugin-modules/package.json | 38 + .../typedoc-plugin-modules/src/index.ts | 6 + .../src/resolve-references-plugin.ts | 184 ++ .../typedoc-plugin-modules/tsconfig.json | 7 + .../tsconfig.json | 10 +- docs-util/turbo.json | 12 + .../typedoc-frontmatter-plugin/src/index.ts | 53 - .../typedoc-frontmatter-plugin/yarn.lock | 188 -- docs-util/yarn.lock | 2697 +++++++++++++++++ package.json | 15 +- scripts/doc-change-release.js | 65 - scripts/freshness-check.js | 154 - typedoc.entities.js | 17 - typedoc.services.js | 13 - yarn.lock | 222 +- 110 files changed, 7182 insertions(+), 930 deletions(-) delete mode 100644 .github/workflows/generate-api-reference.yml delete mode 100644 .github/workflows/generate-entity-reference.yml delete mode 100644 .github/workflows/generate-js-reference.yml delete mode 100644 .github/workflows/generate-reference.yml create mode 100644 .github/workflows/generate-references.yml create mode 100644 docs-util/.eslintrc.js rename docs-util/{typedoc-plugins/typedoc-frontmatter-plugin => }/.gitignore (100%) create mode 100644 docs-util/.prettierrc create mode 100644 docs-util/.yarnrc.yml create mode 100644 docs-util/README.md create mode 100644 docs-util/package.json create mode 100644 docs-util/packages/scripts/doc-change-release.ts create mode 100644 docs-util/packages/scripts/freshness-check.ts create mode 100644 docs-util/packages/scripts/generate-reference.ts create mode 100644 docs-util/packages/scripts/package.json create mode 100644 docs-util/packages/scripts/tsconfig.json rename typedoc.js => docs-util/packages/typedoc-config/base.js (100%) create mode 100644 docs-util/packages/typedoc-config/entities.js rename typedoc.js-client.js => docs-util/packages/typedoc-config/js-client.js (56%) create mode 100644 docs-util/packages/typedoc-config/modules.js create mode 100644 docs-util/packages/typedoc-config/package.json create mode 100644 docs-util/packages/typedoc-config/services.js create mode 100644 docs-util/packages/typedoc-config/tsconfig.json create mode 100644 docs-util/packages/typedoc-plugin-frontmatter/.gitignore rename docs-util/{typedoc-plugins/typedoc-frontmatter-plugin => packages/typedoc-plugin-frontmatter}/README.md (95%) rename docs-util/{typedoc-plugins/typedoc-frontmatter-plugin => packages/typedoc-plugin-frontmatter}/package.json (59%) create mode 100644 docs-util/packages/typedoc-plugin-frontmatter/src/index.ts create mode 100644 docs-util/packages/typedoc-plugin-frontmatter/tsconfig.json create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/.gitignore create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/README.md create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/package.json create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/groups.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/index.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/options-reader.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/render-utils.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/breadcrumbs.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/comment.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/comments.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/declaration-title.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/escape.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/get-formatting-option.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/hierarchy.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/if-is-reference.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/if-named-anchors.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/if-show-breadcrumbs.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/if-show-named-anchors.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/if-show-page-title.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/if-show-returns.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/if-show-type-hierarchy.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/index-signature-title.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/parameter-list.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/parameter-table.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/parameter.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/reference-member.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/reflection-path.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/reflection-title.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/relative-url.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/returns.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/section-enabled.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/signature-title.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/title-level.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/toc.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/type-and-parent.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/type-declaration-object-literal.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/type-parameter-list.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/type-parameter-table.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/type-parameter.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/type.ts create mode 100755 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/comment.hbs create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/header.hbs create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/main.hbs create mode 100755 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/member.declaration.hbs create mode 100755 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/member.getterSetter.hbs create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/member.hbs create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/member.signature.hbs create mode 100755 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/member.sources.hbs create mode 100755 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/members.group.hbs create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/members.hbs create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/title.hbs create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/templates/index.hbs create mode 100755 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/templates/reflection.hbs create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/templates/reflection.member.hbs create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/theme.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/types.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/utils.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/utils/front-matter.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/utils/params-utils.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/src/utils/reflection-formatter.ts create mode 100644 docs-util/packages/typedoc-plugin-markdown-medusa/tsconfig.json create mode 100644 docs-util/packages/typedoc-plugin-modules/.gitignore create mode 100644 docs-util/packages/typedoc-plugin-modules/README.md create mode 100644 docs-util/packages/typedoc-plugin-modules/package.json create mode 100644 docs-util/packages/typedoc-plugin-modules/src/index.ts create mode 100644 docs-util/packages/typedoc-plugin-modules/src/resolve-references-plugin.ts create mode 100644 docs-util/packages/typedoc-plugin-modules/tsconfig.json rename docs-util/{typedoc-plugins/typedoc-frontmatter-plugin => }/tsconfig.json (51%) create mode 100644 docs-util/turbo.json delete mode 100644 docs-util/typedoc-plugins/typedoc-frontmatter-plugin/src/index.ts delete mode 100644 docs-util/typedoc-plugins/typedoc-frontmatter-plugin/yarn.lock create mode 100644 docs-util/yarn.lock delete mode 100644 scripts/doc-change-release.js delete mode 100644 scripts/freshness-check.js delete mode 100644 typedoc.entities.js delete mode 100644 typedoc.services.js diff --git a/.github/workflows/docs-freshness-check.yml b/.github/workflows/docs-freshness-check.yml index 8ad7bcfa58b82..5e8b3461473a3 100644 --- a/.github/workflows/docs-freshness-check.yml +++ b/.github/workflows/docs-freshness-check.yml @@ -32,5 +32,10 @@ jobs: with: extension: docs-freshness-check + - name: Install Workspace dependencies + run: yarn install + working-directory: docs-utils + - name: Perform Freshness Check run: yarn check:freshness + working-directory: docs-utils/packages/scripts diff --git a/.github/workflows/docs-new-announcement.yml b/.github/workflows/docs-new-announcement.yml index a593c8bf7341e..0ede156cccfe6 100644 --- a/.github/workflows/docs-new-announcement.yml +++ b/.github/workflows/docs-new-announcement.yml @@ -30,11 +30,13 @@ jobs: with: extension: docs-release - - name: Build Packages - run: yarn build + - name: Install Workspace dependencies + run: yarn install + working-directory: docs-utils - name: Generate Announcement Bar run: yarn generate:announcement + working-directory: docs-utils/packages/scripts - name: Create Pull Request uses: peter-evans/create-pull-request@v4 diff --git a/.github/workflows/docs-remove-announcement.yml b/.github/workflows/docs-remove-announcement.yml index b3740249a388a..7f7e5e6145ce0 100644 --- a/.github/workflows/docs-remove-announcement.yml +++ b/.github/workflows/docs-remove-announcement.yml @@ -31,8 +31,13 @@ jobs: with: extension: docs-remove-announcement + - name: Install Workspace dependencies + run: yarn install + working-directory: docs-utils + - name: Remove Announcement Bar run: yarn generate:announcement --expire + working-directory: docs-utils/packages/scripts - name: Create Pull Request uses: peter-evans/create-pull-request@v4 diff --git a/.github/workflows/docs-test.yml b/.github/workflows/docs-test.yml index 2be5f343c3196..cbe10d728bb7b 100644 --- a/.github/workflows/docs-test.yml +++ b/.github/workflows/docs-test.yml @@ -32,6 +32,7 @@ jobs: - name: Install Workspace dependencies working-directory: www run: yarn install + - name: Build Docusaurus website working-directory: www env: diff --git a/.github/workflows/generate-api-reference.yml b/.github/workflows/generate-api-reference.yml deleted file mode 100644 index f2d8eef49acf3..0000000000000 --- a/.github/workflows/generate-api-reference.yml +++ /dev/null @@ -1,48 +0,0 @@ -name: Generate API Reference -on: - workflow_dispatch: - release: - types: [published] - -jobs: - api: - runs-on: ubuntu-latest - steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@0.11.0 - with: - access_token: ${{ github.token }} - - - name: Checkout - uses: actions/checkout@v3 - with: - token: ${{ secrets.REFERENCE_PAT }} - fetch-depth: 0 - - - name: Setup Node.js environment - uses: actions/setup-node@v3 - with: - node-version: "16.20.2" - cache: "yarn" - - - name: Install dependencies - uses: ./.github/actions/cache-deps - with: - extension: reference - - - name: Build Packages - run: yarn build - - - name: Generate API Reference - run: yarn openapi:generate - - - name: Create Pull Request - uses: peter-evans/create-pull-request@v4 - with: - commit-message: "chore(docs): Generated API Reference" - base: "develop" - title: "chore(docs): Updated API Reference" - labels: "type: chore" - add-paths: www/apps/api-reference/specs - branch: "chore/generate-api-ref" - branch-suffix: "timestamp" diff --git a/.github/workflows/generate-entity-reference.yml b/.github/workflows/generate-entity-reference.yml deleted file mode 100644 index 79198051b452c..0000000000000 --- a/.github/workflows/generate-entity-reference.yml +++ /dev/null @@ -1,47 +0,0 @@ -name: Generate Entity Reference -on: - workflow_dispatch: - release: - types: [published] - -jobs: - services: - runs-on: ubuntu-latest - steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@0.11.0 - with: - access_token: ${{ github.token }} - - - name: Checkout - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - - name: Setup Node.js environment - uses: actions/setup-node@v3 - with: - node-version: "16.20.2" - cache: "yarn" - - - name: Install dependencies - uses: ./.github/actions/cache-deps - with: - extension: reference - - - name: Build Packages - run: yarn build - - - name: Generate Entities Reference - run: yarn generate:entities - - - name: Create Pull Request - uses: peter-evans/create-pull-request@v4 - with: - commit-message: "chore(docs): Generated Entities Reference (automated)" - base: "develop" - title: "chore(docs): Generated Entities Reference (automated)" - labels: "type: chore" - add-paths: www/apps/docs/content/references/entities/** - branch: "chore/generate-entities" - branch-suffix: "timestamp" diff --git a/.github/workflows/generate-js-reference.yml b/.github/workflows/generate-js-reference.yml deleted file mode 100644 index 5f40c18178a4f..0000000000000 --- a/.github/workflows/generate-js-reference.yml +++ /dev/null @@ -1,47 +0,0 @@ -name: Generate JS Client Reference -on: - workflow_dispatch: - release: - types: [published] - -jobs: - services: - runs-on: ubuntu-latest - steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@0.11.0 - with: - access_token: ${{ github.token }} - - - name: Checkout - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - - name: Setup Node.js environment - uses: actions/setup-node@v3 - with: - node-version: "16.20.2" - cache: "yarn" - - - name: Install dependencies - uses: ./.github/actions/cache-deps - with: - extension: reference - - - name: Build Packages - run: yarn build - - - name: Generate Services Reference - run: yarn generate:js-client - - - name: Create Pull Request - uses: peter-evans/create-pull-request@v4 - with: - commit-message: "chore(docs): Generated JS Client Reference (automated)" - base: "develop" - title: "chore(docs): Generated JS Client Reference" - labels: "type: chore" - add-paths: www/apps/docs/content/references/js-client/** - branch: "chore/generate-js-client" - branch-suffix: "timestamp" diff --git a/.github/workflows/generate-reference.yml b/.github/workflows/generate-reference.yml deleted file mode 100644 index 3de94a45b9de7..0000000000000 --- a/.github/workflows/generate-reference.yml +++ /dev/null @@ -1,47 +0,0 @@ -name: Generate Services Reference -on: - workflow_dispatch: - release: - types: [published] - -jobs: - services: - runs-on: ubuntu-latest - steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@0.11.0 - with: - access_token: ${{ github.token }} - - - name: Checkout - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - - name: Setup Node.js environment - uses: actions/setup-node@v3 - with: - node-version: "16.20.2" - cache: "yarn" - - - name: Install dependencies - uses: ./.github/actions/cache-deps - with: - extension: reference - - - name: Build Packages - run: yarn build - - - name: Generate Services Reference - run: yarn generate:services - - - name: Create Pull Request - uses: peter-evans/create-pull-request@v4 - with: - commit-message: "chore(docs): Generated Services Reference (automated)" - base: "develop" - title: "chore(docs): Generated Services Reference (automated)" - labels: "type: chore" - add-paths: www/apps/docs/content/references/services/** - branch: "chore/generate-services" - branch-suffix: "timestamp" diff --git a/.github/workflows/generate-references.yml b/.github/workflows/generate-references.yml new file mode 100644 index 0000000000000..e6351056a2dac --- /dev/null +++ b/.github/workflows/generate-references.yml @@ -0,0 +1,183 @@ +name: Generate Documentation Reference +on: + workflow_dispatch: + release: + types: [published] + +jobs: + services: + runs-on: ubuntu-latest + steps: + - name: Cancel Previous Runs + uses: styfle/cancel-workflow-action@0.11.0 + with: + access_token: ${{ github.token }} + + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Setup Node.js environment + uses: actions/setup-node@v3 + with: + node-version: "16.20.2" + cache: "yarn" + + - name: Install dependencies + uses: ./.github/actions/cache-deps + with: + extension: reference + + - name: Build Packages + run: yarn build + + - name: Install Workspace dependencies + run: yarn install + working-directory: docs-utils + + - name: Generate Services Reference + run: yarn generate:reference services + working-directory: docs-utils/packages/scripts + + - name: Create Pull Request + uses: peter-evans/create-pull-request@v4 + with: + commit-message: "chore(docs): Generated Services Reference (automated)" + base: "develop" + title: "chore(docs): Generated Services Reference (automated)" + labels: "type: chore" + add-paths: www/apps/docs/content/references/services/** + branch: "chore/generate-services" + branch-suffix: "timestamp" + api: + runs-on: ubuntu-latest + steps: + - name: Cancel Previous Runs + uses: styfle/cancel-workflow-action@0.11.0 + with: + access_token: ${{ github.token }} + + - name: Checkout + uses: actions/checkout@v3 + with: + token: ${{ secrets.REFERENCE_PAT }} + fetch-depth: 0 + + - name: Setup Node.js environment + uses: actions/setup-node@v3 + with: + node-version: "16.20.2" + cache: "yarn" + + - name: Install dependencies + uses: ./.github/actions/cache-deps + with: + extension: reference + + - name: Build Packages + run: yarn build + + - name: Generate API Reference + run: yarn openapi:generate + + - name: Create Pull Request + uses: peter-evans/create-pull-request@v4 + with: + commit-message: "chore(docs): Generated API Reference" + base: "develop" + title: "chore(docs): Updated API Reference" + labels: "type: chore" + add-paths: www/apps/api-reference/specs + branch: "chore/generate-api-ref" + branch-suffix: "timestamp" + entities: + runs-on: ubuntu-latest + steps: + - name: Cancel Previous Runs + uses: styfle/cancel-workflow-action@0.11.0 + with: + access_token: ${{ github.token }} + + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Setup Node.js environment + uses: actions/setup-node@v3 + with: + node-version: "16.20.2" + cache: "yarn" + + - name: Install dependencies + uses: ./.github/actions/cache-deps + with: + extension: reference + + - name: Build Packages + run: yarn build + + - name: Install Workspace dependencies + run: yarn install + working-directory: docs-utils + + - name: Generate Entities Reference + run: yarn generate:references entities + working-directory: docs-utils/packages/scripts + + - name: Create Pull Request + uses: peter-evans/create-pull-request@v4 + with: + commit-message: "chore(docs): Generated Entities Reference (automated)" + base: "develop" + title: "chore(docs): Generated Entities Reference (automated)" + labels: "type: chore" + add-paths: www/apps/docs/content/references/entities/** + branch: "chore/generate-entities" + branch-suffix: "timestamp" + js-client: + runs-on: ubuntu-latest + steps: + - name: Cancel Previous Runs + uses: styfle/cancel-workflow-action@0.11.0 + with: + access_token: ${{ github.token }} + + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Setup Node.js environment + uses: actions/setup-node@v3 + with: + node-version: "16.20.2" + cache: "yarn" + + - name: Install dependencies + uses: ./.github/actions/cache-deps + with: + extension: reference + + - name: Build Packages + run: yarn build + + - name: Install Workspace dependencies + run: yarn install + working-directory: docs-utils + + - name: Generate Services Reference + run: yarn generate:references js-client + working-directory: docs-utils/packages/scripts + + - name: Create Pull Request + uses: peter-evans/create-pull-request@v4 + with: + commit-message: "chore(docs): Generated JS Client Reference (automated)" + base: "develop" + title: "chore(docs): Generated JS Client Reference" + labels: "type: chore" + add-paths: www/apps/docs/content/references/js-client/** + branch: "chore/generate-js-client" + branch-suffix: "timestamp" \ No newline at end of file diff --git a/docs-util/.eslintrc.js b/docs-util/.eslintrc.js new file mode 100644 index 0000000000000..4930121c51d6c --- /dev/null +++ b/docs-util/.eslintrc.js @@ -0,0 +1,121 @@ +const path = require("path") + +module.exports = { + root: true, + parser: "@babel/eslint-parser", + parserOptions: { + requireConfigFile: false, + ecmaFeatures: { + experimentalDecorators: true, + }, + project: true, + }, + plugins: ["prettier"], + extends: [ + "eslint:recommended", + "plugin:prettier/recommended", + ], + rules: { + curly: ["error", "all"], + "new-cap": "off", + "require-jsdoc": "off", + "no-unused-expressions": "off", + "no-unused-vars": "off", + camelcase: "off", + "no-invalid-this": "off", + "max-len": [ + "error", + { + code: 80, + ignoreStrings: true, + ignoreRegExpLiterals: true, + ignoreComments: true, + ignoreTrailingComments: true, + ignoreUrls: true, + ignoreTemplateLiterals: true, + }, + ], + semi: ["error", "never"], + quotes: [ + "error", + "double", + { + allowTemplateLiterals: true, + }, + ], + "comma-dangle": [ + "error", + { + arrays: "always-multiline", + objects: "always-multiline", + imports: "always-multiline", + exports: "always-multiline", + functions: "never", + }, + ], + "object-curly-spacing": ["error", "always"], + "arrow-parens": ["error", "always"], + "linebreak-style": 0, + "no-confusing-arrow": [ + "error", + { + allowParens: false, + }, + ], + "space-before-function-paren": [ + "error", + { + anonymous: "always", + named: "never", + asyncArrow: "always", + }, + ], + "space-infix-ops": "error", + "eol-last": ["error", "always"], + }, + env: { + es6: true, + node: true, + }, + ignorePatterns: [ + ".eslintrc.js", + "dist" + ], + overrides: [ + { + files: ["*.ts", "*.js"], + plugins: ["@typescript-eslint/eslint-plugin"], + extends: [ + "plugin:@typescript-eslint/recommended", + ], + parser: "@typescript-eslint/parser", + parserOptions: { + project: [ + "./tsconfig.json", + "./packages/scripts/tsconfig.json", + "./packages/typedoc-config/tsconfig.json", + "./packages/typedoc-frontmatter-plugin/tsconfig.json", + "./packages/typedoc-modules-plugin/tsconfig.json", + "./packages/typedoc-markdown-medusa-plugin/tsconfig.json" + ] + }, + rules: { + "valid-jsdoc": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/no-floating-promises": "error", + "@typescript-eslint/await-thenable": "error", + "@typescript-eslint/promise-function-async": "error", + "@typescript-eslint/keyword-spacing": "error", + "@typescript-eslint/space-before-function-paren": [ + "error", + { + anonymous: "always", + named: "never", + asyncArrow: "always", + }, + ], + "@typescript-eslint/space-infix-ops": "error", + }, + } + ], +} diff --git a/docs-util/typedoc-plugins/typedoc-frontmatter-plugin/.gitignore b/docs-util/.gitignore similarity index 100% rename from docs-util/typedoc-plugins/typedoc-frontmatter-plugin/.gitignore rename to docs-util/.gitignore diff --git a/docs-util/.prettierrc b/docs-util/.prettierrc new file mode 100644 index 0000000000000..aa4d695476ae2 --- /dev/null +++ b/docs-util/.prettierrc @@ -0,0 +1,8 @@ +{ + "endOfLine": "auto", + "semi": false, + "singleQuote": false, + "tabWidth": 2, + "trailingComma": "es5", + "arrowParens": "always" +} diff --git a/docs-util/.yarnrc.yml b/docs-util/.yarnrc.yml new file mode 100644 index 0000000000000..8b757b29a176b --- /dev/null +++ b/docs-util/.yarnrc.yml @@ -0,0 +1 @@ +nodeLinker: node-modules \ No newline at end of file diff --git a/docs-util/README.md b/docs-util/README.md new file mode 100644 index 0000000000000..dc6567f0079ad --- /dev/null +++ b/docs-util/README.md @@ -0,0 +1,3 @@ +# Docs Util Workspace + +All utility scripts and plugins used for documentation, such as generating documentation, are placed in this workspace. \ No newline at end of file diff --git a/docs-util/package.json b/docs-util/package.json new file mode 100644 index 0000000000000..8a8198e3d5534 --- /dev/null +++ b/docs-util/package.json @@ -0,0 +1,22 @@ +{ + "name": "docs-util", + "private": true, + "workspaces": [ + "packages/*" + ], + "scripts": { + "build": "turbo run build", + "watch": "turbo run watch", + "lint": "turbo run lint" + }, + "dependencies": { + "@babel/eslint-parser": "^7.22.15", + "@typescript-eslint/eslint-plugin": "^6.7.4", + "@typescript-eslint/parser": "^6.7.4", + "eslint": "^8.36.0", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-prettier": "^5.0.0", + "prettier": "^3.0.3", + "turbo": "latest" + } +} diff --git a/docs-util/packages/scripts/doc-change-release.ts b/docs-util/packages/scripts/doc-change-release.ts new file mode 100644 index 0000000000000..ea84d0672766c --- /dev/null +++ b/docs-util/packages/scripts/doc-change-release.ts @@ -0,0 +1,90 @@ +#!/usr/bin/env node + +import { Octokit } from "@octokit/core" +import fs from "fs" +import path from "path" + +const shouldExpire = process.argv.indexOf("--expire") !== -1 +const octokit = new Octokit({ + auth: process.env.GH_TOKEN, +}) + +async function main() { + let announcement = {} + + if (shouldExpire) { + //check if the file was last updated 6 days ago + try { + const commitResponse = await octokit.request( + "GET /repos/{owner}/{repo}/commits", + { + owner: "medusajs", + repo: "medusa", + path: path.join("www", "apps", "docs", "announcement.json"), + per_page: 1, + } + ) + + if ( + commitResponse.data.length && + commitResponse.data[0].commit.committer?.date && + dateDiffInDays( + new Date(commitResponse.data[0].commit.committer.date), + new Date() + ) < 6 + ) { + console.log("File was edited less than 6 days ago. Expiry canceled.") + return + } + } catch (e) { + //continue as if file doesn't exist + } + } else { + //retrieve the latest release + const response = await octokit.request( + "GET /repos/{owner}/{repo}/releases/latest", + { + owner: "medusajs", + repo: "medusa", + } + ) + + const version = response.data.tag_name + + //add new announcement + announcement = { + id: response.data.html_url, + content: `${version} is out`, + isCloseable: true, + } + } + + //write new config file + fs.writeFileSync( + path.join( + __dirname, + "..", + "..", + "..", + "www", + "apps", + "docs", + "announcement.json" + ), + JSON.stringify(announcement) + ) + console.log(`Announcement Bar has been ${shouldExpire ? "removed" : "added"}`) +} + +const _MS_PER_DAY = 1000 * 60 * 60 * 24 + +// a and b are javascript Date objects +function dateDiffInDays(a: Date, b: Date) { + // Discard the time and time-zone information. + const utc1 = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate()) + const utc2 = Date.UTC(b.getFullYear(), b.getMonth(), b.getDate()) + + return Math.floor((utc2 - utc1) / _MS_PER_DAY) +} + +void main() diff --git a/docs-util/packages/scripts/freshness-check.ts b/docs-util/packages/scripts/freshness-check.ts new file mode 100644 index 0000000000000..cc3ab7ccbc455 --- /dev/null +++ b/docs-util/packages/scripts/freshness-check.ts @@ -0,0 +1,171 @@ +#!/usr/bin/env node + +import { LinearClient } from "@linear/sdk" +import { Octokit } from "@octokit/core" +import fs from "fs" +import path from "path" + +const octokit = new Octokit({ + auth: process.env.GH_TOKEN, +}) + +const linearClient = new LinearClient({ + apiKey: process.env.LINEAR_API_KEY, +}) + +const repoPath = path.join( + __dirname, + "..", + "..", + "..", + "www", + "apps", + "docs", + "content" +) +let freshnessCheckLabelId = "" +let documentationTeamId = "" + +async function scanDirectory(startPath: string) { + const files = fs.readdirSync(path.join(startPath), { + withFileTypes: true, + }) + + for (const file of files) { + const filePath = path.join(startPath, file.name) + if (file.isDirectory()) { + //if it's references directory, skip + if (file.name !== "references" && file.name !== "upgrade-guides") { + await scanDirectory(filePath) + } + continue + } + + //check that the file is a markdown file + if (file.name.indexOf(".md") === -1 && file.name.indexOf(".mdx") === -1) { + continue + } + + //if it is a file, check its commits in GitHub + const commitResponse = await octokit.request( + "GET /repos/{owner}/{repo}/commits", + { + owner: "medusajs", + repo: "medusa", + path: filePath, + per_page: 1, + } + ) + + if ( + !commitResponse.data.length || + !commitResponse.data[0].commit.committer?.date + ) { + continue + } + + const today = new Date() + const lastEditedDate = new Date( + commitResponse.data[0].commit.committer.date + ) + const monthsSinceEdited = getMonthDifference(lastEditedDate, today) + + if (monthsSinceEdited > 6) { + //file was edited more than 6 months ago. + //check if there's an issue created for this file since the commit date + const existingIssue = await linearClient.issues({ + filter: { + createdAt: { + gte: subtractMonths(monthsSinceEdited - 6, today), + }, + title: { + containsIgnoreCase: `Freshness check for ${filePath}`, + }, + labels: { + some: { + id: { + eq: freshnessCheckLabelId, + }, + }, + }, + }, + first: 1, + }) + + if (existingIssue.nodes.length) { + //an issue has been created for the past 6 months. Don't create an issue for it. + continue + } + + console.log(`Creating an issue for ${filePath}...`) + + //there are no issues in the past 6 months. Create an issue + await linearClient.issueCreate({ + teamId: documentationTeamId, + title: `Freshness check for ${filePath}`, + labelIds: [freshnessCheckLabelId], + description: `File \`${filePath}\` was last edited on ${lastEditedDate.toDateString()}.`, + }) + } + } +} + +async function main() { + //fetch documentation team ID from linear + const documentationTeam = await linearClient.teams({ + filter: { + name: { + eqIgnoreCase: "Documentation", + }, + }, + first: 1, + }) + + if (!documentationTeam.nodes.length) { + console.log("Please add Documentation team in Linear first then try again") + process.exit(1) + } + + documentationTeamId = documentationTeam.nodes[0].id + + //fetch freshness check label ID from linear + const freshnessCheckLabel = await linearClient.issueLabels({ + filter: { + name: { + eqIgnoreCase: "type: freshness-check", + }, + team: { + id: { + eq: documentationTeamId, + }, + }, + }, + }) + + if (!freshnessCheckLabel.nodes.length) { + console.log( + "Please add freshness check label in Linear under the documentation team first then try again" + ) + process.exit(1) + } + + freshnessCheckLabelId = freshnessCheckLabel.nodes[0].id + + await scanDirectory(repoPath) +} + +function getMonthDifference(startDate: Date, endDate: Date) { + return ( + endDate.getMonth() - + startDate.getMonth() + + 12 * (endDate.getFullYear() - startDate.getFullYear()) + ) +} + +function subtractMonths(numOfMonths: number, date = new Date()) { + date.setMonth(date.getMonth() - numOfMonths) + + return date +} + +void main() diff --git a/docs-util/packages/scripts/generate-reference.ts b/docs-util/packages/scripts/generate-reference.ts new file mode 100644 index 0000000000000..ced3ccb390f5f --- /dev/null +++ b/docs-util/packages/scripts/generate-reference.ts @@ -0,0 +1,25 @@ +#!/usr/bin/env node +import path from "path" +import fs from "fs" +import { exec } from "child_process" + +const referenceNames = process.argv.slice(2) +referenceNames.forEach((names) => { + const configPathName = path.join( + __dirname, + "..", + "typedoc-config", + `${names}.js` + ) + + // check if the config file exists + if (!fs.existsSync(configPathName)) { + throw new Error( + `Config file for ${names} doesn't exist. Make sure to create it in ${configPathName}` + ) + } + + const typedocProcess = exec(`typedoc --options ${configPathName}`) + typedocProcess.stdout?.pipe(process.stdout) + typedocProcess.stderr?.pipe(process.stdout) +}) diff --git a/docs-util/packages/scripts/package.json b/docs-util/packages/scripts/package.json new file mode 100644 index 0000000000000..6c5fb7f35fd5f --- /dev/null +++ b/docs-util/packages/scripts/package.json @@ -0,0 +1,28 @@ +{ + "name": "scripts", + "private": true, + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "scripts": { + "generate:announcement": "ts-node ./doc-change-release.ts", + "generate:reference": "ts-node ./generate-reference.ts", + "check:freshness": "ts-node ./freshness-check.ts" + }, + "version": "0.0.0", + "dependencies": { + "@linear/sdk": "^1.22.0", + "@octokit/core": "^4.0.5", + "ts-node": "^10.9.1", + "typedoc": "0.25.1", + "typedoc-monorepo-link-types": "^0.0.2", + "typedoc-plugin-frontmatter": "*", + "typedoc-plugin-markdown": "3.16.0", + "typedoc-plugin-markdown-medusa": "*", + "typedoc-plugin-merge-modules": "5.1.0", + "typedoc-plugin-modules": "*", + "typedoc-plugin-reference-excluder": "1.1.3", + "typedoc-plugin-rename-defaults": "^0.6.6" + } +} diff --git a/docs-util/packages/scripts/tsconfig.json b/docs-util/packages/scripts/tsconfig.json new file mode 100644 index 0000000000000..63cce9c4ce34d --- /dev/null +++ b/docs-util/packages/scripts/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig", + "compilerOptions": { + "outDir": "./dist" + }, + "include": ["*.ts"] +} \ No newline at end of file diff --git a/typedoc.js b/docs-util/packages/typedoc-config/base.js similarity index 100% rename from typedoc.js rename to docs-util/packages/typedoc-config/base.js diff --git a/docs-util/packages/typedoc-config/entities.js b/docs-util/packages/typedoc-config/entities.js new file mode 100644 index 0000000000000..e56c60d538fff --- /dev/null +++ b/docs-util/packages/typedoc-config/entities.js @@ -0,0 +1,21 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +const path = require("path") +const globalTypedocOptions = require("./typedoc") + +const pathPrefix = path.join(__dirname, "..", "..") + +module.exports = { + ...globalTypedocOptions, + entryPoints: [path.join(pathPrefix, "packages/medusa/src/models/index.ts")], + out: [path.join(pathPrefix, "www/apps/docs/content/references/entities")], + tsconfig: path.join(pathPrefix, "packages/medusa/tsconfig.json"), + name: "Entities Reference", + indexTitle: "Entities Reference", + entryDocument: "index.md", + hideInPageTOC: true, + hideBreadcrumbs: true, + plugin: [...globalTypedocOptions.plugin, "typedoc-plugin-frontmatter"], + frontmatterData: { + displayed_sidebar: "entitiesSidebar", + }, +} diff --git a/typedoc.js-client.js b/docs-util/packages/typedoc-config/js-client.js similarity index 56% rename from typedoc.js-client.js rename to docs-util/packages/typedoc-config/js-client.js index 127de2f9b9941..98e5a4c2f7025 100644 --- a/typedoc.js-client.js +++ b/docs-util/packages/typedoc-config/js-client.js @@ -1,11 +1,15 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +const path = require("path") const globalTypedocOptions = require("./typedoc") +const pathPrefix = path.join(__dirname, "..", "..") + module.exports = { ...globalTypedocOptions, - entryPoints: ["packages/medusa-js/src/resources"], + entryPoints: [path.join(pathPrefix, "packages/medusa-js/src/resources")], entryPointStrategy: "expand", - out: ["www/apps/docs/content/references/js-client"], - tsconfig: "packages/medusa-js/tsconfig.json", + out: [path.join(pathPrefix, "www/apps/docs/content/references/js-client")], + tsconfig: path.join(pathPrefix, "packages/medusa-js/tsconfig.json"), name: "JS Client Reference", indexTitle: "JS Client Reference", entryDocument: "index.md", @@ -15,11 +19,10 @@ module.exports = { ...globalTypedocOptions.plugin, "typedoc-plugin-merge-modules", "typedoc-plugin-reference-excluder", - "typedoc-monorepo-link-types", - "typedoc-frontmatter-plugin", + "typedoc-plugin-frontmatter", ], exclude: [ - "packages/medusa-js/src/resources/base.ts", + path.join(pathPrefix, "packages/medusa-js/src/resources/base.ts"), "node_modules/**", "packages/**/node_modules", ], diff --git a/docs-util/packages/typedoc-config/modules.js b/docs-util/packages/typedoc-config/modules.js new file mode 100644 index 0000000000000..dbc2b92a45ddf --- /dev/null +++ b/docs-util/packages/typedoc-config/modules.js @@ -0,0 +1,71 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +const path = require("path") +const globalTypedocOptions = require("./base") + +const pathPrefix = path.join(__dirname, "..", "..", "..") + +module.exports = ({ + entryPointPath, + outPath, + tsconfigPath = "", + moduleName = "", + documentsToFormat = [], + additionalFormatting = {}, + extraOptions = {}, +}) => { + const formatting = {} + documentsToFormat.forEach((document) => { + formatting[document] = { + reflectionTitle: { + kind: false, + typeParameters: false, + suffix: "Reference", + }, + expandMembers: true, + showCommentsAsHeader: true, + parameterStyle: "list", + useTsLinkResolution: false, + showReturnSignature: false, + sections: { + reflection_typeParameters: false, + member_declaration_typeParameters: false, + reflection_implements: false, + reflection_implementedBy: false, + reflection_callable: false, + reflection_indexable: false, + member_signature_typeParameters: false, + member_signature_sources: false, + member_signature_title: false, + }, + reflectionGroups: { + Constructors: false, + Properties: false, + }, + ...additionalFormatting, + } + }) + return { + ...globalTypedocOptions, + entryPoints: [path.join(pathPrefix, entryPointPath)], + out: [path.join(pathPrefix, outPath)], + tsconfig: path.join( + pathPrefix, + tsconfigPath || "packages/types/tsconfig.json" + ), + name: `${moduleName} Reference`, + indexTitle: `${moduleName} Reference`, + entryDocument: "index.md", + entryPointStrategy: "expand", + hideInPageTOC: true, + hideBreadcrumbs: true, + plugin: [ + "typedoc-plugin-markdown-medusa", + "typedoc-plugin-modules", + "typedoc-plugin-rename-defaults", + "typedoc-plugin-frontmatter", + ], + hideMembersSymbol: true, + formatting, + ...extraOptions, + } +} diff --git a/docs-util/packages/typedoc-config/package.json b/docs-util/packages/typedoc-config/package.json new file mode 100644 index 0000000000000..e967a4691c091 --- /dev/null +++ b/docs-util/packages/typedoc-config/package.json @@ -0,0 +1,9 @@ +{ + "name": "typedoc-config", + "private": true, + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "version": "0.0.0" +} diff --git a/docs-util/packages/typedoc-config/services.js b/docs-util/packages/typedoc-config/services.js new file mode 100644 index 0000000000000..89f6cc26f003e --- /dev/null +++ b/docs-util/packages/typedoc-config/services.js @@ -0,0 +1,17 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +const path = require("path") +const globalTypedocOptions = require("./typedoc") + +const pathPrefix = path.join(__dirname, "..", "..") + +module.exports = { + ...globalTypedocOptions, + entryPoints: [path.join(pathPrefix, "packages/medusa/src/services/index.ts")], + out: [path.join(pathPrefix, "www/apps/docs/content/references/services")], + tsconfig: path.join(pathPrefix, "packages/medusa/tsconfig.json"), + name: "Services Reference", + indexTitle: "Services Reference", + entryDocument: "index.md", + hideInPageTOC: true, + hideBreadcrumbs: true, +} diff --git a/docs-util/packages/typedoc-config/tsconfig.json b/docs-util/packages/typedoc-config/tsconfig.json new file mode 100644 index 0000000000000..4c545ff687dcc --- /dev/null +++ b/docs-util/packages/typedoc-config/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig", + "compilerOptions": { + "outDir": "./dist" + }, + "include": ["*.js"] +} \ No newline at end of file diff --git a/docs-util/packages/typedoc-plugin-frontmatter/.gitignore b/docs-util/packages/typedoc-plugin-frontmatter/.gitignore new file mode 100644 index 0000000000000..13b6b556eb3fa --- /dev/null +++ b/docs-util/packages/typedoc-plugin-frontmatter/.gitignore @@ -0,0 +1,2 @@ +dist +.yarn \ No newline at end of file diff --git a/docs-util/typedoc-plugins/typedoc-frontmatter-plugin/README.md b/docs-util/packages/typedoc-plugin-frontmatter/README.md similarity index 95% rename from docs-util/typedoc-plugins/typedoc-frontmatter-plugin/README.md rename to docs-util/packages/typedoc-plugin-frontmatter/README.md index 4ac6242c06bdc..77c5f470e2e0e 100644 --- a/docs-util/typedoc-plugins/typedoc-frontmatter-plugin/README.md +++ b/docs-util/packages/typedoc-plugin-frontmatter/README.md @@ -1,4 +1,4 @@ -# typedoc-frontmatter-plugin +# typedoc-plugin-frontmatter A Typedoc plugin that allows inserting frontmatter key-value pairs at the top of the exported Markdown files. @@ -34,7 +34,7 @@ frontmatterData: { }, ``` -## Building the Plugin +## Build the Plugin Before using any command that makes use of this plugin, make sure to run the `build` command: diff --git a/docs-util/typedoc-plugins/typedoc-frontmatter-plugin/package.json b/docs-util/packages/typedoc-plugin-frontmatter/package.json similarity index 59% rename from docs-util/typedoc-plugins/typedoc-frontmatter-plugin/package.json rename to docs-util/packages/typedoc-plugin-frontmatter/package.json index 3c203456cfd9b..ab8c7cff16943 100644 --- a/docs-util/typedoc-plugins/typedoc-frontmatter-plugin/package.json +++ b/docs-util/packages/typedoc-plugin-frontmatter/package.json @@ -1,6 +1,11 @@ { - "name": "typedoc-frontmatter-plugin", - "version": "1.0.0", + "name": "typedoc-plugin-frontmatter", + "private": true, + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "version": "0.0.0", "description": "Plugin to add frontmatter key-values at the top of pages", "main": "./dist/index.js", "exports": "./dist/index.js", @@ -8,23 +13,23 @@ "dist" ], "author": "Shahed Nasser", - "license": "MIT", "scripts": { - "build": "tsc" + "build": "tsc", + "watch": "tsc --watch", + "lint": "eslint --ext .ts src" }, "peerDependencies": { - "typedoc": "0.22.x" + "typedoc": "0.25.x" }, "devDependencies": { "@types/node": "^16.11.10", - "typedoc": "^0.22.10", - "typescript": "4.5.2" + "typedoc": "^0.25.1", + "typescript": "^4.6" }, "keywords": [ "typedocplugin", "packages", "monorepo", - "lerna", "typedoc" ] } diff --git a/docs-util/packages/typedoc-plugin-frontmatter/src/index.ts b/docs-util/packages/typedoc-plugin-frontmatter/src/index.ts new file mode 100644 index 0000000000000..aec61dacb2802 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-frontmatter/src/index.ts @@ -0,0 +1,54 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import { Application, PageEvent, ParameterType } from "typedoc" + +export function load(app: Application) { + app.options.addDeclaration({ + name: "frontmatterData", + help: "An object of key-value pairs to be added to frontmatter", + type: ParameterType.Mixed, // The default + defaultValue: {}, + validate: (value: any) => { + if (typeof value === "string") { + //decode it with JSON to check if it's an object + value = JSON.parse(value) + } + + if ( + !(typeof value === "object" && !Array.isArray(value) && value !== null) + ) { + throw new Error("Value should be an object") + } + }, + }) + + app.options.addDeclaration({ + name: "pagesPattern", + help: "A string of pages pattern. The pattern will be tested using RegExp to determine whether the frontmatterData will be added or not.", + type: ParameterType.String, + defaultValue: "", + }) + + app.renderer.on(PageEvent.END, (page: PageEvent) => { + const patternStr: string | any = app.options.getValue("pagesPattern") + const pattern = new RegExp(patternStr) + let frontmatterData: object | any = app.options.getValue("frontmatterData") + if (typeof frontmatterData === "string") { + frontmatterData = JSON.parse(frontmatterData) + } + const frontmatterDataEntries = Object.entries(frontmatterData) + + if (!frontmatterDataEntries.length || !pattern.test(page.filename)) { + return + } + + let frontmatterStr = `---\n` + + for (const [key, value] of frontmatterDataEntries) { + frontmatterStr += `${key}: ${value}\n` + } + + frontmatterStr += `---\n\n` + + page.contents = frontmatterStr + page.contents + }) +} diff --git a/docs-util/packages/typedoc-plugin-frontmatter/tsconfig.json b/docs-util/packages/typedoc-plugin-frontmatter/tsconfig.json new file mode 100644 index 0000000000000..0e440b40139fb --- /dev/null +++ b/docs-util/packages/typedoc-plugin-frontmatter/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig", + "compilerOptions": { + "outDir": "./dist" + }, + "include": ["src"] +} \ No newline at end of file diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/.gitignore b/docs-util/packages/typedoc-plugin-markdown-medusa/.gitignore new file mode 100644 index 0000000000000..13b6b556eb3fa --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/.gitignore @@ -0,0 +1,2 @@ +dist +.yarn \ No newline at end of file diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/README.md b/docs-util/packages/typedoc-plugin-markdown-medusa/README.md new file mode 100644 index 0000000000000..32bec5b0bcd6f --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/README.md @@ -0,0 +1,28 @@ +# typedoc-plugin-markdown-medusa + +A plugin that forks and customizes the [typedoc-plugin-markdown](https://github.com/tgreyuk/typedoc-plugin-markdown/tree/master/packages/typedoc-plugin-markdown) to create a theme with more formatting options. + +## Configurations + +Aside from the options detailed in [typedoc-plugin-markdown](https://github.com/tgreyuk/typedoc-plugin-markdown/tree/master/packages/typedoc-plugin-markdown#options), the following options are accepted: + +- `formatting`: An object whose keys are string patterns used to target specific files. You can also use the string `*` to target all files. The values are objects having the following properties: + - `sections`: (optional) an object whose keys are of type [`SectionKey`](./src/types.ts#L19) and values are boolean. This property is used to enable/disable certain sections in the outputted generated docs. + - `reflectionGroups`: (optional) an object whose keys are titles of reflection groups (for example, `Constructors`), and values are boolean. This property is used to enable/disable reflection group from being documented. + - `reflectionTitle`: (optional) an object used to customize how the title of a generated documentation page is rendered. It accepts the following properties: + - `kind`: a boolean value indicating whether the documented resource's kind should be shown in the title. + - `typeParameters`: a boolean value indicating whether the documented resource's type parameters should b shown in the title. + - `suffix`: a string used to add additional text to the end of the page's title. + - `reflectionDescription`: (optional) a string used to add description in a documentation page after the page's title. + - `expandMembers`: (optional) a boolean indicating whether members in a page should be expanded. When enabled, the member titles (for example, `Methods`) are removed and the heading level of nested titles whithin the member is elevated by `1`. + - `showCommentAsHeader`: (optional) a boolean indicating whether comments, for example, a method's name, are represented as headers. + - `parameterStyle`: (optional) a string indicating how parameters are displayed. Its value can be `table` (default) or `list`. + - `showReturnSignature`: (optional) a boolean indicating whether to show the signature for returned values. + +## Build Plugin + +Before using any command that makes use of this plugin, make sure to run the `build` command: + +```bash +yarn build +``` diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/package.json b/docs-util/packages/typedoc-plugin-markdown-medusa/package.json new file mode 100644 index 0000000000000..9644f95d91a21 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/package.json @@ -0,0 +1,37 @@ +{ + "name": "typedoc-plugin-markdown-medusa", + "private": true, + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "version": "1.0.0", + "description": "A plugin that creates a theme with customization capabilities.", + "main": "./dist/index.js", + "exports": "./dist/index.js", + "files": [ + "dist" + ], + "author": "Shahed Nasser", + "scripts": { + "build": "tsc && copyfiles --up 1 ./src/**/*.hbs ./dist/", + "lint": "eslint --ext .ts src" + }, + "peerDependencies": { + "typedoc": "0.25.x" + }, + "devDependencies": { + "@types/node": "^16.11.10", + "copyfiles": "^2.4.1", + "typescript": "^4.6" + }, + "keywords": [ + "typedocplugin", + "packages", + "monorepo", + "typedoc" + ], + "dependencies": { + "handlebars": "^4.7.8" + } +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/groups.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/groups.ts new file mode 100644 index 0000000000000..1d484708a390e --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/groups.ts @@ -0,0 +1,23 @@ +import { ReflectionKind } from "typedoc" + +const PLURALS = { + [ReflectionKind.Class]: "Classes", + [ReflectionKind.Property]: "Properties", + [ReflectionKind.Enum]: "Enumerations", + [ReflectionKind.EnumMember]: "Enumeration members", + [ReflectionKind.TypeAlias]: "Type aliases", +} + +export function getKindPlural(kind: ReflectionKind): string { + if (kind in PLURALS) { + return PLURALS[kind as keyof typeof PLURALS] + } else { + return getKindString(kind) + "s" + } +} + +function getKindString(kind: ReflectionKind): string { + let str = ReflectionKind[kind] + str = str.replace(/(.)([A-Z])/g, (_m, a, b) => a + " " + b.toLowerCase()) + return str +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/index.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/index.ts new file mode 100644 index 0000000000000..a2e847dc5858e --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/index.ts @@ -0,0 +1,106 @@ +import { Application, ParameterType } from "typedoc" +import { MarkdownThemeOptionsReader } from "./options-reader" +import { MarkdownTheme } from "./theme" + +export function load(app: Application) { + app.renderer.defineTheme("markdown", MarkdownTheme) + app.options.addReader(new MarkdownThemeOptionsReader()) + + app.options.addDeclaration({ + help: "[Markdown Plugin] Do not render page title.", + name: "hidePageTitle", + type: ParameterType.Boolean, + defaultValue: false, + }) + + app.options.addDeclaration({ + help: "[Markdown Plugin] Do not render breadcrumbs in template.", + name: "hideBreadcrumbs", + type: ParameterType.Boolean, + defaultValue: false, + }) + + app.options.addDeclaration({ + help: "[Markdown Plugin] Specifies the base path that all links to be served from. If omitted all urls will be relative.", + name: "publicPath", + type: ParameterType.String, + }) + + app.options.addDeclaration({ + help: "[Markdown Plugin] Use HTML named anchors as fragment identifiers for engines that do not automatically assign header ids. Should be set for Bitbucket Server docs.", + name: "namedAnchors", + type: ParameterType.Boolean, + defaultValue: false, + }) + + app.options.addDeclaration({ + help: "[Markdown Plugin] Output all reflections into seperate output files.", + name: "allReflectionsHaveOwnDocument", + type: ParameterType.Boolean, + defaultValue: false, + }) + + app.options.addDeclaration({ + help: "[Markdown Plugin] Separator used to format filenames.", + name: "filenameSeparator", + type: ParameterType.String, + defaultValue: ".", + }) + + app.options.addDeclaration({ + help: "[Markdown Plugin] The file name of the entry document.", + name: "entryDocument", + type: ParameterType.String, + defaultValue: "README.md", + }) + + app.options.addDeclaration({ + help: "[Markdown Plugin] Do not render in-page table of contents items.", + name: "hideInPageTOC", + type: ParameterType.Boolean, + defaultValue: false, + }) + + app.options.addDeclaration({ + help: "[Markdown Plugin] Customise the index page title.", + name: "indexTitle", + type: ParameterType.String, + }) + + app.options.addDeclaration({ + help: "[Markdown Plugin] Do not add special symbols for class members.", + name: "hideMembersSymbol", + type: ParameterType.Boolean, + defaultValue: false, + }) + + app.options.addDeclaration({ + help: "[Markdown Plugin] Preserve anchor casing when generating links.", + name: "preserveAnchorCasing", + type: ParameterType.Boolean, + defaultValue: false, + }) + + app.options.addDeclaration({ + help: "[Markdown Plugin] Specify the Type Declaration Render Style", + name: "objectLiteralTypeDeclarationStyle", + type: ParameterType.String, + defaultValue: "table", + validate: (x) => { + const availableValues = ["table", "list"] + if (!availableValues.includes(x)) { + throw new Error( + `Wrong value for objectLiteralTypeDeclarationStyle, the expected value is one of ${availableValues}` + ) + } + }, + }) + + app.options.addDeclaration({ + help: "[Markdown Plugin] Formatting options that can be specified either on a specific document or to all documents", + name: "formatting", + type: ParameterType.Object, + defaultValue: {}, + }) +} +export { MarkdownTheme } diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/options-reader.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/options-reader.ts new file mode 100644 index 0000000000000..562b0d31f25fc --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/options-reader.ts @@ -0,0 +1,12 @@ +import { Options, OptionsReader } from "typedoc" + +export class MarkdownThemeOptionsReader implements OptionsReader { + name = "markdown-theme-reader" + readonly order = 1000 + readonly supportsPackages = false + read(container: Options) { + if (container.getValue("theme") === "default") { + container.setValue("theme", "markdown") + } + } +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/render-utils.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/render-utils.ts new file mode 100644 index 0000000000000..1ea653f6d42d5 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/render-utils.ts @@ -0,0 +1,99 @@ +import * as fs from "fs" +import * as Handlebars from "handlebars" +import * as path from "path" +import breadcrumbsHelper from "./resources/helpers/breadcrumbs" +import commentHelper from "./resources/helpers/comment" +import commentsHelper from "./resources/helpers/comments" +import declarationTitleHelper from "./resources/helpers/declaration-title" +import escapeHelper from "./resources/helpers/escape" +import hierarchyHelper from "./resources/helpers/hierarchy" +import ifIsReference from "./resources/helpers/if-is-reference" +import ifNamedAnchors from "./resources/helpers/if-named-anchors" +import ifShowBreadcrumbsHelper from "./resources/helpers/if-show-breadcrumbs" +import ifShowNamedAnchorsHelper from "./resources/helpers/if-show-named-anchors" +import ifShowPageTitleHelper from "./resources/helpers/if-show-page-title" +import ifShowReturnsHelper from "./resources/helpers/if-show-returns" +import ifShowTypeHierarchyHelper from "./resources/helpers/if-show-type-hierarchy" +import indexSignatureTitleHelper from "./resources/helpers/index-signature-title" +import parameterTableHelper from "./resources/helpers/parameter-table" +import objectLiteralMemberHelper from "./resources/helpers/type-declaration-object-literal" +import referenceMember from "./resources/helpers/reference-member" +import reflectionPathHelper from "./resources/helpers/reflection-path" +import reflectionTitleHelper from "./resources/helpers/reflection-title" +import relativeUrlHelper from "./resources/helpers/relative-url" +import returns from "./resources/helpers/returns" +import signatureTitleHelper from "./resources/helpers/signature-title" +import tocHelper from "./resources/helpers/toc" +import typeHelper from "./resources/helpers/type" +import typeAndParentHelper from "./resources/helpers/type-and-parent" +import typeParameterTableHelper from "./resources/helpers/type-parameter-table" +import sectionsHelper from "./resources/helpers/section-enabled" +import getFormattingOptionHelper from "./resources/helpers/get-formatting-option" +import titleLevelHelper from "./resources/helpers/title-level" +import typeParameterListHelper from "./resources/helpers/type-parameter-list" +import typeParameterHelper from "./resources/helpers/type-parameter" +import parameterListHelper from "./resources/helpers/parameter-list" +import parameterHelper from "./resources/helpers/parameter" +import { MarkdownTheme } from "./theme" + +const TEMPLATE_PATH = path.join(__dirname, "resources", "templates") + +export const indexTemplate = Handlebars.compile( + fs.readFileSync(path.join(TEMPLATE_PATH, "index.hbs")).toString() +) + +export const reflectionTemplate = Handlebars.compile( + fs.readFileSync(path.join(TEMPLATE_PATH, "reflection.hbs")).toString() +) + +export const reflectionMemberTemplate = Handlebars.compile( + fs.readFileSync(path.join(TEMPLATE_PATH, "reflection.member.hbs")).toString() +) + +export function registerPartials() { + const partialsFolder = path.join(__dirname, "resources", "partials") + const partialFiles = fs.readdirSync(partialsFolder) + partialFiles.forEach((partialFile) => { + const partialName = path.basename(partialFile, ".hbs") + const partialContent = fs + .readFileSync(partialsFolder + "/" + partialFile) + .toString() + Handlebars.registerPartial(partialName, partialContent) + }) +} + +export function registerHelpers(theme: MarkdownTheme) { + breadcrumbsHelper(theme) + commentHelper(theme) + commentsHelper(theme) + declarationTitleHelper(theme) + escapeHelper() + hierarchyHelper() + ifIsReference() + ifNamedAnchors(theme) + ifShowBreadcrumbsHelper(theme) + ifShowNamedAnchorsHelper(theme) + ifShowPageTitleHelper(theme) + ifShowReturnsHelper() + ifShowTypeHierarchyHelper() + indexSignatureTitleHelper() + parameterTableHelper() + objectLiteralMemberHelper(theme) + referenceMember() + reflectionPathHelper() + reflectionTitleHelper(theme) + relativeUrlHelper(theme) + returns() + signatureTitleHelper(theme) + tocHelper(theme) + typeHelper() + typeAndParentHelper() + typeParameterTableHelper() + sectionsHelper(theme) + getFormattingOptionHelper(theme) + titleLevelHelper(theme) + typeParameterListHelper() + typeParameterHelper(theme) + parameterListHelper() + parameterHelper(theme) +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/breadcrumbs.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/breadcrumbs.ts new file mode 100644 index 0000000000000..f7151ebbc26a7 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/breadcrumbs.ts @@ -0,0 +1,51 @@ +import * as Handlebars from "handlebars" +import { PageEvent } from "typedoc" +import { MarkdownTheme } from "../../theme" +import { escapeChars, getDisplayName } from "../../utils" + +export default function (theme: MarkdownTheme) { + Handlebars.registerHelper("breadcrumbs", function (this: PageEvent) { + const { entryPoints, entryDocument, project, readme } = theme + + if (!project) { + return "" + } + + const hasReadmeFile = !readme.endsWith("none") + const breadcrumbs: string[] = [] + const globalsName = entryPoints.length > 1 ? "Modules" : "Exports" + breadcrumbs.push( + this.url === entryDocument + ? project.name + : `[${getDisplayName(project)}](${Handlebars.helpers.relativeURL( + entryDocument + )})` + ) + if (hasReadmeFile) { + breadcrumbs.push( + this.url === project.url + ? globalsName + : `[${globalsName}](${Handlebars.helpers.relativeURL("modules.md")})` + ) + } + const breadcrumbsOut = breadcrumb(this, this.model, breadcrumbs) + return breadcrumbsOut + }) +} + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function breadcrumb(page: PageEvent, model: any, md: string[]) { + if (model && model.parent) { + breadcrumb(page, model.parent, md) + if (model.url) { + md.push( + page.url === model.url + ? `${escapeChars(model.name)}` + : `[${escapeChars(model.name)}](${Handlebars.helpers.relativeURL( + model.url + )})` + ) + } + } + return md.join(" / ") +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/comment.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/comment.ts new file mode 100644 index 0000000000000..7090cfdf13969 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/comment.ts @@ -0,0 +1,120 @@ +import * as fs from "fs" +import * as Handlebars from "handlebars" +import * as Path from "path" +import { CommentDisplayPart } from "typedoc/dist/lib/models/comments/comment" +import { MarkdownTheme } from "../../theme" + +export default function (theme: MarkdownTheme) { + Handlebars.registerHelper("comment", function (parts: CommentDisplayPart[]) { + const result: string[] = [] + for (const part of parts) { + switch (part.kind) { + case "text": + case "code": + result.push(part.text) + break + case "inline-tag": + switch (part.tag) { + case "@label": + case "@inheritdoc": + break + case "@link": + case "@linkcode": + case "@linkplain": { + if (part.target) { + const url = + typeof part.target === "string" + ? part.target + : "url" in part.target + ? Handlebars.helpers.relativeURL(part.target.url) + : "" + const wrap = part.tag === "@linkcode" ? "`" : "" + result.push( + url ? `[${wrap}${part.text}${wrap}](${url})` : part.text + ) + } else { + result.push(part.text) + } + break + } + default: + result.push(`{${part.tag} ${part.text}}`) + break + } + break + default: + result.push("") + } + } + + return parseMarkdown(result.join(""), theme) + }) +} + +function parseMarkdown(text: string, theme: MarkdownTheme) { + const includePattern = /\[\[include:([^\]]+?)\]\]/g + const mediaPattern = /media:\/\/([^ ")\]}]+)/g + + if (theme.includes) { + text = text.replace(includePattern, (_match, path) => { + path = Path.join(theme.includes!, path.trim()) + if (fs.existsSync(path) && fs.statSync(path).isFile()) { + const contents = readFile(path) + return contents + } else { + theme.application.logger.warn("Could not find file to include: " + path) + return "" + } + }) + } + + if (theme.mediaDirectory) { + text = text.replace(mediaPattern, (match: string, path: string) => { + const fileName = Path.join(theme.mediaDirectory!, path) + + if (fs.existsSync(fileName) && fs.statSync(fileName).isFile()) { + return Handlebars.helpers.relativeURL("media") + "/" + path + } else { + theme.application.logger.warn("Could not find media file: " + fileName) + return match + } + }) + } + + return text +} + +/** + * Load the given file and return its contents. + * + * @param file The path of the file to read. + * @returns The files contents. + */ +export function readFile(file: string): string { + const buffer = fs.readFileSync(file) + switch (buffer[0]) { + case 0xfe: + if (buffer[1] === 0xff) { + let i = 0 + while (i + 1 < buffer.length) { + const temp = buffer[i] + buffer[i] = buffer[i + 1] + buffer[i + 1] = temp + i += 2 + } + return buffer.toString("ucs2", 2) + } + break + case 0xff: + if (buffer[1] === 0xfe) { + return buffer.toString("ucs2", 2) + } + break + case 0xef: + if (buffer[1] === 0xbb) { + return buffer.toString("utf8", 3) + } + } + + return buffer.toString("utf8", 0) +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/comments.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/comments.ts new file mode 100644 index 0000000000000..8b80d6fb39822 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/comments.ts @@ -0,0 +1,42 @@ +import * as Handlebars from "handlebars" +import { Comment } from "typedoc" +import { camelToTitleCase } from "../../utils" +import { MarkdownTheme } from "../../theme" + +export default function (theme: MarkdownTheme) { + Handlebars.registerHelper( + "comments", + function ( + comment: Comment, + showSummary = true, + showTags = true, + commentLevel = 4 + ) { + const { showCommentsAsHeader } = theme.getFormattingOptionsForLocation() + const md: string[] = [] + + if (showSummary && comment.summary) { + md.push(Handlebars.helpers.comment(comment.summary)) + } + + const filteredTags = comment.blockTags.filter( + (tag) => tag.tag !== "@returns" + ) + + if (showTags && comment.blockTags?.length) { + const tags = filteredTags.map((tag) => { + return `${ + showCommentsAsHeader + ? `${Handlebars.helpers.titleLevel(commentLevel)} ` + : "**`" + }${camelToTitleCase(tag.tag.substring(1))}${ + showCommentsAsHeader ? "" : "`**" + }\n\n${Handlebars.helpers.comment(tag.content)}` + }) + md.push(tags.join("\n\n")) + } + + return md.join("\n\n") + } + ) +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/declaration-title.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/declaration-title.ts new file mode 100644 index 0000000000000..daa6f279aeca9 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/declaration-title.ts @@ -0,0 +1,65 @@ +import * as Handlebars from "handlebars" +import { + DeclarationReflection, + LiteralType, + ParameterReflection, + ReflectionKind, + ReflectionType, +} from "typedoc" +import { MarkdownTheme } from "../../theme" +import { + escapeChars, + memberSymbol, + stripComments, + stripLineBreaks, +} from "../../utils" + +export default function (theme: MarkdownTheme) { + Handlebars.registerHelper( + "declarationTitle", + function (this: ParameterReflection | DeclarationReflection) { + const md = theme.hideMembersSymbol ? [] : [memberSymbol(this)] + + function getType( + reflection: ParameterReflection | DeclarationReflection + ) { + const reflectionType = reflection.type as ReflectionType + if (reflectionType && reflectionType.declaration?.children) { + return ": `Object`" + } + return ( + (reflection.parent?.kindOf(ReflectionKind.Enum) ? " = " : ": ") + + Handlebars.helpers.type.call( + reflectionType ? reflectionType : reflection, + "object" + ) + ) + } + + if (this.flags && this.flags.length > 0 && !this.flags.isRest) { + md.push(" " + this.flags.map((flag) => `\`${flag}\``).join(" ")) + } + md.push( + `${this.flags.isRest ? "... " : ""} **${escapeChars(this.name)}**` + ) + if (this instanceof DeclarationReflection && this.typeParameters) { + md.push( + `<${this.typeParameters + .map((typeParameter) => `\`${typeParameter.name}\``) + .join(", ")}\\>` + ) + } + + md.push(getType(this)) + + if ( + !(this.type instanceof LiteralType) && + this.defaultValue && + this.defaultValue !== "..." + ) { + md.push(` = \`${stripLineBreaks(stripComments(this.defaultValue))}\``) + } + return md.join("") + } + ) +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/escape.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/escape.ts new file mode 100644 index 0000000000000..6e736455a2226 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/escape.ts @@ -0,0 +1,8 @@ +import * as Handlebars from "handlebars" +import { escapeChars } from "../../utils" + +export default function () { + Handlebars.registerHelper("escape", function (str: string) { + return escapeChars(str) + }) +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/get-formatting-option.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/get-formatting-option.ts new file mode 100644 index 0000000000000..facf34bcd0dab --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/get-formatting-option.ts @@ -0,0 +1,15 @@ +import { MarkdownTheme } from "../../theme" +import * as Handlebars from "handlebars" + +export default function (theme: MarkdownTheme) { + Handlebars.registerHelper( + "getFormattingOption", + function (optionName: string): unknown { + const options = theme.getFormattingOptionsForLocation() + + return optionName in options + ? options[optionName as keyof typeof options] + : null + } + ) +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/hierarchy.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/hierarchy.ts new file mode 100644 index 0000000000000..97cc88ee6a268 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/hierarchy.ts @@ -0,0 +1,28 @@ +import * as Handlebars from "handlebars" +import { DeclarationHierarchy } from "typedoc/dist/lib/models" +import { spaces } from "../../utils" + +export default function () { + Handlebars.registerHelper( + "hierarchy", + function (this: DeclarationHierarchy, level: number) { + const md: string[] = [] + const symbol = level > 0 ? getSymbol(level) : "-" + this.types.forEach((hierarchyType) => { + if (this.isTarget) { + md.push(`${symbol} **\`${hierarchyType}\`**`) + } else { + md.push(`${symbol} ${Handlebars.helpers.type.call(hierarchyType)}`) + } + }) + if (this.next) { + md.push(Handlebars.helpers.hierarchy.call(this.next, level + 1)) + } + return md.join("\n\n") + } + ) + + function getSymbol(level: number) { + return spaces(2) + [...Array(level)].map(() => "↳").join("") + } +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/if-is-reference.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/if-is-reference.ts new file mode 100644 index 0000000000000..5a7629961443c --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/if-is-reference.ts @@ -0,0 +1,16 @@ +import * as Handlebars from "handlebars" +import { DeclarationReflection, ReferenceReflection } from "typedoc" + +export default function () { + Handlebars.registerHelper( + "ifIsReference", + function ( + this: DeclarationReflection | ReferenceReflection, + options: Handlebars.HelperOptions + ) { + return this instanceof ReferenceReflection + ? options.fn(this) + : options.inverse(this) + } + ) +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/if-named-anchors.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/if-named-anchors.ts new file mode 100644 index 0000000000000..7d099787e0280 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/if-named-anchors.ts @@ -0,0 +1,12 @@ +import * as Handlebars from "handlebars" +import { PageEvent } from "typedoc" +import { MarkdownTheme } from "../../theme" + +export default function (theme: MarkdownTheme) { + Handlebars.registerHelper( + "ifNamedAnchors", + function (this: PageEvent, options: Handlebars.HelperOptions) { + return theme.namedAnchors ? options.fn(this) : options.inverse(this) + } + ) +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/if-show-breadcrumbs.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/if-show-breadcrumbs.ts new file mode 100644 index 0000000000000..cf9dff56c7583 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/if-show-breadcrumbs.ts @@ -0,0 +1,12 @@ +import * as Handlebars from "handlebars" +import { PageEvent } from "typedoc" +import { MarkdownTheme } from "../../theme" + +export default function (theme: MarkdownTheme) { + Handlebars.registerHelper( + "ifShowBreadcrumbs", + function (this: PageEvent, options: Handlebars.HelperOptions) { + return theme.hideBreadcrumbs ? options.inverse(this) : options.fn(this) + } + ) +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/if-show-named-anchors.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/if-show-named-anchors.ts new file mode 100644 index 0000000000000..e4a7530aa2feb --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/if-show-named-anchors.ts @@ -0,0 +1,12 @@ +import * as Handlebars from "handlebars" +import { PageEvent } from "typedoc" +import { MarkdownTheme } from "../../theme" + +export default function (theme: MarkdownTheme) { + Handlebars.registerHelper( + "ifShowNamedAnchors", + function (this: PageEvent, options: Handlebars.HelperOptions) { + return theme.namedAnchors ? options.fn(this) : options.inverse(this) + } + ) +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/if-show-page-title.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/if-show-page-title.ts new file mode 100644 index 0000000000000..4fd7525938a6b --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/if-show-page-title.ts @@ -0,0 +1,12 @@ +import * as Handlebars from "handlebars" +import { PageEvent } from "typedoc" +import { MarkdownTheme } from "../../theme" + +export default function (theme: MarkdownTheme) { + Handlebars.registerHelper( + "ifShowPageTitle", + function (this: PageEvent, options: Handlebars.HelperOptions) { + return theme.hidePageTitle ? options.inverse(this) : options.fn(this) + } + ) +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/if-show-returns.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/if-show-returns.ts new file mode 100644 index 0000000000000..30cc221fec1fa --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/if-show-returns.ts @@ -0,0 +1,13 @@ +import * as Handlebars from "handlebars" +import { ReflectionKind, SignatureReflection } from "typedoc" + +export default function () { + Handlebars.registerHelper( + "ifShowReturns", + function (this: SignatureReflection, options: Handlebars.HelperOptions) { + return this.type && !this.parent?.kindOf(ReflectionKind.Constructor) + ? options.fn(this) + : options.inverse(this) + } + ) +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/if-show-type-hierarchy.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/if-show-type-hierarchy.ts new file mode 100644 index 0000000000000..f4033d75f8625 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/if-show-type-hierarchy.ts @@ -0,0 +1,18 @@ +import * as Handlebars from "handlebars" +import { DeclarationHierarchy, DeclarationReflection } from "typedoc" +import { PageEvent } from "typedoc" + +export default function () { + Handlebars.registerHelper( + "ifShowTypeHierarchy", + function ( + this: PageEvent, + options: Handlebars.HelperOptions + ) { + const typeHierarchy = this.model?.typeHierarchy as DeclarationHierarchy + return typeHierarchy && typeHierarchy.next + ? options.fn(this) + : options.inverse(this) + } + ) +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/index-signature-title.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/index-signature-title.ts new file mode 100644 index 0000000000000..9ec1299fb50e9 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/index-signature-title.ts @@ -0,0 +1,22 @@ +import * as Handlebars from "handlebars" +import { SignatureReflection } from "typedoc" + +export default function () { + Handlebars.registerHelper( + "indexSignatureTitle", + function (this: SignatureReflection) { + const md = ["▪"] + const parameters = this.parameters + ? this.parameters.map((parameter) => { + return `${parameter.name}: ${Handlebars.helpers.type.call( + parameter.type + )}` + }) + : [] + md.push( + `[${parameters.join("")}]: ${Handlebars.helpers.type.call(this.type)}` + ) + return md.join(" ") + } + ) +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/parameter-list.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/parameter-list.ts new file mode 100644 index 0000000000000..6765d1840c865 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/parameter-list.ts @@ -0,0 +1,28 @@ +import * as Handlebars from "handlebars" +import reflectionFomatter from "../../utils/reflection-formatter" +import { ReflectionParameterType } from "../../types" +import { parseParams } from "../../utils/params-utils" + +export default function () { + Handlebars.registerHelper( + "parameterList", + + function (this: ReflectionParameterType[]) { + return list( + this.reduce( + (acc: ReflectionParameterType[], current) => + parseParams(current, acc), + [] + ) + ) + } + ) +} + +function list(parameters: ReflectionParameterType[]) { + const items = parameters.map((parameter) => { + return reflectionFomatter(parameter) + }) + + return items.join("\n") +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/parameter-table.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/parameter-table.ts new file mode 100644 index 0000000000000..7993b6fade192 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/parameter-table.ts @@ -0,0 +1,119 @@ +import * as Handlebars from "handlebars" +import { ParameterReflection, ReflectionType } from "typedoc" +import { stripLineBreaks } from "../../utils" +import { getReflectionType } from "./type" +import { parseParams } from "../../utils/params-utils" +import { ReflectionParameterType } from "../../types" + +export default function () { + Handlebars.registerHelper( + "parameterTable", + + function (this: ReflectionParameterType[]) { + return table( + this.reduce( + (acc: ReflectionParameterType[], current: ReflectionParameterType) => + parseParams(current, acc), + [] + ) as ParameterReflection[] + ) + } + ) +} + +function table(parameters: ParameterReflection[]) { + const showDefaults = hasDefaultValues(parameters) + + const comments = parameters.map( + (param: ParameterReflection) => !!param.comment?.hasVisibleComponent() + ) + const hasComments = !comments.every((value) => !value) + + const headers = ["Name", "Type"] + + if (showDefaults) { + headers.push("Default value") + } + + if (hasComments) { + headers.push("Description") + } + + const rows = parameters.map((parameter) => { + const row: string[] = [] + + const nbsp = " " // ? <== Unicode no-break space character + const rest = parameter.flags.isRest ? "..." : "" + const optional = parameter.flags.isOptional ? "?" : "" + + const isDestructuredParam = parameter.name == "__namedParameters" + const isDestructuredParamProp = + parameter.name.startsWith("__namedParameters.") + + if (isDestructuredParam) { + row.push(`\`${rest}«destructured»\``) + } else if (isDestructuredParamProp) { + row.push(`›${nbsp}\`${rest}${parameter.name.slice(18)}${optional}\``) + } else { + row.push(`\`${rest}${parameter.name}${optional}\``) + } + + row.push( + parameter.type + ? Handlebars.helpers.type.call(parameter.type, "object") + : getReflectionType(parameter, "object") + ) + + if (showDefaults) { + row.push(getDefaultValue(parameter)) + } + if (hasComments) { + const comments = getComments(parameter) + if (comments) { + row.push( + stripLineBreaks(Handlebars.helpers.comments(comments)).replace( + /\|/g, + "\\|" + ) + ) + } else { + row.push("-") + } + } + return `| ${row.join(" | ")} |\n` + }) + + const output = `\n| ${headers.join(" | ")} |\n| ${headers + .map(() => ":------") + .join(" | ")} |\n${rows.join("")}` + return output +} + +function getDefaultValue(parameter: ParameterReflection) { + return parameter.defaultValue && parameter.defaultValue !== "..." + ? `\`${parameter.defaultValue}\`` + : "`undefined`" +} + +function hasDefaultValues(parameters: ParameterReflection[]) { + const defaultValues = (parameters as ParameterReflection[]).map( + (param) => + param.defaultValue !== "{}" && + param.defaultValue !== "..." && + !!param.defaultValue + ) + + return !defaultValues.every((value) => !value) +} + +function getComments(parameter: ParameterReflection) { + if (parameter.type instanceof ReflectionType) { + if ( + parameter.type?.declaration?.signatures && + parameter.type?.declaration?.signatures[0]?.comment + ) { + return parameter.type?.declaration?.signatures[0]?.comment + } + } + return parameter.comment +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/parameter.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/parameter.ts new file mode 100644 index 0000000000000..0556c9d4e139e --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/parameter.ts @@ -0,0 +1,18 @@ +import * as Handlebars from "handlebars" +import { MarkdownTheme } from "../../theme" +import { ParameterReflection } from "typedoc" + +export default function (theme: MarkdownTheme) { + Handlebars.registerHelper( + "parameter", + function (this: ParameterReflection[]) { + const { parameterStyle } = theme.getFormattingOptionsForLocation() + + if (parameterStyle === "list") { + return Handlebars.helpers.parameterList.call(this) + } else { + return Handlebars.helpers.parameterTable.call(this) + } + } + ) +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/reference-member.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/reference-member.ts new file mode 100644 index 0000000000000..acf5d7d70b73c --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/reference-member.ts @@ -0,0 +1,25 @@ +import * as Handlebars from "handlebars" +import { ReferenceReflection } from "typedoc" + +export default function () { + Handlebars.registerHelper( + "referenceMember", + function (this: ReferenceReflection) { + const referenced = this.tryGetTargetReflectionDeep() + + if (!referenced) { + return `Re-exports ${this.name}` + } + + if (this.name === referenced.name) { + return `Re-exports [${ + referenced.name + }](${Handlebars.helpers.relativeURL(referenced.url)})` + } + + return `Renames and re-exports [${ + referenced.name + }](${Handlebars.helpers.relativeURL(referenced.url)})` + } + ) +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/reflection-path.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/reflection-path.ts new file mode 100644 index 0000000000000..7ecdfbe351693 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/reflection-path.ts @@ -0,0 +1,36 @@ +import * as Handlebars from "handlebars" +import { ContainerReflection, ReflectionKind } from "typedoc" +import { PageEvent } from "typedoc/dist/lib/output/events" + +export default function () { + Handlebars.registerHelper( + "reflectionPath", + + function (this: PageEvent) { + if (this.model) { + if (this.model.kind && this.model.kind !== ReflectionKind.Module) { + const title: string[] = [] + if (this.model.parent && this.model.parent.parent) { + if (this.model.parent.parent.parent) { + title.push( + `[${ + this.model.parent.parent.name + }](${Handlebars.helpers.relativeURL( + this.model?.parent?.parent.url + )})` + ) + } + title.push( + `[${this.model.parent.name}](${Handlebars.helpers.relativeURL( + this.model.parent.url + )})` + ) + } + title.push(this.model.name) + return title.length > 1 ? `${title.join(".")}` : null + } + } + return null + } + ) +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/reflection-title.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/reflection-title.ts new file mode 100644 index 0000000000000..cd117325729c0 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/reflection-title.ts @@ -0,0 +1,40 @@ +import * as Handlebars from "handlebars" +import { PageEvent, ParameterReflection, ReflectionKind } from "typedoc" +import { MarkdownTheme } from "../../theme" +import { escapeChars, getDisplayName } from "../../utils" + +export default function (theme: MarkdownTheme) { + Handlebars.registerHelper( + "reflectionTitle", + // eslint-disable-next-line @typescript-eslint/no-explicit-any + function (this: PageEvent, shouldEscape = true) { + const { reflectionTitle } = theme.getFormattingOptionsForLocation() + + const title: string[] = [""] + if ( + reflectionTitle?.kind && + this.model?.kind && + this.url !== this.project.url + ) { + title.push(`${ReflectionKind.singularString(this.model.kind)}: `) + } + if (this.url === this.project.url) { + title.push(theme.indexTitle || getDisplayName(this.model)) + } else { + title.push( + shouldEscape ? escapeChars(this.model.name) : this.model.name + ) + if (reflectionTitle?.typeParameters && this.model.typeParameters) { + const typeParameters = this.model.typeParameters + .map((typeParameter: ParameterReflection) => typeParameter.name) + .join(", ") + title.push(`<${typeParameters}${shouldEscape ? "\\>" : ">"}`) + } + } + if (reflectionTitle?.suffix) { + title.push(` ${reflectionTitle.suffix}`) + } + return title.join("") + } + ) +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/relative-url.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/relative-url.ts new file mode 100644 index 0000000000000..9f508a8b2db5c --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/relative-url.ts @@ -0,0 +1,13 @@ +import * as Handlebars from "handlebars" + +import { MarkdownTheme } from "../../theme" + +export default function (theme: MarkdownTheme) { + Handlebars.registerHelper("relativeURL", function (url: string) { + return url + ? theme.publicPath + ? theme.publicPath + url + : theme.getRelativeUrl(url) + : url + }) +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/returns.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/returns.ts new file mode 100644 index 0000000000000..903e5f9e80e59 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/returns.ts @@ -0,0 +1,34 @@ +import * as Handlebars from "handlebars" +import { Comment, DeclarationReflection } from "typedoc" +import reflectionFomatter from "../../utils/reflection-formatter" + +export default function () { + Handlebars.registerHelper("returns", function (comment: Comment) { + const md: string[] = [] + + if (comment.blockTags?.length) { + const tags = comment.blockTags + .filter((tag) => tag.tag === "@returns") + .map((tag) => { + let result = Handlebars.helpers.comment(tag.content) + tag.content.forEach((commentPart) => { + if ( + "target" in commentPart && + commentPart.target instanceof DeclarationReflection + ) { + const content = commentPart.target.children?.map((childItem) => + reflectionFomatter(childItem) + ) + result += `\n\n
\n\n${ + commentPart.target.name + }\n\n\n${content?.join("\n")}\n\n
` + } + }) + return result + }) + md.push(tags.join("\n\n")) + } + + return md.join("") + }) +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/section-enabled.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/section-enabled.ts new file mode 100644 index 0000000000000..807d252137254 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/section-enabled.ts @@ -0,0 +1,13 @@ +import { MarkdownTheme } from "../../theme" +import * as Handlebars from "handlebars" + +export default function (theme: MarkdownTheme) { + Handlebars.registerHelper( + "sectionEnabled", + function (sectionName: string): boolean { + const { sections } = theme.getFormattingOptionsForLocation() + + return !sections || !(sectionName in sections) || sections[sectionName] + } + ) +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/signature-title.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/signature-title.ts new file mode 100644 index 0000000000000..44bc160dd3fd0 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/signature-title.ts @@ -0,0 +1,60 @@ +import * as Handlebars from "handlebars" +import { + ParameterReflection, + ReflectionKind, + SignatureReflection, +} from "typedoc" +import { memberSymbol } from "../../utils" +import { MarkdownTheme } from "../../theme" + +export default function (theme: MarkdownTheme) { + Handlebars.registerHelper( + "signatureTitle", + function (this: SignatureReflection, accessor?: string, standalone = true) { + const md: string[] = [] + + if (standalone && !theme.hideMembersSymbol) { + md.push(`${memberSymbol(this)} `) + } + + if (this.parent && this.parent.flags?.length > 0) { + md.push(this.parent.flags.map((flag) => `\`${flag}\``).join(" ") + " ") + } + + if (accessor) { + md.push(`\`${accessor}\` **${this.name}**`) + } else if (this.name !== "__call" && this.name !== "__type") { + md.push(`**${this.name}**`) + } + + if (this.typeParameters) { + md.push( + `<${this.typeParameters + .map((typeParameter) => `\`${typeParameter.name}\``) + .join(", ")}\\>` + ) + } + md.push(`(${getParameters(this.parameters)})`) + + if (this.type && !this.parent?.kindOf(ReflectionKind.Constructor)) { + md.push(`: ${Handlebars.helpers.type.call(this.type, "object")}`) + } + return md.join("") + (standalone ? "\n" : "") + } + ) +} + +const getParameters = ( + parameters: ParameterReflection[] = [], + backticks = true +) => { + return parameters + .map((param) => { + const isDestructuredParam = param.name == "__namedParameters" + const paramItem = `${param.flags.isRest ? "..." : ""}${ + isDestructuredParam ? "«destructured»" : param.name + }${param.flags.isOptional || param.defaultValue ? "?" : ""}` + return backticks ? `\`${paramItem}\`` : paramItem + }) + .join(", ") +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/title-level.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/title-level.ts new file mode 100644 index 0000000000000..a3f3e00f78141 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/title-level.ts @@ -0,0 +1,12 @@ +import { MarkdownTheme } from "../../theme" +import * as Handlebars from "handlebars" + +export default function (theme: MarkdownTheme) { + Handlebars.registerHelper("titleLevel", function (originalLevel = 3): string { + const { expandMembers } = theme.getFormattingOptionsForLocation() + + const level = expandMembers ? originalLevel - 1 : originalLevel + + return Array(level).fill("#").join("") + }) +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/toc.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/toc.ts new file mode 100644 index 0000000000000..3f9f88b2c8e6a --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/toc.ts @@ -0,0 +1,57 @@ +import * as Handlebars from "handlebars" +import { + DeclarationReflection, + ProjectReflection, + ReflectionGroup, +} from "typedoc" +import { MarkdownTheme } from "../../theme" +import { escapeChars } from "../../utils" + +export default function (theme: MarkdownTheme) { + Handlebars.registerHelper( + "toc", + function (this: ProjectReflection | DeclarationReflection) { + const md: string[] = [] + + const { hideInPageTOC } = theme + + const isVisible = this.groups?.some((group) => + group.allChildrenHaveOwnDocument() + ) + + function pushGroup(group: ReflectionGroup, md: string[]) { + const children = group.children.map( + (child) => + `- [${escapeChars(child.name)}](${Handlebars.helpers.relativeURL( + child.url + )})` + ) + md.push(children.join("\n")) + } + + if ((!hideInPageTOC && this.groups) || (isVisible && this.groups)) { + if (!hideInPageTOC) { + md.push(`## Table of contents\n\n`) + } + const headingLevel = hideInPageTOC ? `##` : `###` + this.groups?.forEach((group) => { + const groupTitle = group.title + if (group.categories) { + group.categories.forEach((category) => { + md.push(`${headingLevel} ${category.title} ${groupTitle}\n\n`) + pushGroup(category as ReflectionGroup, md) + md.push("\n") + }) + } else { + if (!hideInPageTOC || group.allChildrenHaveOwnDocument()) { + md.push(`${headingLevel} ${groupTitle}\n\n`) + pushGroup(group, md) + md.push("\n") + } + } + }) + } + return md.length > 0 ? md.join("\n") : null + } + ) +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/type-and-parent.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/type-and-parent.ts new file mode 100644 index 0000000000000..1676aee90a6bd --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/type-and-parent.ts @@ -0,0 +1,57 @@ +import * as Handlebars from "handlebars" +import { SignatureReflection } from "typedoc" +import { ArrayType, ReferenceType } from "typedoc/dist/lib/models/types" +import { escapeChars } from "../../utils" + +export default function () { + Handlebars.registerHelper( + "typeAndParent", + function (this: ArrayType | ReferenceType) { + const getUrl = (name: string, url: string) => + `[${name}](${Handlebars.helpers.relativeURL(url)})` + if (this) { + if ("elementType" in this) { + return Handlebars.helpers.typeAndParent.call(this.elementType) + "[]" + } else { + if (this.reflection) { + const md: string[] = [] + if (this.reflection instanceof SignatureReflection) { + if (this.reflection.parent?.parent?.url) { + md.push( + getUrl( + this.reflection.parent.parent.name, + this.reflection.parent.parent.url + ) + ) + if (this.reflection.parent.url) { + md.push( + getUrl( + this.reflection.parent.name, + this.reflection.parent.url + ) + ) + } + } + } else { + if (this.reflection.parent?.url) { + md.push( + getUrl( + this.reflection.parent.name, + this.reflection.parent.url + ) + ) + if (this.reflection.url) { + md.push(getUrl(this.reflection.name, this.reflection.url)) + } + } + } + return md.join(".") + } else { + return escapeChars(this.toString()) + } + } + } + return "void" + } + ) +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/type-declaration-object-literal.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/type-declaration-object-literal.ts new file mode 100644 index 0000000000000..dd3514e7f55bf --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/type-declaration-object-literal.ts @@ -0,0 +1,139 @@ +import * as Handlebars from "handlebars" +import { DeclarationReflection, ReflectionType } from "typedoc" +import { MarkdownTheme } from "../../theme" +import { escapeChars, stripLineBreaks } from "../../utils" +import reflectionFomatter from "../../utils/reflection-formatter" +import { parseParams } from "../../utils/params-utils" +import { ReflectionParameterType } from "../../types" + +export default function (theme: MarkdownTheme) { + Handlebars.registerHelper( + "typeDeclarationMembers", + function (this: DeclarationReflection[]) { + const comments = this.map( + (param) => !!param.comment?.hasVisibleComponent() + ) + const hasComments = !comments.every((value) => !value) + + const properties = this.reduce( + (acc: ReflectionParameterType[], current: ReflectionParameterType) => + parseParams(current, acc), + [] + ) as DeclarationReflection[] + + let result = "" + switch (theme.objectLiteralTypeDeclarationStyle) { + case "list": { + result = getListMarkdownContent(properties) + break + } + case "table": { + result = getTableMarkdownContent(properties, hasComments) + break + } + } + return result + } + ) +} + +function getListMarkdownContent(properties: DeclarationReflection[]) { + const items = properties.map((property) => reflectionFomatter(property)) + + return items.join("\n") +} + +function getTableMarkdownContent( + properties: DeclarationReflection[], + hasComments: boolean +) { + const headers = ["Name", "Type"] + + if (hasComments) { + headers.push("Description") + } + const rows = properties.map((property) => { + const propertyType = getPropertyType(property) + const row: string[] = [] + const nameCol: string[] = [] + const name = + property.name.match(/[\\`\\|]/g) !== null + ? escapeChars(getName(property)) + : `\`${getName(property)}\`` + nameCol.push(name) + row.push(nameCol.join(" ")) + row.push( + Handlebars.helpers.type.call(propertyType).replace(/(? ":------") + .join(" | ")} |\n${rows.join("")}` + return output +} + +function getPropertyType(property: DeclarationReflection) { + if (property.getSignature) { + return property.getSignature.type + } + if (property.setSignature) { + return property.setSignature.type + } + return property.type ? property.type : property +} + +function getName(property: DeclarationReflection) { + const md: string[] = [] + if (property.flags.isRest) { + md.push("...") + } + if (property.getSignature) { + md.push(`get ${property.getSignature.name}()`) + } else if (property.setSignature) { + md.push( + `set ${ + property.setSignature.name + }(${property.setSignature.parameters?.map((parameter) => { + return `${parameter.name}:${Handlebars.helpers.type.call( + parameter.type, + "all", + false + )}` + })})` + ) + } else { + md.push(property.name) + } + if (property.flags.isOptional) { + md.push("?") + } + return md.join("") +} + +function getComments(property: DeclarationReflection) { + if (property.type instanceof ReflectionType) { + if (property.type?.declaration?.signatures) { + return property.type?.declaration.signatures[0].comment + } + } + if (property.signatures?.length) { + return property.signatures[0].comment + } + return property.comment +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/type-parameter-list.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/type-parameter-list.ts new file mode 100644 index 0000000000000..e705a9e14521b --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/type-parameter-list.ts @@ -0,0 +1,18 @@ +import * as Handlebars from "handlebars" +import { TypeParameterReflection } from "typedoc" +import reflectionFomatter from "../../utils/reflection-formatter" + +export default function () { + Handlebars.registerHelper( + "typeParameterList", + function (this: TypeParameterReflection[]) { + return list(this) + } + ) +} + +function list(parameters: TypeParameterReflection[]) { + const items = parameters.map((parameter) => reflectionFomatter(parameter)) + + return items.join("\n") +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/type-parameter-table.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/type-parameter-table.ts new file mode 100644 index 0000000000000..e87d98a3557fc --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/type-parameter-table.ts @@ -0,0 +1,82 @@ +import * as Handlebars from "handlebars" +import { TypeParameterReflection } from "typedoc" +import { stripLineBreaks } from "../../utils" + +export default function () { + Handlebars.registerHelper( + "typeParameterTable", + function (this: TypeParameterReflection[]) { + return table(this) + } + ) +} + +function table(parameters: TypeParameterReflection[]) { + const showTypeCol = hasTypes(parameters) + + const comments = parameters.map( + (param: TypeParameterReflection) => !!param.comment?.hasVisibleComponent() + ) + + const hasComments = !comments.every((value) => !value) + + const headers = ["Name"] + + if (showTypeCol) { + headers.push("Type") + } + + if (hasComments) { + headers.push("Description") + } + + const rows = parameters.map((parameter: TypeParameterReflection) => { + const row: string[] = [] + + row.push(`\`${parameter.name}\``) + + if (showTypeCol) { + const typeCol: string[] = [] + if (!parameter.type && !parameter.default) { + typeCol.push(`\`${parameter.name}\``) + } + if (parameter.type) { + typeCol.push( + `extends ${Handlebars.helpers.type.call(parameter.type, "object")}` + ) + } + if (parameter.default) { + if (parameter.type) { + typeCol.push(" = ") + } + typeCol.push(Handlebars.helpers.type.call(parameter.default)) + } + row.push(typeCol.join("")) + } + + if (hasComments) { + if (parameter.comment?.summary) { + row.push( + stripLineBreaks( + Handlebars.helpers.comment(parameter.comment?.summary) + ).replace(/\|/g, "\\|") + ) + } else { + row.push("-") + } + } + return `| ${row.join(" | ")} |\n` + }) + + const output = `\n| ${headers.join(" | ")} |\n| ${headers + .map(() => ":------") + .join(" | ")} |\n${rows.join("")}` + return output +} + +function hasTypes(parameters: TypeParameterReflection[]) { + const types = (parameters as TypeParameterReflection[]).map( + (param) => !!param.type || !!param.default + ) + return !types.every((value) => !value) +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/type-parameter.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/type-parameter.ts new file mode 100644 index 0000000000000..4fd0707c18077 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/type-parameter.ts @@ -0,0 +1,18 @@ +import * as Handlebars from "handlebars" +import { MarkdownTheme } from "../../theme" +import { TypeParameterReflection } from "typedoc" + +export default function (theme: MarkdownTheme) { + Handlebars.registerHelper( + "typeParameter", + function (this: TypeParameterReflection[]) { + const { parameterStyle } = theme.getFormattingOptionsForLocation() + + if (parameterStyle === "list") { + return Handlebars.helpers.typeParameterList.call(this) + } else { + return Handlebars.helpers.typeParameterTable.call(this) + } + } + ) +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/type.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/type.ts new file mode 100644 index 0000000000000..3b160a7999373 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/helpers/type.ts @@ -0,0 +1,306 @@ +import * as Handlebars from "handlebars" +import { + ArrayType, + ConditionalType, + DeclarationReflection, + IndexedAccessType, + InferredType, + IntersectionType, + IntrinsicType, + LiteralType, + PredicateType, + QueryType, + ReferenceType, + ReflectionType, + SignatureReflection, + TupleType, + TypeOperatorType, + UnionType, + UnknownType, +} from "typedoc" +import { escapeChars } from "../../utils" +import { ReflectionParameterType } from "../../types" + +type Collapse = "object" | "function" | "all" | "none" + +export default function () { + Handlebars.registerHelper( + "type", + function ( + this: + | ArrayType + | IntersectionType + | IntrinsicType + | ReferenceType + | TupleType + | UnionType + | TypeOperatorType + | QueryType + | PredicateType + | ReferenceType + | ConditionalType + | IndexedAccessType + | UnknownType + | InferredType, + + collapse: Collapse = "none", + emphasis = true + ) { + if (this instanceof ReferenceType) { + return getReferenceType(this, emphasis) + } + + if (this instanceof ArrayType && this.elementType) { + return getArrayType(this, emphasis) + } + + if (this instanceof UnionType && this.types) { + return getUnionType(this, emphasis) + } + + if (this instanceof IntersectionType && this.types) { + return getIntersectionType(this) + } + + if (this instanceof TupleType && this.elements) { + return getTupleType(this) + } + + if (this instanceof IntrinsicType && this.name) { + return getIntrinsicType(this, emphasis) + } + + if (this instanceof ReflectionType) { + return getReflectionType(this, collapse) + } + + if (this instanceof DeclarationReflection) { + return getReflectionType(this, collapse) + } + + if (this instanceof TypeOperatorType) { + return getTypeOperatorType(this) + } + + if (this instanceof QueryType) { + return getQueryType(this) + } + + if (this instanceof ConditionalType) { + return getConditionalType(this) + } + + if (this instanceof IndexedAccessType) { + return getIndexAccessType(this) + } + + if (this instanceof UnknownType) { + return getUnknownType(this) + } + + if (this instanceof InferredType) { + return getInferredType(this) + } + + if (this instanceof LiteralType) { + return getLiteralType(this) + } + + return this ? escapeChars(this.toString()) : "" + } + ) +} + +function getLiteralType(model: LiteralType) { + if (typeof model.value === "bigint") { + return `\`${model.value}n\`` + } + return `\`\`${JSON.stringify(model.value)}\`\`` +} + +export function getReflectionType( + model: ReflectionParameterType, + collapse: Collapse +) { + const root = model instanceof ReflectionType ? model.declaration : model + if ("signatures" in root && root.signatures) { + return collapse === "function" || collapse === "all" + ? `\`fn\`` + : getFunctionType(root.signatures) + } + return collapse === "object" || collapse === "all" + ? `\`Object\`` + : getDeclarationType(root as DeclarationReflection) +} + +export function getDeclarationType(model: DeclarationReflection) { + if (model.indexSignature || model.children) { + let indexSignature = "" + const declarationIndexSignature = model.indexSignature + if (declarationIndexSignature) { + const key = declarationIndexSignature.parameters + ? declarationIndexSignature.parameters.map( + (param) => `\`[${param.name}: ${param.type}]\`` + ) + : "" + const obj = Handlebars.helpers.type.call(declarationIndexSignature.type) + indexSignature = `${key}: ${obj}; ` + } + const types = + model.children && + model.children.map((obj) => { + return `\`${obj.name}${ + obj.flags.isOptional ? "?" : "" + }\`: ${Handlebars.helpers.type.call( + obj.signatures || obj.children ? obj : obj.type + )} ${ + obj.defaultValue && obj.defaultValue !== "..." + ? `= ${escapeChars(obj.defaultValue)}` + : "" + }` + }) + return `{ ${indexSignature ? indexSignature : ""}${ + types ? types.join("; ") : "" + } }${ + model.defaultValue && model.defaultValue !== "..." + ? `= ${escapeChars(model.defaultValue)}` + : "" + }` + } + return "{}" +} + +export function getFunctionType(modelSignatures: SignatureReflection[]) { + const functions = modelSignatures.map((fn) => { + const typeParams = fn.typeParameters + ? `<${fn.typeParameters + .map((typeParameter) => typeParameter.name) + .join(", ")}\\>` + : [] + const params = fn.parameters + ? fn.parameters.map((param) => { + return `${param.flags.isRest ? "..." : ""}\`${param.name}${ + param.flags.isOptional ? "?" : "" + }\`: ${Handlebars.helpers.type.call(param.type ? param.type : param)}` + }) + : [] + const returns = Handlebars.helpers.type.call(fn.type) + return typeParams + `(${params.join(", ")}) => ${returns}` + }) + return functions.join("") +} + +export function getReferenceType(model: ReferenceType, emphasis: boolean) { + if (model.reflection || (model.name && model.typeArguments)) { + const reflection: string[] = [] + + if (model.reflection?.url) { + reflection.push( + `[${`\`${model.reflection.name}\``}](${Handlebars.helpers.relativeURL( + model.reflection.url + )})` + ) + } else { + reflection.push( + model.externalUrl + ? `[${`\`${model.name}\``}]( ${model.externalUrl} )` + : `\`${model.name}\`` + ) + } + if (model.typeArguments && model.typeArguments.length > 0) { + reflection.push( + `<${model.typeArguments + .map((typeArgument) => Handlebars.helpers.type.call(typeArgument)) + .join(", ")}\\>` + ) + } + return reflection.join("") + } + return emphasis + ? model.externalUrl + ? `[${`\`${model.name}\``}]( ${model.externalUrl} )` + : `\`${model.name}\`` + : escapeChars(model.name) +} + +export function getArrayType(model: ArrayType, emphasis: boolean) { + const arrayType = Handlebars.helpers.type.call( + model.elementType, + "none", + emphasis + ) + return model.elementType.type === "union" + ? `(${arrayType})[]` + : `${arrayType}[]` +} + +export function getUnionType(model: UnionType, emphasis: boolean) { + return model.types + .map((unionType) => + Handlebars.helpers.type.call(unionType, "none", emphasis) + ) + .join(` \\| `) +} + +export function getIntersectionType(model: IntersectionType) { + return model.types + .map((intersectionType) => Handlebars.helpers.type.call(intersectionType)) + .join(" & ") +} + +export function getTupleType(model: TupleType) { + return `[${model.elements + .map((element) => Handlebars.helpers.type.call(element)) + .join(", ")}]` +} + +export function getIntrinsicType(model: IntrinsicType, emphasis: boolean) { + return emphasis ? `\`${model.name}\`` : escapeChars(model.name) +} + +export function getTypeOperatorType(model: TypeOperatorType) { + return `${model.operator} ${Handlebars.helpers.type.call(model.target)}` +} + +export function getQueryType(model: QueryType) { + return `typeof ${Handlebars.helpers.type.call(model.queryType)}` +} + +export function getInferredType(model: InferredType) { + return `infer ${escapeChars(model.name)}` +} + +export function getUnknownType(model: UnknownType) { + return escapeChars(model.name) +} + +export function getConditionalType(model: ConditionalType) { + const md: string[] = [] + if (model.checkType) { + md.push(Handlebars.helpers.type.call(model.checkType)) + } + md.push("extends") + if (model.extendsType) { + md.push(Handlebars.helpers.type.call(model.extendsType)) + } + md.push("?") + if (model.trueType) { + md.push(Handlebars.helpers.type.call(model.trueType)) + } + md.push(":") + if (model.falseType) { + md.push(Handlebars.helpers.type.call(model.falseType)) + } + return md.join(" ") +} + +export function getIndexAccessType(model: IndexedAccessType) { + const md: string[] = [] + if (model.objectType) { + md.push(Handlebars.helpers.type.call(model.objectType)) + } + if (model.indexType) { + md.push(`[${Handlebars.helpers.type.call(model.indexType)}]`) + } + return md.join("") +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/comment.hbs b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/comment.hbs new file mode 100755 index 0000000000000..c3a2f4572f666 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/comment.hbs @@ -0,0 +1,13 @@ +{{#if (sectionEnabled "comment")}} + +{{#with comment}} + +{{#if hasVisibleComponent}} + +{{{comments this}}} + +{{/if}} + +{{/with}} + +{{/if}} \ No newline at end of file diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/header.hbs b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/header.hbs new file mode 100644 index 0000000000000..6a46ac2abdb7d --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/header.hbs @@ -0,0 +1,5 @@ +{{#ifShowBreadcrumbs}} + +{{{breadcrumbs}}} + +{{/ifShowBreadcrumbs}} \ No newline at end of file diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/main.hbs b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/main.hbs new file mode 100644 index 0000000000000..01d889e1f6f7d --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/main.hbs @@ -0,0 +1,3 @@ +{{ toc }} + +{{> members}} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/member.declaration.hbs b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/member.declaration.hbs new file mode 100755 index 0000000000000..a17474edde758 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/member.declaration.hbs @@ -0,0 +1,87 @@ +{{{declarationTitle}}} + +{{> comment}} + +{{#if (sectionEnabled "member_declaration_typeParameters")}} + +{{#if typeParameters}} + +{{titleLevel 4}} Type parameters + +{{#with typeParameters}} + +{{{typeParameter}}} + +{{/with}} + +{{/if}} + +{{/if}} + +{{#if type.declaration}} + +{{#if (sectionEnabled "member_declaration_indexSignature")}} + +{{#if type.declaration.indexSignature}} + +{{#with type.declaration.indexSignature}} + +{{titleLevel 4}} Index signature + +{{{indexSignatureTitle}}} + +{{> comment}} + +{{/with}} + +{{/if}} + +{{/if}} + +{{#if (sectionEnabled "member_declaration_signatures")}} + +{{#if type.declaration.signatures}} + +{{#if type.declaration.children}} + +{{titleLevel 4}} Call signature + +{{else}} + +{{titleLevel 4}} Type declaration + +{{/if}} + +{{#each type.declaration.signatures}} + +{{> member.signature showSources=false }} + +{{/each}} + +{{/if}} + +{{/if}} + +{{#if (sectionEnabled "member_declaration_typeDeclaration")}} + +{{#if type.declaration.children}} + +{{#with type.declaration}} + +{{titleLevel 4}} Type declaration + +{{/with}} + +{{#with type.declaration.children}} + +{{{typeDeclarationMembers}}} + +{{/with}} + +{{/if}} + +{{/if}} + +{{/if}} + +{{> member.sources}} \ No newline at end of file diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/member.getterSetter.hbs b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/member.getterSetter.hbs new file mode 100755 index 0000000000000..0657dc1fbda8e --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/member.getterSetter.hbs @@ -0,0 +1,27 @@ +{{#if getSignature}} + +{{#if (sectionEnabled "member_getteSetter_getSignature")}} + +{{#with getSignature}} + +{{> member.signature accessor="get" showSources=true }} + +{{/with}} + +{{/if}} + +{{/if}} + +{{#if setSignature}} + +{{#if (sectionEnabled "member_getteSetter_setSignature")}} + +{{#with setSignature}} + +{{> member.signature accessor="set" showSources=true }} + +{{/with}} + +{{/if}} + +{{/if}} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/member.hbs b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/member.hbs new file mode 100644 index 0000000000000..5062e71e6c834 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/member.hbs @@ -0,0 +1,61 @@ +{{#unless hasOwnDocument}} + +{{#if name}} + +{{titleLevel 3}} {{#ifNamedAnchors}} {{/ifNamedAnchors}}{{ escape name }} + +{{/if}} + +{{/unless}} + +{{#if signatures}} + +{{#if (sectionEnabled "member_signatures")}} + +{{#each signatures}} + +{{> member.signature showSources=true }} + +{{/each}} + +{{/if}} + +{{else}} + +{{#if hasGetterOrSetter}} + +{{#if (sectionEnabled "member_getterSetter")}} + +{{> member.getterSetter}} + +{{/if}} + +{{else}} + +{{#ifIsReference}} + +{{#if (sectionEnabled "member_reference")}} + +{{referenceMember}} + +{{/if}} + +{{else}} + +{{#if (sectionEnabled "member_declaration")}} + +{{> member.declaration}} + +{{/if}} + +{{/ifIsReference}} + +{{/if}} + +{{/if}} + +{{#unless @last}} +{{#unless hasOwnDocument}} +___ +{{/unless}} +{{/unless}} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/member.signature.hbs b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/member.signature.hbs new file mode 100644 index 0000000000000..7bb5718c54aa4 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/member.signature.hbs @@ -0,0 +1,147 @@ +{{#if (sectionEnabled "member_signature_title")}} + +{{{signatureTitle accessor}}} + +{{/if}} + +{{#if (sectionEnabled "member_signature_comment")}} + +{{#with comment}} + +{{#if hasVisibleComponent}} + +{{{comments this true false}}} + +{{/if}} + +{{/with}} + +{{/if}} + +{{#if (sectionEnabled "member_signature_typeParameters")}} + +{{#if typeParameters}} + +{{#with typeParameters}} + +{{{typeParameter}}} + +{{/with}} + +{{/if}} + +{{/if}} + +{{#if (sectionEnabled "member_signature_parameters")}} + +{{#if parameters}} + +{{#if showSources}} + +{{titleLevel 4}} Parameters + +{{else}} + +{{titleLevel 5}} Parameters + +{{/if}} + +{{#with parameters}} + +{{{parameter}}} + +{{/with}} + +{{/if}} + +{{/if}} + +{{#ifShowReturns}} + +{{#if type}} + +{{#if showSources}} + +{{titleLevel 4}} Returns + +{{else}} + +{{titleLevel 5}} Returns + +{{/if}} + +{{#if (getFormattingOption "showReturnSignature")}} + +{{#with type}} + +{{{type 'all'}}} + +{{/with}} + +{{/if}} + +{{#with comment}} + +{{{returns this}}} + +{{/with}} + +{{#with type}} + +{{#if (sectionEnabled "member_signature_declarationSignatures")}} + +{{#if declaration.signatures}} + +{{#each declaration.signatures}} + +{{> member.signature showSources=false }} + +{{/each}} + +{{/if}} + +{{/if}} + +{{#if (sectionEnabled "member_signature_declarationChildren")}} + +{{#if declaration.children}} + +{{#with declaration.children}} + +{{{typeDeclarationMembers}}} + +{{/with}} + +{{/if}} + +{{/if}} + +{{/with}} + +{{/if}} + +{{/ifShowReturns}} + +{{#if (sectionEnabled "member_signature_comment")}} + +{{#with comment}} + +{{#if hasVisibleComponent}} + +{{{comments this false true 4}}} + +{{/if}} + +{{/with}} + +{{/if}} + +{{#if (sectionEnabled "member_signature_sources")}} + +{{#if showSources}} + +{{> member.sources}} + +{{/if}} + +{{/if}} \ No newline at end of file diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/member.sources.hbs b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/member.sources.hbs new file mode 100755 index 0000000000000..3b4887b4b27c9 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/member.sources.hbs @@ -0,0 +1,71 @@ +{{#if (sectionEnabled "member_sources_implementationOf")}} + +{{#if implementationOf}} + +{{titleLevel 4}} Implementation of + +{{#with implementationOf}} + +{{typeAndParent}} + +{{/with}} + +{{/if}} + +{{/if}} + +{{#if (sectionEnabled "member_sources_inheritedFrom")}} + +{{#if inheritedFrom}} + +{{titleLevel 4}} Inherited from + +{{#with inheritedFrom}} + +{{{typeAndParent}}} + +{{/with}} + +{{/if}} + +{{/if}} + +{{#if (sectionEnabled "member_sources_overrides")}} + +{{#if overwrites}} + +{{titleLevel 4}} Overrides + +{{#with overwrites}} + +{{typeAndParent}} + +{{/with}} + +{{/if}} + +{{/if}} + +{{#if (sectionEnabled "member_sources_definedIn")}} + +{{#if sources}} + +{{titleLevel 4}} Defined in + +{{#each sources}} + +{{#if url}} + +[{{fileName}}:{{line}}]({{url}}) + +{{else}} + +{{fileName}}:{{line}} + +{{/if}} + +{{/each}} + +{{/if}} + +{{/if}} \ No newline at end of file diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/members.group.hbs b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/members.group.hbs new file mode 100755 index 0000000000000..5e4c2b2ae2909 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/members.group.hbs @@ -0,0 +1,41 @@ +{{#if (sectionEnabled "members_group_categories")}} + +{{#if categories}} + +{{#each categories}} + +{{#unless @first}} +___ +{{/unless}} + +{{#unless (getFormattingOption "expandMembers")}} + +## {{title}} {{../title}} + +{{/unless}} + +{{#each children}} + +{{> member}} + +{{/each}} + +{{/each}} + +{{else}} + +{{#unless (getFormattingOption "expandMembers")}} + +## {{title}} + +{{/unless}} + +{{#each children}} + +{{> member}} + +{{/each}} + +{{/if}} + +{{/if}} \ No newline at end of file diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/members.hbs b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/members.hbs new file mode 100644 index 0000000000000..08f7e8134a8b5 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/members.hbs @@ -0,0 +1,43 @@ +{{#if (sectionEnabled "members_categories")}} + +{{#if categories}} + +{{#each categories}} + +{{#unless allChildrenHaveOwnDocument}} + +{{#unless (getFormattingOption "expandMembers")}} + +## {{title}} + +{{/unless}} + +{{#each children}} + +{{#unless hasOwnDocument}} + +{{> member}} + +{{/unless}} + +{{/each}} + +{{/unless}} + +{{/each}} + +{{else}} + +{{#each groups}} + +{{#unless allChildrenHaveOwnDocument}} + +{{> members.group}} + +{{/unless}} + +{{/each}} + +{{/if}} + +{{/if}} \ No newline at end of file diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/title.hbs b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/title.hbs new file mode 100644 index 0000000000000..2cb892ed06f23 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/partials/title.hbs @@ -0,0 +1,13 @@ +{{#ifShowPageTitle}} + +# {{{reflectionTitle true}}} + +{{/ifShowPageTitle}} + +{{{getFormattingOption "reflectionDescription"}}} + +{{#if (sectionEnabled "title_reflectionPath")}} + +{{{reflectionPath}}} + +{{/if}} \ No newline at end of file diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/templates/index.hbs b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/templates/index.hbs new file mode 100644 index 0000000000000..19a40da27f643 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/templates/index.hbs @@ -0,0 +1,7 @@ +{{> header}} + +{{#with model.readme}} + +{{{comment this}}} + +{{/with}} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/templates/reflection.hbs b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/templates/reflection.hbs new file mode 100755 index 0000000000000..4261c213ed45d --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/templates/reflection.hbs @@ -0,0 +1,127 @@ +{{> header}} + +{{> title}} + +{{#with model}} + +{{#if (sectionEnabled "reflection_comment")}} + +{{#if hasComment}} + +{{> comment}} + +{{/if}} + +{{/if}} + +{{/with}} + +{{#if (sectionEnabled "reflection_typeParameters")}} + +{{#if model.typeParameters}} + +## Type parameters + +{{#with model.typeParameters}} + +{{{typeParameter}}} + +{{/with}} + +{{/if}} + +{{/if}} + +{{#if (sectionEnabled "reflection_hierarchy")}} + +{{#ifShowTypeHierarchy}} + +## Hierarchy + +{{#with model.typeHierarchy}} + +{{{hierarchy 0}}} + +{{/with}} + +{{/ifShowTypeHierarchy}} + +{{/if}} + +{{#if (sectionEnabled "reflection_implements")}} + +{{#if model.implementedTypes}} + +## Implements + +{{#each model.implementedTypes}} +- {{{type}}} +{{/each}} + +{{/if}} + +{{/if}} + +{{#if (sectionEnabled "reflection_implementedBy")}} + +{{#if model.implementedBy}} + +## Implemented by + +{{#each model.implementedBy}} +- {{{type}}} +{{/each}} + +{{/if}} + +{{/if}} + +{{#if (sectionEnabled "reflection_callable")}} + +{{#if model.signatures}} + +## Callable + +{{#with model}} + +{{#each signatures}} + +### {{name}} + +{{> member.signature showSources=true }} + +{{/each}} + +{{/with}} + +{{/if}} + +{{/if}} + +{{#if (sectionEnabled "reflection_indexable")}} + +{{#if model.indexSignature}} + +## Indexable + +{{#with model}} + +{{#with indexSignature}} + +{{{indexSignatureTitle}}} + +{{> comment}} + +{{/with}} + +{{/with}} + +{{/if}} + +{{/if}} + +{{#with model}} + +{{> main}} + +{{/with}} \ No newline at end of file diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/templates/reflection.member.hbs b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/templates/reflection.member.hbs new file mode 100644 index 0000000000000..78129be63b6a5 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/resources/templates/reflection.member.hbs @@ -0,0 +1,9 @@ +{{> header}} + +{{> title}} + +{{#with model}} + +{{> member}} + +{{/with}} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/theme.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/theme.ts new file mode 100644 index 0000000000000..ae69472585392 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/theme.ts @@ -0,0 +1,454 @@ +import * as path from "path" +import { + ContainerReflection, + DeclarationReflection, + PageEvent, + ProjectReflection, + Reflection, + ReflectionGroup, + ReflectionKind, + RenderTemplate, + Renderer, + RendererEvent, + Theme, + UrlMapping, +} from "typedoc" +import { getKindPlural } from "./groups" +import { + indexTemplate, + reflectionMemberTemplate, + reflectionTemplate, + registerHelpers, + registerPartials, +} from "./render-utils" +import { formatContents } from "./utils" +import { + FormattingOptionType, + FormattingOptionsType, + Mapping, + NavigationItem, + ObjectLiteralDeclarationStyle, +} from "./types" + +export class MarkdownTheme extends Theme { + allReflectionsHaveOwnDocument!: boolean + entryDocument: string + entryPoints!: string[] + filenameSeparator!: string + hideBreadcrumbs!: boolean + hideInPageTOC!: boolean + hidePageTitle!: boolean + hideMembersSymbol!: boolean + includes!: string + indexTitle!: string + mediaDirectory!: string + namedAnchors!: boolean + readme!: string + out!: string + publicPath!: string + preserveAnchorCasing!: boolean + objectLiteralTypeDeclarationStyle: ObjectLiteralDeclarationStyle + formattingOptions: FormattingOptionsType + + project?: ProjectReflection + reflection?: DeclarationReflection + location!: string + anchorMap: Record = {} + + static URL_PREFIX = /^(http|ftp)s?:\/\// + + constructor(renderer: Renderer) { + super(renderer) + + // prettier-ignore + this.allReflectionsHaveOwnDocument = this.getOption("allReflectionsHaveOwnDocument") as boolean + this.entryDocument = this.getOption("entryDocument") as string + this.entryPoints = this.getOption("entryPoints") as string[] + this.filenameSeparator = this.getOption("filenameSeparator") as string + this.hideBreadcrumbs = this.getOption("hideBreadcrumbs") as boolean + this.hideInPageTOC = this.getOption("hideInPageTOC") as boolean + this.hidePageTitle = this.getOption("hidePageTitle") as boolean + this.hideMembersSymbol = this.getOption("hideMembersSymbol") as boolean + this.includes = this.getOption("includes") as string + this.indexTitle = this.getOption("indexTitle") as string + this.mediaDirectory = this.getOption("media") as string + this.namedAnchors = this.getOption("namedAnchors") as boolean + this.readme = this.getOption("readme") as string + this.out = this.getOption("out") as string + this.publicPath = this.getOption("publicPath") as string + this.preserveAnchorCasing = this.getOption( + "preserveAnchorCasing" + ) as boolean + this.objectLiteralTypeDeclarationStyle = this.getOption( + "objectLiteralTypeDeclarationStyle" + ) as ObjectLiteralDeclarationStyle + this.formattingOptions = this.getOption( + "formatting" + ) as FormattingOptionsType + + this.listenTo(this.owner, { + [RendererEvent.BEGIN]: this.onBeginRenderer, + [PageEvent.BEGIN]: this.onBeginPage, + }) + + registerPartials() + registerHelpers(this) + } + + render( + page: PageEvent, + template: RenderTemplate> + ): string { + return formatContents(template(page) as string) + } + + getOption(key: string) { + return this.application.options.getValue(key) + } + + getUrls(project: ProjectReflection) { + const urls: UrlMapping[] = [] + const noReadmeFile = this.readme.endsWith("none") + if (noReadmeFile) { + project.url = this.entryDocument + urls.push( + new UrlMapping( + this.entryDocument, + project, + this.getReflectionTemplate() + ) + ) + } else { + project.url = this.globalsFile + urls.push( + new UrlMapping(this.globalsFile, project, this.getReflectionTemplate()) + ) + urls.push( + new UrlMapping(this.entryDocument, project, this.getIndexTemplate()) + ) + } + project.children?.forEach((child: Reflection) => { + if (child instanceof DeclarationReflection) { + this.buildUrls(child as DeclarationReflection, urls) + } + }) + return urls + } + + buildUrls( + reflection: DeclarationReflection, + urls: UrlMapping[] + ): UrlMapping[] { + const mapping = this.mappings.find((mapping) => + reflection.kindOf(mapping.kind) + ) + if (mapping) { + if (!reflection.url || !MarkdownTheme.URL_PREFIX.test(reflection.url)) { + const url = this.toUrl(mapping, reflection) + urls.push(new UrlMapping(url, reflection, mapping.template)) + reflection.url = url + reflection.hasOwnDocument = true + } + + for (const child of reflection.children || []) { + if (mapping.isLeaf) { + this.applyAnchorUrl(child, reflection) + } else { + this.buildUrls(child, urls) + } + } + } else if (reflection.parent) { + this.applyAnchorUrl(reflection, reflection.parent, true) + } + return urls + } + + toUrl(mapping: Mapping, reflection: DeclarationReflection) { + return mapping.directory + "/" + this.getUrl(reflection) + ".md" + } + + getUrl(reflection: Reflection, relative?: Reflection): string { + let url = reflection.getAlias() + + if ( + reflection.parent && + reflection.parent !== relative && + !(reflection.parent instanceof ProjectReflection) + ) { + url = + this.getUrl(reflection.parent, relative) + this.filenameSeparator + url + } + + return url.replace(/^_/, "") + } + + applyAnchorUrl( + reflection: Reflection, + container: Reflection, + isSymbol = false + ) { + if ( + container.url && + (!reflection.url || !MarkdownTheme.URL_PREFIX.test(reflection.url)) + ) { + const reflectionId = this.preserveAnchorCasing + ? reflection.name + : reflection.name.toLowerCase() + + if (isSymbol) { + this.anchorMap[container.url] + ? this.anchorMap[container.url].push(reflectionId) + : (this.anchorMap[container.url] = [reflectionId]) + } + + const count = this.anchorMap[container.url]?.filter( + (id) => id === reflectionId + )?.length + + const anchor = this.toAnchorRef( + reflectionId + (count > 1 ? "-" + (count - 1).toString() : "") + ) + + reflection.url = container.url + "#" + anchor + reflection.anchor = anchor + reflection.hasOwnDocument = false + } + reflection.traverse((child) => { + if (child instanceof DeclarationReflection) { + this.applyAnchorUrl(child, container) + } + }) + } + + toAnchorRef(reflectionId: string) { + return reflectionId + } + + getRelativeUrl(absolute: string) { + if (MarkdownTheme.URL_PREFIX.test(absolute)) { + return absolute + } else { + const relative = path.relative( + path.dirname(this.location), + path.dirname(absolute) + ) + return path.join(relative, path.basename(absolute)).replace(/\\/g, "/") + } + } + + getReflectionTemplate() { + return (pageEvent: PageEvent) => { + return reflectionTemplate(pageEvent, { + allowProtoMethodsByDefault: true, + allowProtoPropertiesByDefault: true, + data: { theme: this }, + }) + } + } + + getReflectionMemberTemplate() { + return (pageEvent: PageEvent) => { + return reflectionMemberTemplate(pageEvent, { + allowProtoMethodsByDefault: true, + allowProtoPropertiesByDefault: true, + data: { theme: this }, + }) + } + } + + getIndexTemplate() { + return (pageEvent: PageEvent) => { + return indexTemplate(pageEvent, { + allowProtoMethodsByDefault: true, + allowProtoPropertiesByDefault: true, + data: { theme: this }, + }) + } + } + + getNavigation(project: ProjectReflection) { + const urls = this.getUrls(project) + + const getUrlMapping = (name: string) => { + if (!name) { + return "" + } + return urls.find((url) => url.model.name === name) + } + + const createNavigationItem = ( + title: string, + url: string | undefined, + isLabel: boolean, + children: NavigationItem[] = [] + ) => { + const navigationItem = new NavigationItem(title, url) + navigationItem.isLabel = isLabel + navigationItem.children = children + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { reflection, parent, ...filteredNavigationItem } = navigationItem + return filteredNavigationItem as NavigationItem + } + const navigation = createNavigationItem(project.name, undefined, false) + const hasReadme = !this.readme.endsWith("none") + if (hasReadme) { + navigation.children?.push( + createNavigationItem("Readme", this.entryDocument, false) + ) + } + if (this.entryPoints.length === 1) { + navigation.children?.push( + createNavigationItem( + "Exports", + hasReadme ? this.globalsFile : this.entryDocument, + false + ) + ) + } + this.mappings.forEach((mapping) => { + const kind = mapping.kind[0] + const items = project.getReflectionsByKind(kind) + if (items.length > 0) { + const children = items + .map((item) => { + const urlMapping = getUrlMapping(item.name) || "" + return createNavigationItem( + item.getFullName(), + typeof urlMapping === "string" ? urlMapping : urlMapping.url, + true + ) + }) + .sort((a, b) => { + return a.title > b.title ? 1 : -1 + }) + const group = createNavigationItem( + getKindPlural(kind), + undefined, + true, + children + ) + navigation.children?.push(group) + } + }) + return navigation + } + + get mappings(): Mapping[] { + return [ + { + kind: [ReflectionKind.Module], + isLeaf: false, + directory: "modules", + template: this.getReflectionTemplate(), + }, + { + kind: [ReflectionKind.Namespace], + isLeaf: false, + directory: "modules", + template: this.getReflectionTemplate(), + }, + { + kind: [ReflectionKind.Enum], + isLeaf: false, + directory: "enums", + template: this.getReflectionTemplate(), + }, + { + kind: [ReflectionKind.Class], + isLeaf: false, + directory: "classes", + template: this.getReflectionTemplate(), + }, + { + kind: [ReflectionKind.Interface], + isLeaf: false, + directory: "interfaces", + template: this.getReflectionTemplate(), + }, + ...(this.allReflectionsHaveOwnDocument + ? [ + { + kind: [ReflectionKind.TypeAlias], + isLeaf: true, + directory: "types", + template: this.getReflectionMemberTemplate(), + }, + { + kind: [ReflectionKind.Variable], + isLeaf: true, + directory: "variables", + template: this.getReflectionMemberTemplate(), + }, + { + kind: [ReflectionKind.Function], + isLeaf: true, + directory: "functions", + template: this.getReflectionMemberTemplate(), + }, + ] + : []), + ] + } + + /** + * Triggered before the renderer starts rendering a project. + * + * @param event An event object describing the current render operation. + */ + protected onBeginRenderer(event: RendererEvent) { + this.project = event.project + } + + /** + * Triggered before a document will be rendered. + * + * @param page An event object describing the current render operation. + */ + protected onBeginPage(page: PageEvent) { + this.location = page.url + this.reflection = + page.model instanceof DeclarationReflection ? page.model : undefined + const options = this.getFormattingOptionsForLocation() + if (this.reflection && this.reflection.groups) { + // filter out unwanted groups + const tempGroups: ReflectionGroup[] = [] + this.reflection.groups.forEach((reflectionGroup) => { + if ( + !options.reflectionGroups || + !(reflectionGroup.title in options.reflectionGroups) || + options.reflectionGroups[reflectionGroup.title] + ) { + tempGroups.push(reflectionGroup) + } + }) + + this.reflection.groups = tempGroups + } + } + + get globalsFile() { + return "modules.md" + } + + getFormattingOptionsForLocation(): FormattingOptionType { + if (!this.location) { + return {} + } + + const optionKey = + Object.keys(this.formattingOptions).find((key) => { + if (key === "*") { + return false + } + + const keyPattern = new RegExp(key) + if (keyPattern.test(this.location)) { + return true + } + }) || "*" + + return optionKey in this.formattingOptions + ? this.formattingOptions[optionKey] + : {} + } +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/types.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/types.ts new file mode 100644 index 0000000000000..21b7c3c26e261 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/types.ts @@ -0,0 +1,143 @@ +import { + ContainerReflection, + DeclarationReflection, + PageEvent, + ParameterReflection, + Reflection, + ReflectionKind, + TypeParameterReflection, +} from "typedoc" + +export type ParameterStyle = "table" | "list" + +export type ReflectionTitleOptions = { + typeParameters?: boolean + kind?: boolean +} + +export type ObjectLiteralDeclarationStyle = "table" | "list" + +export type SectionKey = + | "comment" + | "member_declaration_typeParameters" + | "member_declaration_indexSignature" + | "member_declaration_signatures" + | "member_declaration_typeDeclaration" + | "member_getteSetter_getSignature" + | "member_getteSetter_setSignature" + | "member_signatures" + | "member_getterSetter" + | "member_reference" + | "member_declaration" + | "member_signature_title" + | "member_signature_comment" + | "member_signature_typeParameters" + | "member_signature_parameters" + | "showReturnSignature" + | "member_signature_declarationSignatures" + | "member_signature_declarationChildren" + | "member_signature_comment" + | "member_signature_sources" + | "member_sources_implementationOf" + | "member_sources_inheritedFrom" + | "member_sources_overrides" + | "member_sources_definedIn" + | "members_group_categories" + | "members_categories" + | "title_reflectionPath" + | "reflection_comment" + | "reflection_typeParameters" + | "reflection_hierarchy" + | "reflection_implements" + | "reflection_implementedBy" + | "reflection_callable" + | "reflection_indexable" + +export type FormattingOptionType = { + sections?: { + [k in SectionKey]: boolean + } + reflectionGroups?: { + [k: string]: boolean + } + reflectionTitle?: { + kind: boolean + typeParameters: boolean + suffix?: string + } + reflectionDescription?: string + expandMembers?: boolean + showCommentsAsHeader?: boolean + parameterStyle?: ParameterStyle + showReturnSignature?: boolean +} + +export type FormattingOptionsType = { + [k: string]: FormattingOptionType +} + +export type ReflectionParameterType = + | ParameterReflection + | DeclarationReflection + | TypeParameterReflection + +export type Mapping = { + kind: ReflectionKind[] + isLeaf: boolean + directory: string + template: (pageEvent: PageEvent) => string +} + +export class NavigationItem { + title: string + url: string + dedicatedUrls?: string[] + parent?: NavigationItem + children?: NavigationItem[] + isLabel?: boolean + isVisible?: boolean + isCurrent?: boolean + isModules?: boolean + isInPath?: boolean + reflection?: Reflection + + constructor( + title?: string, + url?: string, + parent?: NavigationItem, + reflection?: Reflection + ) { + this.title = title || "" + this.url = url || "" + this.parent = parent + this.reflection = reflection + + if (!url) { + this.isLabel = true + } + + if (this.parent) { + if (!this.parent.children) { + this.parent.children = [] + } + this.parent.children.push(this) + } + } + + static create( + reflection: Reflection, + parent?: NavigationItem, + useShortNames?: boolean + ) { + let name: string + if (useShortNames || (parent && parent.parent)) { + name = reflection.name + } else { + name = reflection.getFullName() + } + + name = name.trim() + + return new NavigationItem(name, reflection.url, parent, reflection) + } +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/utils.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/utils.ts new file mode 100644 index 0000000000000..b54d3166b78f0 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/utils.ts @@ -0,0 +1,83 @@ +import { + DeclarationReflection, + ParameterReflection, + ProjectReflection, + Reflection, + ReflectionKind, + SignatureReflection, +} from "typedoc" + +export function formatContents(contents: string) { + return ( + contents + .replace(/[\r\n]{3,}/g, "\n\n") + .replace(/!spaces/g, "") + .replace(/^\s+|\s+$/g, "") + "\n" + ) +} + +export function escapeChars(str: string) { + return str + .replace(/>/g, "\\>") + .replace(/_/g, "\\_") + .replace(/`/g, "\\`") + .replace(/\|/g, "\\|") +} + +export function memberSymbol( + reflection: DeclarationReflection | ParameterReflection | SignatureReflection +) { + const isStatic = reflection.flags && reflection.flags.isStatic + + if (reflection.kind === ReflectionKind.CallSignature) { + return "▸" + } + if (reflection.kind === ReflectionKind.TypeAlias) { + return "Ƭ" + } + if (reflection.kind === ReflectionKind.Property && isStatic) { + return "▪" + } + return "•" +} + +export function spaces(length: number) { + return `!spaces${[...Array(length)].map(() => " ").join("")}` +} + +export function stripComments(str: string) { + return str + .replace(/(?:\/\*(?:[\s\S]*?)\*\/)|(?:^\s*\/\/(?:.*)$)/g, " ") + .replace(/\n/g, "") + .replace(/^\s+|\s+$|(\s)+/g, "$1") +} + +export function stripLineBreaks(str: string) { + return str + ? str + .replace(/\n/g, " ") + .replace(/\r/g, " ") + .replace(/\t/g, " ") + .replace(/[\s]{2,}/g, " ") + .trim() + : "" +} + +export function camelToTitleCase(text: string) { + return ( + text.substring(0, 1).toUpperCase() + + text.substring(1).replace(/[a-z][A-Z]/g, (x) => `${x[0]} ${x[1]}`) + ) +} + +export function getDisplayName(refl: Reflection): string { + let version = "" + if ( + (refl instanceof DeclarationReflection || + refl instanceof ProjectReflection) && + refl.packageVersion + ) { + version = ` - v${refl.packageVersion}` + } + return `${refl.name}${version}` +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/utils/front-matter.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/utils/front-matter.ts new file mode 100644 index 0000000000000..46f00c488018b --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/utils/front-matter.ts @@ -0,0 +1,46 @@ +import * as Handlebars from "handlebars" +import { PageEvent } from "typedoc/dist/lib/output/events" + +export interface FrontMatterVars { + [key: string]: string | number | boolean +} + +/** + * Prepends YAML block to a string + * @param contents - the string to prepend + * @param vars - object of required front matter variables + */ +export const prependYAML = (contents: string, vars: FrontMatterVars) => { + return contents + .replace(/^/, toYAML(vars) + "\n\n") + .replace(/[\r\n]{3,}/g, "\n\n") +} + +/** + * Returns the page title as rendered in the document h1(# title) + * @param page + */ +export const getPageTitle = (page: PageEvent) => { + return Handlebars.helpers.reflectionTitle.call(page, false) +} + +/** + * Converts YAML object to a YAML string + * @param vars + */ +const toYAML = (vars: FrontMatterVars) => { + const yaml = `--- +${Object.entries(vars) + .map( + ([key, value]) => + `${key}: ${ + typeof value === "string" ? `"${escapeString(value)}"` : value + }` + ) + .join("\n")} +---` + return yaml +} + +// prettier-ignore +const escapeString = (str: string) => str.replace(/"/g, "\\\"") diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/utils/params-utils.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/utils/params-utils.ts new file mode 100644 index 0000000000000..b7195806faa51 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/utils/params-utils.ts @@ -0,0 +1,36 @@ +import { ReflectionKind } from "typedoc" +import { ReflectionParameterType } from "../types" + +export function flattenParams( + current: ReflectionParameterType +): ReflectionParameterType[] { + if (!current.type || !("declaration" in current.type)) { + return [] + } + return ( + current.type?.declaration?.children?.reduce( + (acc: ReflectionParameterType[], child: ReflectionParameterType) => { + const childObj = { + ...child, + name: `${current.name}.${child.name}`, + } as ReflectionParameterType + return parseParams(childObj, acc) + }, + [] + ) || [] + ) +} + +export function parseParams( + current: ReflectionParameterType, + acc: ReflectionParameterType[] +): ReflectionParameterType[] { + const shouldFlatten = + current.type && + "declaration" in current.type && + current.type?.declaration?.kind === ReflectionKind.TypeLiteral && + current.type?.declaration?.children + return shouldFlatten + ? [...acc, current, ...flattenParams(current)] + : [...acc, current] +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/src/utils/reflection-formatter.ts b/docs-util/packages/typedoc-plugin-markdown-medusa/src/utils/reflection-formatter.ts new file mode 100644 index 0000000000000..e1f3a17011e9f --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/src/utils/reflection-formatter.ts @@ -0,0 +1,70 @@ +import { Comment, DeclarationReflection, ReflectionType } from "typedoc" +import * as Handlebars from "handlebars" +import { stripLineBreaks } from "../utils" +import { ReflectionParameterType } from "../types" + +const MAX_LEVEL = 3 + +export default function reflectionFomatter( + reflection: ReflectionParameterType, + level = 1 +) { + const prefix = `${Array(level - 1) + .fill("\t") + .join("")}-` + let item = `${prefix} \`${reflection.name}\`: ` + const defaultValue = getDefaultValue(reflection) + + if (defaultValue || reflection.flags.isOptional) { + item += `(${reflection.flags.isOptional ? "optional" : ""}${ + reflection.flags.isOptional && defaultValue ? "," : "" + }${defaultValue ? `default: ${defaultValue}` : ""}) ` + } + + const comments = getComments(reflection) + + if (comments) { + item += stripLineBreaks(Handlebars.helpers.comments(comments)) + const itemChildren: string[] = [] + comments.summary.forEach((commentSummary) => { + if ("target" in commentSummary) { + const reflection = commentSummary.target as DeclarationReflection + if (reflection.children && level + 1 < MAX_LEVEL) { + reflection.children.forEach((childItem) => { + itemChildren.push(reflectionFomatter(childItem, level + 1)) + }) + } + } + }) + if (itemChildren.length) { + // TODO maybe we should check the type of the reflection and replace + // `properties` with the text that makes sense for the type. + item += ` It accepts the following properties:\n${itemChildren.join( + "\n" + )}` + } + } + + return item +} + +function getDefaultValue(parameter: ReflectionParameterType): string | null { + if (!("defaultValue" in parameter)) { + return null + } + return parameter.defaultValue && parameter.defaultValue !== "..." + ? `\`${parameter.defaultValue}\`` + : null +} + +function getComments(parameter: ReflectionParameterType): Comment | undefined { + if (parameter.type instanceof ReflectionType) { + if ( + parameter.type?.declaration?.signatures && + parameter.type?.declaration?.signatures[0]?.comment + ) { + return parameter.type?.declaration?.signatures[0]?.comment + } + } + return parameter.comment +} diff --git a/docs-util/packages/typedoc-plugin-markdown-medusa/tsconfig.json b/docs-util/packages/typedoc-plugin-markdown-medusa/tsconfig.json new file mode 100644 index 0000000000000..0e440b40139fb --- /dev/null +++ b/docs-util/packages/typedoc-plugin-markdown-medusa/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig", + "compilerOptions": { + "outDir": "./dist" + }, + "include": ["src"] +} \ No newline at end of file diff --git a/docs-util/packages/typedoc-plugin-modules/.gitignore b/docs-util/packages/typedoc-plugin-modules/.gitignore new file mode 100644 index 0000000000000..13b6b556eb3fa --- /dev/null +++ b/docs-util/packages/typedoc-plugin-modules/.gitignore @@ -0,0 +1,2 @@ +dist +.yarn \ No newline at end of file diff --git a/docs-util/packages/typedoc-plugin-modules/README.md b/docs-util/packages/typedoc-plugin-modules/README.md new file mode 100644 index 0000000000000..b70e65dacbf4a --- /dev/null +++ b/docs-util/packages/typedoc-plugin-modules/README.md @@ -0,0 +1,15 @@ +# typedoc-plugin-modules + +A Typedoc plugin that includes helper plugins for documenting modules. The `resolve-reference-plugin` imitates the [`typedoc-plugin-missing-exports`](https://www.npmjs.com/package/typedoc-plugin-missing-exports) plugin. + +## Configurations + +Accepts the same options as the [`typedoc-plugin-missing-exports`](https://www.npmjs.com/package/typedoc-plugin-missing-exports) plugin. + +## Build the Plugin + +Before using any command that makes use of this plugin, make sure to run the `build` command: + +```bash +yarn build +``` diff --git a/docs-util/packages/typedoc-plugin-modules/package.json b/docs-util/packages/typedoc-plugin-modules/package.json new file mode 100644 index 0000000000000..3c1d2dfffc3cf --- /dev/null +++ b/docs-util/packages/typedoc-plugin-modules/package.json @@ -0,0 +1,38 @@ +{ + "name": "typedoc-plugin-modules", + "private": true, + "version": "0.0.0", + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "description": "A plugin that holds all necessary changes to generate a module reference", + "main": "./dist/index.js", + "exports": "./dist/index.js", + "files": [ + "dist" + ], + "author": "Shahed Nasser", + "scripts": { + "build": "tsc", + "watch": "tsc --watch", + "lint": "eslint --ext .ts src" + }, + "peerDependencies": { + "typedoc": "0.25.x" + }, + "devDependencies": { + "@types/node": "^16.11.10", + "typescript": "^4.6" + }, + "keywords": [ + "typedocplugin", + "packages", + "monorepo", + "typedoc" + ], + "dependencies": { + "glob": "^10.3.10", + "typedoc-plugin-markdown": "^3.16.0" + } +} diff --git a/docs-util/packages/typedoc-plugin-modules/src/index.ts b/docs-util/packages/typedoc-plugin-modules/src/index.ts new file mode 100644 index 0000000000000..805bbf705fb66 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-modules/src/index.ts @@ -0,0 +1,6 @@ +import { Application } from "typedoc" +import { load as resolveReferencesPluginLoad } from "./resolve-references-plugin" + +export function load(app: Application) { + resolveReferencesPluginLoad(app) +} diff --git a/docs-util/packages/typedoc-plugin-modules/src/resolve-references-plugin.ts b/docs-util/packages/typedoc-plugin-modules/src/resolve-references-plugin.ts new file mode 100644 index 0000000000000..65cd945e4d7b4 --- /dev/null +++ b/docs-util/packages/typedoc-plugin-modules/src/resolve-references-plugin.ts @@ -0,0 +1,184 @@ +import { ok } from "assert" +import { + Application, + Context, + Converter, + ReflectionKind, + TypeScript as ts, + ReferenceType, + Reflection, + DeclarationReflection, + ProjectReflection, +} from "typedoc" + +declare module "typedoc" { + export interface TypeDocOptionMap { + internalModule: string + } +} + +let hasMonkeyPatched = false + +export function load(app: Application) { + if (hasMonkeyPatched) { + throw new Error( + "typedoc-plugin-missing-exports cannot be loaded multiple times" + ) + } + hasMonkeyPatched = true + + let activeReflection: Reflection | undefined + const referencedSymbols = new Map>() + const symbolToActiveRefl = new Map() + const knownPrograms = new Map() + + function discoverMissingExports( + context: Context, + program: ts.Program + ): Set { + // An export is missing if if was referenced + // Is not contained in the documented + // And is "owned" by the active reflection + const referenced = referencedSymbols.get(program) || new Set() + const ownedByOther = new Set() + referencedSymbols.set(program, ownedByOther) + + for (const s of [...referenced]) { + if (context.project.getReflectionFromSymbol(s)) { + referenced.delete(s) + } else if (symbolToActiveRefl.get(s) !== activeReflection) { + referenced.delete(s) + ownedByOther.add(s) + } + } + + return referenced + } + + // Monkey patch the constructor for references so that we can get every + const origCreateSymbolReference = ReferenceType.createSymbolReference + ReferenceType.createSymbolReference = function (symbol, context, name) { + ok(activeReflection, "active reflection has not been set") + const set = referencedSymbols.get(context.program) + symbolToActiveRefl.set(symbol, activeReflection) + if (set) { + set.add(symbol) + } else { + referencedSymbols.set(context.program, new Set([symbol])) + } + return origCreateSymbolReference.call(this, symbol, context, name) + } + + app.options.addDeclaration({ + name: "internalModule", + help: "Define the name of the module that internal symbols which are not exported should be placed into.", + }) + + app.converter.on( + Converter.EVENT_CREATE_DECLARATION, + (context: Context, refl: Reflection) => { + if (refl.kindOf(ReflectionKind.Project | ReflectionKind.Module)) { + knownPrograms.set(refl, context.program) + activeReflection = refl + } + } + ) + + app.converter.on( + Converter.EVENT_RESOLVE_BEGIN, + function onResolveBegin(context: Context) { + const modules: (DeclarationReflection | ProjectReflection)[] = + context.project.getChildrenByKind(ReflectionKind.Module) + if (modules.length === 0) { + // Single entry point, just target the project. + modules.push(context.project) + } + + for (const mod of modules) { + activeReflection = mod + + const program = knownPrograms.get(mod) + if (!program) { + continue + } + let missing = discoverMissingExports(context, program) + if (!missing || !missing.size) { + continue + } + + // Nasty hack here that will almost certainly break in future TypeDoc versions. + context.setActiveProgram(program) + + const internalModuleOption = + context.converter.application.options.getValue("internalModule") + + let internalNs: DeclarationReflection | undefined = undefined + if (internalModuleOption) { + internalNs = context + .withScope(mod) + .createDeclarationReflection( + ReflectionKind.Module, + void 0, + void 0, + context.converter.application.options.getValue("internalModule") + ) + context.finalizeDeclarationReflection(internalNs) + } + + const internalContext = context.withScope(internalNs || mod) + + // Keep track of which symbols we've tried to convert. If they don't get converted + // when calling convertSymbol, then the user has excluded them somehow, don't go into + // an infinite loop when converting. + const tried = new Set() + + do { + for (const s of missing) { + if (shouldConvertSymbol(s, context.checker)) { + internalContext.converter.convertSymbol(internalContext, s) + } + tried.add(s) + } + + missing = discoverMissingExports(context, program) + for (const s of tried) { + missing.delete(s) + } + } while (missing.size > 0) + + // All the missing symbols were excluded, so get rid of our namespace. + if (internalNs && !internalNs.children?.length) { + context.project.removeReflection(internalNs) + } + + context.setActiveProgram(void 0) + } + + knownPrograms.clear() + referencedSymbols.clear() + symbolToActiveRefl.clear() + }, + void 0, + 1e9 + ) +} +function shouldConvertSymbol(symbol: ts.Symbol, checker: ts.TypeChecker) { + while (symbol.flags & ts.SymbolFlags.Alias) { + symbol = checker.getAliasedSymbol(symbol) + } + + // We're looking at an unknown symbol which is declared in some package without + // type declarations. We know nothing about it, so don't convert it. + if (symbol.flags & ts.SymbolFlags.Transient) { + return false + } + + // This is something inside the special Node `Globals` interface. Don't convert it + // because TypeDoc will reasonably assert that "Property" means that a symbol should be + // inside something that can have properties. + if (symbol.flags & ts.SymbolFlags.Property && symbol.name !== "default") { + return false + } + + return true +} diff --git a/docs-util/packages/typedoc-plugin-modules/tsconfig.json b/docs-util/packages/typedoc-plugin-modules/tsconfig.json new file mode 100644 index 0000000000000..0e440b40139fb --- /dev/null +++ b/docs-util/packages/typedoc-plugin-modules/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig", + "compilerOptions": { + "outDir": "./dist" + }, + "include": ["src"] +} \ No newline at end of file diff --git a/docs-util/typedoc-plugins/typedoc-frontmatter-plugin/tsconfig.json b/docs-util/tsconfig.json similarity index 51% rename from docs-util/typedoc-plugins/typedoc-frontmatter-plugin/tsconfig.json rename to docs-util/tsconfig.json index 55f28c371469c..f5a61fc9f7e44 100644 --- a/docs-util/typedoc-plugins/typedoc-frontmatter-plugin/tsconfig.json +++ b/docs-util/tsconfig.json @@ -1,13 +1,17 @@ { "compilerOptions": { - "target": "es2018", + "target": "es2021", "module": "commonjs", "outDir": "./dist", "isolatedModules": true, "esModuleInterop": true, "forceConsistentCasingInFileNames": true, "strict": true, - "sourceMap": true + "sourceMap": true, + "skipLibCheck": true, + "rootDir": ".", + "allowJs": true }, - "include": ["src"] + "include": ["**/*.ts", "**/*.js"], + "exclude": ["**/node_modules/**", "dist"] } \ No newline at end of file diff --git a/docs-util/turbo.json b/docs-util/turbo.json new file mode 100644 index 0000000000000..f8333380e80a6 --- /dev/null +++ b/docs-util/turbo.json @@ -0,0 +1,12 @@ +{ + "$schema": "https://turbo.build/schema.json", + "pipeline": { + "build": { + "outputs": [ + "dist/**" + ] + }, + "lint": { }, + "watch": { } + } +} \ No newline at end of file diff --git a/docs-util/typedoc-plugins/typedoc-frontmatter-plugin/src/index.ts b/docs-util/typedoc-plugins/typedoc-frontmatter-plugin/src/index.ts deleted file mode 100644 index 9edf89e24fa99..0000000000000 --- a/docs-util/typedoc-plugins/typedoc-frontmatter-plugin/src/index.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { Application, PageEvent, ParameterType } from "typedoc"; - -export function load(app: Application) { - app.options.addDeclaration({ - name: "frontmatterData", - help: "An object of key-value pairs to be added to frontmatter", - type: ParameterType.Mixed, // The default - defaultValue: {}, - validate: (value: any) => { - if (typeof value === 'string') { - //decode it with JSON to check if it's an object - value = JSON.parse(value); - } - - if (!(typeof value === 'object' && - !Array.isArray(value) && - value !== null)) { - throw new Error("Value should be an object") - } - } - }); - - app.options.addDeclaration({ - name: "pagesPattern", - help: "A string of pages pattern. The pattern will be tested using RegExp to determine whether the frontmatterData will be added or not.", - type: ParameterType.String, - defaultValue: "" - }) - - app.renderer.on(PageEvent.END, (page: PageEvent) => { - const patternStr: String | any = app.options.getValue("pagesPattern") - const pattern: RegExp = new RegExp(patternStr) - let frontmatterData: Object | any = app.options.getValue("frontmatterData") - if (typeof frontmatterData === 'string') { - frontmatterData = JSON.parse(frontmatterData); - } - const frontmatterDataEntries = Object.entries(frontmatterData) - - if (!frontmatterDataEntries.length || !pattern.test(page.filename)) { - return; - } - - let frontmatterStr = `---\n` - - for(const [key, value] of frontmatterDataEntries) { - frontmatterStr += `${key}: ${value}\n` - } - - frontmatterStr += `---\n\n` - - page.contents = frontmatterStr + page.contents - }); -} \ No newline at end of file diff --git a/docs-util/typedoc-plugins/typedoc-frontmatter-plugin/yarn.lock b/docs-util/typedoc-plugins/typedoc-frontmatter-plugin/yarn.lock deleted file mode 100644 index 548bed689308d..0000000000000 --- a/docs-util/typedoc-plugins/typedoc-frontmatter-plugin/yarn.lock +++ /dev/null @@ -1,188 +0,0 @@ -# This file is generated by running "yarn install" inside your project. -# Manual changes might be lost - proceed with caution! - -__metadata: - version: 6 - cacheKey: 8c0 - -"@types/node@npm:^16.11.10": - version: 16.11.39 - resolution: "@types/node@npm:16.11.39" - checksum: 28fe6cb1f048d97c524c980131d7b534e0363c124e289c70acb04a89700b58e0a1cbeeecbf3fa505aaed6a2ee98f4cc1d1025baee55f8f2f530732a9f6a87f0b - languageName: node - linkType: hard - -"balanced-match@npm:^1.0.0": - version: 1.0.2 - resolution: "balanced-match@npm:1.0.2" - checksum: 9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee - languageName: node - linkType: hard - -"brace-expansion@npm:^2.0.1": - version: 2.0.1 - resolution: "brace-expansion@npm:2.0.1" - dependencies: - balanced-match: ^1.0.0 - checksum: b358f2fe060e2d7a87aa015979ecea07f3c37d4018f8d6deb5bd4c229ad3a0384fe6029bb76cd8be63c81e516ee52d1a0673edbe2023d53a5191732ae3c3e49f - languageName: node - linkType: hard - -"fs.realpath@npm:^1.0.0": - version: 1.0.0 - resolution: "fs.realpath@npm:1.0.0" - checksum: 444cf1291d997165dfd4c0d58b69f0e4782bfd9149fd72faa4fe299e68e0e93d6db941660b37dd29153bf7186672ececa3b50b7e7249477b03fdf850f287c948 - languageName: node - linkType: hard - -"glob@npm:^8.0.3": - version: 8.0.3 - resolution: "glob@npm:8.0.3" - dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^5.0.1 - once: ^1.3.0 - checksum: 07ebaf2ed83e76b10901ec4982040ebd85458b787b4386f751a0514f6c8e416ed6c9eec5a892571eb0ef00b09d1bd451f72b5d9fb7b63770efd400532486e731 - languageName: node - linkType: hard - -"inflight@npm:^1.0.4": - version: 1.0.6 - resolution: "inflight@npm:1.0.6" - dependencies: - once: ^1.3.0 - wrappy: 1 - checksum: 7faca22584600a9dc5b9fca2cd5feb7135ac8c935449837b315676b4c90aa4f391ec4f42240178244b5a34e8bede1948627fda392ca3191522fc46b34e985ab2 - languageName: node - linkType: hard - -"inherits@npm:2": - version: 2.0.4 - resolution: "inherits@npm:2.0.4" - checksum: 4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 - languageName: node - linkType: hard - -"jsonc-parser@npm:^3.0.0": - version: 3.0.0 - resolution: "jsonc-parser@npm:3.0.0" - checksum: 373632ab71f773ce6081dd70297c40fbb05aacde07ab8a5852c78c0a13d1fadb7ad886202e87bfc0168dd78568cda2d4eb36e785dac330f93e5e772d7a67f33f - languageName: node - linkType: hard - -"lunr@npm:^2.3.9": - version: 2.3.9 - resolution: "lunr@npm:2.3.9" - checksum: 77d7dbb4fbd602aac161e2b50887d8eda28c0fa3b799159cee380fbb311f1e614219126ecbbd2c3a9c685f1720a8109b3c1ca85cc893c39b6c9cc6a62a1d8a8b - languageName: node - linkType: hard - -"marked@npm:^4.0.16": - version: 4.0.16 - resolution: "marked@npm:4.0.16" - bin: - marked: bin/marked.js - checksum: 01960a496bbd1139d4097e5eae7bb4791063c959ca5267b9307a79812d68f96f2bcb4151f9886afe6d90296bd33250b5cb5e5984197242ce3bf121ed5d2fd3c2 - languageName: node - linkType: hard - -"minimatch@npm:^5.0.1, minimatch@npm:^5.1.0": - version: 5.1.0 - resolution: "minimatch@npm:5.1.0" - dependencies: - brace-expansion: ^2.0.1 - checksum: 21c4877438068da0728eeb678107ea716fd3c76fcde713c9d11b01d7d15c276071aa2fecfcd353b970a290cffd572c3ed43e0a64804470ab9ae97717ed13fb18 - languageName: node - linkType: hard - -"once@npm:^1.3.0": - version: 1.4.0 - resolution: "once@npm:1.4.0" - dependencies: - wrappy: 1 - checksum: 5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0 - languageName: node - linkType: hard - -"shiki@npm:^0.10.1": - version: 0.10.1 - resolution: "shiki@npm:0.10.1" - dependencies: - jsonc-parser: ^3.0.0 - vscode-oniguruma: ^1.6.1 - vscode-textmate: 5.2.0 - checksum: cc4db3462722261cb9ce0f7c0dbe278af3b99ad57dfab77b80c4dc9c8e3198f1d3f3c3433044a731c16f7afede9e60747f8a62290fbbaa18c26026f7b94cde8b - languageName: node - linkType: hard - -"typedoc-frontmatter-plugin@workspace:.": - version: 0.0.0-use.local - resolution: "typedoc-frontmatter-plugin@workspace:." - dependencies: - "@types/node": ^16.11.10 - typedoc: ^0.22.10 - typescript: 4.5.2 - peerDependencies: - typedoc: 0.22.x - languageName: unknown - linkType: soft - -"typedoc@npm:^0.22.10": - version: 0.22.17 - resolution: "typedoc@npm:0.22.17" - dependencies: - glob: ^8.0.3 - lunr: ^2.3.9 - marked: ^4.0.16 - minimatch: ^5.1.0 - shiki: ^0.10.1 - peerDependencies: - typescript: 4.0.x || 4.1.x || 4.2.x || 4.3.x || 4.4.x || 4.5.x || 4.6.x || 4.7.x - bin: - typedoc: bin/typedoc - checksum: d2e41b0fa51ce85b90d0c1eed43e90b62c2aa66124f8d62076780b3fa6c2ef2e790b9b5ad4b7809c67b16167ae505560e20b34499cc42bd62a0beac0e007c344 - languageName: node - linkType: hard - -"typescript@npm:4.5.2": - version: 4.5.2 - resolution: "typescript@npm:4.5.2" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 8fc40b886018889ad2099cb1b477c4f0373528c9fca83860ad33e898fe19ada22568477aca91741fbeabf0402e203f0e2d6d14ed6973ad826893cc13b2dfd459 - languageName: node - linkType: hard - -"typescript@patch:typescript@4.5.2#~builtin": - version: 4.5.2 - resolution: "typescript@patch:typescript@npm%3A4.5.2#~builtin::version=4.5.2&hash=7ad353" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 90eaf5227b6a755da1a77665b24b958a8bc79b12b435c4254255ceada6ac6eb7905678b37c23c4f63a298b7ed6bee8fc87df78b98d0b0e7f0e30e873334121fd - languageName: node - linkType: hard - -"vscode-oniguruma@npm:^1.6.1": - version: 1.6.2 - resolution: "vscode-oniguruma@npm:1.6.2" - checksum: ae77849f3bbff10c339212fde72a567298d1fc196bff07f1e71391c8d87bf282edfe4017c34d8c652d8b8ff3f9ee7db3eca4bb21f6a9314fa54ae9fa07aab362 - languageName: node - linkType: hard - -"vscode-textmate@npm:5.2.0": - version: 5.2.0 - resolution: "vscode-textmate@npm:5.2.0" - checksum: 87c4786606cf7a49d78b690b37236f919db594ff81f1a405f9d9a0a9ee66ff3450fe51c0d8731f270268f7be550adffb6711a4bbc6f56d76b71abe41949817c7 - languageName: node - linkType: hard - -"wrappy@npm:1": - version: 1.0.2 - resolution: "wrappy@npm:1.0.2" - checksum: 56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0 - languageName: node - linkType: hard diff --git a/docs-util/yarn.lock b/docs-util/yarn.lock new file mode 100644 index 0000000000000..aeb7d7f1abc30 --- /dev/null +++ b/docs-util/yarn.lock @@ -0,0 +1,2697 @@ +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 6 + cacheKey: 8c0 + +"@aashutoshrathi/word-wrap@npm:^1.2.3": + version: 1.2.6 + resolution: "@aashutoshrathi/word-wrap@npm:1.2.6" + checksum: 53c2b231a61a46792b39a0d43bc4f4f776bb4542aa57ee04930676802e5501282c2fc8aac14e4cd1f1120ff8b52616b6ff5ab539ad30aa2277d726444b71619f + languageName: node + linkType: hard + +"@babel/eslint-parser@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/eslint-parser@npm:7.22.15" + dependencies: + "@nicolo-ribaudo/eslint-scope-5-internals": 5.1.1-v1 + eslint-visitor-keys: ^2.1.0 + semver: ^6.3.1 + peerDependencies: + "@babel/core": ^7.11.0 + eslint: ^7.5.0 || ^8.0.0 + checksum: 309052677a8d0b01b6633e656ded931646f6e63e6afb44d6739f347bbf5015da0a16390e0126473bd7b5dd23c9d81f83eda266d1af5bf5e1b606795d6bcc8c0b + languageName: node + linkType: hard + +"@cspotcode/source-map-support@npm:^0.8.0": + version: 0.8.1 + resolution: "@cspotcode/source-map-support@npm:0.8.1" + dependencies: + "@jridgewell/trace-mapping": 0.3.9 + checksum: 05c5368c13b662ee4c122c7bfbe5dc0b613416672a829f3e78bc49a357a197e0218d6e74e7c66cfcd04e15a179acab080bd3c69658c9fbefd0e1ccd950a07fc6 + languageName: node + linkType: hard + +"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": + version: 4.4.0 + resolution: "@eslint-community/eslint-utils@npm:4.4.0" + dependencies: + eslint-visitor-keys: ^3.3.0 + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: 7e559c4ce59cd3a06b1b5a517b593912e680a7f981ae7affab0d01d709e99cd5647019be8fafa38c350305bc32f1f7d42c7073edde2ab536c745e365f37b607e + languageName: node + linkType: hard + +"@eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": + version: 4.9.1 + resolution: "@eslint-community/regexpp@npm:4.9.1" + checksum: d0e1bd1a37cb2cb6bbac88dfe97b62b412d4b6ea3a4bb1c4e1e503be03125063db5d80999cef9728f57b19b49979aa902ac68182bcf5f80dfce6fa9a9d34eee1 + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^2.1.2": + version: 2.1.2 + resolution: "@eslint/eslintrc@npm:2.1.2" + dependencies: + ajv: ^6.12.4 + debug: ^4.3.2 + espree: ^9.6.0 + globals: ^13.19.0 + ignore: ^5.2.0 + import-fresh: ^3.2.1 + js-yaml: ^4.1.0 + minimatch: ^3.1.2 + strip-json-comments: ^3.1.1 + checksum: 00efdc3797e6f05518060522b7788e5f5aff02f13facbd0c83b176c3dee86554023283a5f68542df379c5137685d2d29745c87f62bf2406a1d38d95471f44ce6 + languageName: node + linkType: hard + +"@eslint/js@npm:8.50.0": + version: 8.50.0 + resolution: "@eslint/js@npm:8.50.0" + checksum: 92cb0a823869e85f287bd172f14a6a20d7d65c3f4db886a0356a9efebfe8fe519e9ead84a5687bd18f45eca417bdcce96e3b83fe3feae8baf0f8f44d14073bae + languageName: node + linkType: hard + +"@graphql-typed-document-node/core@npm:^3.1.0": + version: 3.2.0 + resolution: "@graphql-typed-document-node/core@npm:3.2.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 94e9d75c1f178bbae8d874f5a9361708a3350c8def7eaeb6920f2c820e82403b7d4f55b3735856d68e145e86c85cbfe2adc444fdc25519cd51f108697e99346c + languageName: node + linkType: hard + +"@humanwhocodes/config-array@npm:^0.11.11": + version: 0.11.11 + resolution: "@humanwhocodes/config-array@npm:0.11.11" + dependencies: + "@humanwhocodes/object-schema": ^1.2.1 + debug: ^4.1.1 + minimatch: ^3.0.5 + checksum: 4195f68e485f7d1a7c95cf0f126cc41f7223eeda2f1b46b893123c99b35bb76145c37d25e2ba452d54815ed69bb656c0ce9e343ffa984470c08afa6e82a4713f + languageName: node + linkType: hard + +"@humanwhocodes/module-importer@npm:^1.0.1": + version: 1.0.1 + resolution: "@humanwhocodes/module-importer@npm:1.0.1" + checksum: 909b69c3b86d482c26b3359db16e46a32e0fb30bd306a3c176b8313b9e7313dba0f37f519de6aa8b0a1921349e505f259d19475e123182416a506d7f87e7f529 + languageName: node + linkType: hard + +"@humanwhocodes/object-schema@npm:^1.2.1": + version: 1.2.1 + resolution: "@humanwhocodes/object-schema@npm:1.2.1" + checksum: c3c35fdb70c04a569278351c75553e293ae339684ed75895edc79facc7276e351115786946658d78133130c0cca80e57e2203bc07f8fa7fe7980300e8deef7db + languageName: node + linkType: hard + +"@isaacs/cliui@npm:^8.0.2": + version: 8.0.2 + resolution: "@isaacs/cliui@npm:8.0.2" + dependencies: + string-width: ^5.1.2 + string-width-cjs: "npm:string-width@^4.2.0" + strip-ansi: ^7.0.1 + strip-ansi-cjs: "npm:strip-ansi@^6.0.1" + wrap-ansi: ^8.1.0 + wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" + checksum: b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e + languageName: node + linkType: hard + +"@jridgewell/resolve-uri@npm:^3.0.3": + version: 3.1.1 + resolution: "@jridgewell/resolve-uri@npm:3.1.1" + checksum: 0dbc9e29bc640bbbdc5b9876d2859c69042bfcf1423c1e6421bcca53e826660bff4e41c7d4bcb8dbea696404231a6f902f76ba41835d049e20f2dd6cffb713bf + languageName: node + linkType: hard + +"@jridgewell/sourcemap-codec@npm:^1.4.10": + version: 1.4.15 + resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" + checksum: 0c6b5ae663087558039052a626d2d7ed5208da36cfd707dcc5cea4a07cfc918248403dcb5989a8f7afaf245ce0573b7cc6fd94c4a30453bd10e44d9363940ba5 + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:0.3.9": + version: 0.3.9 + resolution: "@jridgewell/trace-mapping@npm:0.3.9" + dependencies: + "@jridgewell/resolve-uri": ^3.0.3 + "@jridgewell/sourcemap-codec": ^1.4.10 + checksum: fa425b606d7c7ee5bfa6a31a7b050dd5814b4082f318e0e4190f991902181b4330f43f4805db1dd4f2433fd0ed9cc7a7b9c2683f1deeab1df1b0a98b1e24055b + languageName: node + linkType: hard + +"@linear/sdk@npm:^1.22.0": + version: 1.22.0 + resolution: "@linear/sdk@npm:1.22.0" + dependencies: + "@graphql-typed-document-node/core": ^3.1.0 + graphql: ^15.4.0 + isomorphic-unfetch: ^3.1.0 + checksum: 7e8f24f617631d027fd606334a498b04014d4c33603bcb3e08073d14f86260d116597983567f8bc147a935e4557180158175b52b9a9a8a270a234b946894a82b + languageName: node + linkType: hard + +"@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1": + version: 5.1.1-v1 + resolution: "@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1" + dependencies: + eslint-scope: 5.1.1 + checksum: 75dda3e623b8ad7369ca22552d6beee337a814b2d0e8a32d23edd13fcb65c8082b32c5d86e436f3860dd7ade30d91d5db55d4ef9a08fb5a976c718ecc0d88a74 + languageName: node + linkType: hard + +"@nodelib/fs.scandir@npm:2.1.5": + version: 2.1.5 + resolution: "@nodelib/fs.scandir@npm:2.1.5" + dependencies: + "@nodelib/fs.stat": 2.0.5 + run-parallel: ^1.1.9 + checksum: 732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb + languageName: node + linkType: hard + +"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.5 + resolution: "@nodelib/fs.stat@npm:2.0.5" + checksum: 88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d + languageName: node + linkType: hard + +"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": + version: 1.2.8 + resolution: "@nodelib/fs.walk@npm:1.2.8" + dependencies: + "@nodelib/fs.scandir": 2.1.5 + fastq: ^1.6.0 + checksum: db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 + languageName: node + linkType: hard + +"@octokit/auth-token@npm:^3.0.0": + version: 3.0.4 + resolution: "@octokit/auth-token@npm:3.0.4" + checksum: abdf5e2da36344de9727c70ba782d58004f5ae1da0f65fa9bc9216af596ef23c0e4675f386df2f6886806612558091d603564051b693b0ad1986aa6160b7a231 + languageName: node + linkType: hard + +"@octokit/core@npm:^4.0.5": + version: 4.2.4 + resolution: "@octokit/core@npm:4.2.4" + dependencies: + "@octokit/auth-token": ^3.0.0 + "@octokit/graphql": ^5.0.0 + "@octokit/request": ^6.0.0 + "@octokit/request-error": ^3.0.0 + "@octokit/types": ^9.0.0 + before-after-hook: ^2.2.0 + universal-user-agent: ^6.0.0 + checksum: e54081a56884e628d1804837fddcd48c10d516117bb891551c8dc9d8e3dad449aeb9b4677ca71e8f0e76268c2b7656c953099506679aaa4666765228474a3ce6 + languageName: node + linkType: hard + +"@octokit/endpoint@npm:^7.0.0": + version: 7.0.6 + resolution: "@octokit/endpoint@npm:7.0.6" + dependencies: + "@octokit/types": ^9.0.0 + is-plain-object: ^5.0.0 + universal-user-agent: ^6.0.0 + checksum: fd147a55010b54af7567bf90791359f7096a1c9916a2b7c72f8afd0c53141338b3d78da3a4ab3e3bdfeb26218a1b73735432d8987ccc04996b1019219299f115 + languageName: node + linkType: hard + +"@octokit/graphql@npm:^5.0.0": + version: 5.0.6 + resolution: "@octokit/graphql@npm:5.0.6" + dependencies: + "@octokit/request": ^6.0.0 + "@octokit/types": ^9.0.0 + universal-user-agent: ^6.0.0 + checksum: de1d839d97fe6d96179925f6714bf96e7af6f77929892596bb4211adab14add3291fc5872b269a3d0e91a4dcf248d16096c82606c4a43538cf241b815c2e2a36 + languageName: node + linkType: hard + +"@octokit/openapi-types@npm:^18.0.0": + version: 18.1.1 + resolution: "@octokit/openapi-types@npm:18.1.1" + checksum: 856d3bb9f8c666e837dd5e8b8c216ee4342b9ed63ff8da922ca4ce5883ed1dfbec73390eb13d69fbcb4703a4c8b8b6a586df3b0e675ff93bf3d46b5b4fe0968e + languageName: node + linkType: hard + +"@octokit/request-error@npm:^3.0.0": + version: 3.0.3 + resolution: "@octokit/request-error@npm:3.0.3" + dependencies: + "@octokit/types": ^9.0.0 + deprecation: ^2.0.0 + once: ^1.4.0 + checksum: 1e252ac193c8af23b709909911aa327ed5372cbafcba09e4aff41e0f640a7c152579ab0a60311a92e37b4e7936392d59ee4c2feae5cdc387ee8587a33d8afa60 + languageName: node + linkType: hard + +"@octokit/request@npm:^6.0.0": + version: 6.2.8 + resolution: "@octokit/request@npm:6.2.8" + dependencies: + "@octokit/endpoint": ^7.0.0 + "@octokit/request-error": ^3.0.0 + "@octokit/types": ^9.0.0 + is-plain-object: ^5.0.0 + node-fetch: ^2.6.7 + universal-user-agent: ^6.0.0 + checksum: 6b6079ed45bac44c4579b40990bfd1905b03d4bc4e5255f3d5a10cf5182171578ebe19abeab32ebb11a806f1131947f2a06b7a077bd7e77ade7b15fe2882174b + languageName: node + linkType: hard + +"@octokit/types@npm:^9.0.0": + version: 9.3.2 + resolution: "@octokit/types@npm:9.3.2" + dependencies: + "@octokit/openapi-types": ^18.0.0 + checksum: 2925479aa378a4491762b4fcf381bdc7daca39b4e0b2dd7062bce5d74a32ed7d79d20d3c65ceaca6d105cf4b1f7417fea634219bf90f79a57d03e2dac629ec45 + languageName: node + linkType: hard + +"@pkgjs/parseargs@npm:^0.11.0": + version: 0.11.0 + resolution: "@pkgjs/parseargs@npm:0.11.0" + checksum: 5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd + languageName: node + linkType: hard + +"@pkgr/utils@npm:^2.3.1": + version: 2.4.2 + resolution: "@pkgr/utils@npm:2.4.2" + dependencies: + cross-spawn: ^7.0.3 + fast-glob: ^3.3.0 + is-glob: ^4.0.3 + open: ^9.1.0 + picocolors: ^1.0.0 + tslib: ^2.6.0 + checksum: 7c3e68f6405a1d4c51f418d8d580e71d7bade2683d5db07e8413d8e57f7e389047eda44a2341f77a1b3085895fca7676a9d45e8812a58312524f8c4c65d501be + languageName: node + linkType: hard + +"@tsconfig/node10@npm:^1.0.7": + version: 1.0.9 + resolution: "@tsconfig/node10@npm:1.0.9" + checksum: c176a2c1e1b16be120c328300ea910df15fb9a5277010116d26818272341a11483c5a80059389d04edacf6fd2d03d4687ad3660870fdd1cc0b7109e160adb220 + languageName: node + linkType: hard + +"@tsconfig/node12@npm:^1.0.7": + version: 1.0.11 + resolution: "@tsconfig/node12@npm:1.0.11" + checksum: dddca2b553e2bee1308a056705103fc8304e42bb2d2cbd797b84403a223b25c78f2c683ec3e24a095e82cd435387c877239bffcb15a590ba817cd3f6b9a99fd9 + languageName: node + linkType: hard + +"@tsconfig/node14@npm:^1.0.0": + version: 1.0.3 + resolution: "@tsconfig/node14@npm:1.0.3" + checksum: 67c1316d065fdaa32525bc9449ff82c197c4c19092b9663b23213c8cbbf8d88b6ed6a17898e0cbc2711950fbfaf40388938c1c748a2ee89f7234fc9e7fe2bf44 + languageName: node + linkType: hard + +"@tsconfig/node16@npm:^1.0.2": + version: 1.0.4 + resolution: "@tsconfig/node16@npm:1.0.4" + checksum: 05f8f2734e266fb1839eb1d57290df1664fe2aa3b0fdd685a9035806daa635f7519bf6d5d9b33f6e69dd545b8c46bd6e2b5c79acb2b1f146e885f7f11a42a5bb + languageName: node + linkType: hard + +"@types/json-schema@npm:^7.0.12": + version: 7.0.13 + resolution: "@types/json-schema@npm:7.0.13" + checksum: 446fe6722899333ff647b5853fdcc9f039156d56abe517166154d3578d641841cc869f61e8b7822c24a1daeb7dfbd4fdcea84bf07c0858e2f9cca415e2ca8dd4 + languageName: node + linkType: hard + +"@types/node@npm:^16.11.10": + version: 16.18.57 + resolution: "@types/node@npm:16.18.57" + checksum: 191cfb12fde8c882f1d982a07302f7b87cda7b93ec227b0607f908f3b3b11c5ff96bbed613f370818ea60a8a98140962b193324bdadff679bd5ca75d04407e60 + languageName: node + linkType: hard + +"@types/semver@npm:^7.5.0": + version: 7.5.3 + resolution: "@types/semver@npm:7.5.3" + checksum: 1dedcf5f50a5a345e817fdf1273a14d0c57de80eb1d47bf3f17563062be53a2c99b78755a8c88c794a03757f9cd05da61b2849bf109e1b71e30fca895529c2b0 + languageName: node + linkType: hard + +"@typescript-eslint/eslint-plugin@npm:^6.7.4": + version: 6.7.4 + resolution: "@typescript-eslint/eslint-plugin@npm:6.7.4" + dependencies: + "@eslint-community/regexpp": ^4.5.1 + "@typescript-eslint/scope-manager": 6.7.4 + "@typescript-eslint/type-utils": 6.7.4 + "@typescript-eslint/utils": 6.7.4 + "@typescript-eslint/visitor-keys": 6.7.4 + debug: ^4.3.4 + graphemer: ^1.4.0 + ignore: ^5.2.4 + natural-compare: ^1.4.0 + semver: ^7.5.4 + ts-api-utils: ^1.0.1 + peerDependencies: + "@typescript-eslint/parser": ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 1ef850f1152dbeb69a2ed1d9331908bb708d4edf33c16d94e7290e402943619224658a8db2b253e7ccfa94e6c1605fe564a8352c20c0a4ac7add293b951c42ef + languageName: node + linkType: hard + +"@typescript-eslint/parser@npm:^6.7.4": + version: 6.7.4 + resolution: "@typescript-eslint/parser@npm:6.7.4" + dependencies: + "@typescript-eslint/scope-manager": 6.7.4 + "@typescript-eslint/types": 6.7.4 + "@typescript-eslint/typescript-estree": 6.7.4 + "@typescript-eslint/visitor-keys": 6.7.4 + debug: ^4.3.4 + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 73240665a1fbb2a5ba5ee512b3832d74d6fe6893389da0da8a0e1ef5eb92b4551961090eb931af8fc1e75b15703b5446146ab43535ef1eb6fb20c5c67d7d6268 + languageName: node + linkType: hard + +"@typescript-eslint/scope-manager@npm:6.7.4": + version: 6.7.4 + resolution: "@typescript-eslint/scope-manager@npm:6.7.4" + dependencies: + "@typescript-eslint/types": 6.7.4 + "@typescript-eslint/visitor-keys": 6.7.4 + checksum: 596bf8b1f1a1c1e2c5317f4247014f3d58daceaab975d5038a4ca89a56df25e633d678ae341da73ce707829df53258de0ad0ec8c1a0f443869317c546e596d1b + languageName: node + linkType: hard + +"@typescript-eslint/type-utils@npm:6.7.4": + version: 6.7.4 + resolution: "@typescript-eslint/type-utils@npm:6.7.4" + dependencies: + "@typescript-eslint/typescript-estree": 6.7.4 + "@typescript-eslint/utils": 6.7.4 + debug: ^4.3.4 + ts-api-utils: ^1.0.1 + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: d4c984793bba543041c67c119fd7eeb34c68e159a0672bb97269f39515b7708b8628cb5a14a4d3c64669e876bcb1a1c0a76ee3d3b9b8a3d042e954fbe2daa4de + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:6.7.4": + version: 6.7.4 + resolution: "@typescript-eslint/types@npm:6.7.4" + checksum: 2f17463ffb64c72aedf3c95fdc45e2e2bb6f275c66daa7f9832b7bef7440cc1c0cfa6cd3db4dda3ee079e02a9cafac43d999b121e7b1ffc4f485e9e98304c23d + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:6.7.4": + version: 6.7.4 + resolution: "@typescript-eslint/typescript-estree@npm:6.7.4" + dependencies: + "@typescript-eslint/types": 6.7.4 + "@typescript-eslint/visitor-keys": 6.7.4 + debug: ^4.3.4 + globby: ^11.1.0 + is-glob: ^4.0.3 + semver: ^7.5.4 + ts-api-utils: ^1.0.1 + peerDependenciesMeta: + typescript: + optional: true + checksum: eb3e9d45b7aa4717e100bba658d05111883ca7d47d310b6d12b15bec525ff593c30f25e83533fd3c335daecf70954e65a0fa14a7b785c03663a004736b181fd2 + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:6.7.4": + version: 6.7.4 + resolution: "@typescript-eslint/utils@npm:6.7.4" + dependencies: + "@eslint-community/eslint-utils": ^4.4.0 + "@types/json-schema": ^7.0.12 + "@types/semver": ^7.5.0 + "@typescript-eslint/scope-manager": 6.7.4 + "@typescript-eslint/types": 6.7.4 + "@typescript-eslint/typescript-estree": 6.7.4 + semver: ^7.5.4 + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + checksum: deb086b6cc54c10d0950229c796e80c5f6869298ab64735b27ff461f46fabb7eba642e9de167b7f5d3ae5b6ba37c319913c206d413d89fd0dd331e203c957568 + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:6.7.4": + version: 6.7.4 + resolution: "@typescript-eslint/visitor-keys@npm:6.7.4" + dependencies: + "@typescript-eslint/types": 6.7.4 + eslint-visitor-keys: ^3.4.1 + checksum: b927bb767906a0c93cc42c03d1b7b42043660f932992dd28275796d8fe8105b36903cc60ea1acf9f4fda3acb8f5b16e2323b877bae41e228c01b363a1698049e + languageName: node + linkType: hard + +"acorn-jsx@npm:^5.3.2": + version: 5.3.2 + resolution: "acorn-jsx@npm:5.3.2" + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1 + languageName: node + linkType: hard + +"acorn-walk@npm:^8.1.1": + version: 8.2.0 + resolution: "acorn-walk@npm:8.2.0" + checksum: dbe92f5b2452c93e960c5594e666dd1fae141b965ff2cb4a1e1d0381e3e4db4274c5ce4ffa3d681a86ca2a8d4e29d5efc0670a08e23fd2800051ea387df56ca2 + languageName: node + linkType: hard + +"acorn@npm:^8.4.1, acorn@npm:^8.9.0": + version: 8.10.0 + resolution: "acorn@npm:8.10.0" + bin: + acorn: bin/acorn + checksum: deaeebfbea6e40f6c0e1070e9b0e16e76ba484de54cbd735914d1d41d19169a450de8630b7a3a0c4e271a3b0c0b075a3427ad1a40d8a69f8747c0e8cb02ee3e2 + languageName: node + linkType: hard + +"ajv@npm:^6.12.4": + version: 6.12.6 + resolution: "ajv@npm:6.12.6" + dependencies: + fast-deep-equal: ^3.1.1 + fast-json-stable-stringify: ^2.0.0 + json-schema-traverse: ^0.4.1 + uri-js: ^4.2.2 + checksum: 41e23642cbe545889245b9d2a45854ebba51cda6c778ebced9649420d9205f2efb39cb43dbc41e358409223b1ea43303ae4839db682c848b891e4811da1a5a71 + languageName: node + linkType: hard + +"ansi-regex@npm:^5.0.1": + version: 5.0.1 + resolution: "ansi-regex@npm:5.0.1" + checksum: 9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 + languageName: node + linkType: hard + +"ansi-regex@npm:^6.0.1": + version: 6.0.1 + resolution: "ansi-regex@npm:6.0.1" + checksum: cbe16dbd2c6b2735d1df7976a7070dd277326434f0212f43abf6d87674095d247968209babdaad31bb00882fa68807256ba9be340eec2f1004de14ca75f52a08 + languageName: node + linkType: hard + +"ansi-sequence-parser@npm:^1.1.0": + version: 1.1.1 + resolution: "ansi-sequence-parser@npm:1.1.1" + checksum: ab2259ccf69f145ecf1418d4e71524158828f44afdf37c7536677871f4cebaa8b176fcb95de8f94a68129357dddc59586597da25f9d4ebf9968f6ef022bf0b31 + languageName: node + linkType: hard + +"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": + version: 4.3.0 + resolution: "ansi-styles@npm:4.3.0" + dependencies: + color-convert: ^2.0.1 + checksum: 895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041 + languageName: node + linkType: hard + +"ansi-styles@npm:^6.1.0": + version: 6.2.1 + resolution: "ansi-styles@npm:6.2.1" + checksum: 5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c + languageName: node + linkType: hard + +"arg@npm:^4.1.0": + version: 4.1.3 + resolution: "arg@npm:4.1.3" + checksum: 070ff801a9d236a6caa647507bdcc7034530604844d64408149a26b9e87c2f97650055c0f049abd1efc024b334635c01f29e0b632b371ac3f26130f4cf65997a + languageName: node + linkType: hard + +"argparse@npm:^2.0.1": + version: 2.0.1 + resolution: "argparse@npm:2.0.1" + checksum: c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e + languageName: node + linkType: hard + +"array-union@npm:^2.1.0": + version: 2.1.0 + resolution: "array-union@npm:2.1.0" + checksum: 429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962 + languageName: node + linkType: hard + +"balanced-match@npm:^1.0.0": + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee + languageName: node + linkType: hard + +"before-after-hook@npm:^2.2.0": + version: 2.2.3 + resolution: "before-after-hook@npm:2.2.3" + checksum: 0488c4ae12df758ca9d49b3bb27b47fd559677965c52cae7b335784724fb8bf96c42b6e5ba7d7afcbc31facb0e294c3ef717cc41c5bc2f7bd9e76f8b90acd31c + languageName: node + linkType: hard + +"big-integer@npm:^1.6.44": + version: 1.6.51 + resolution: "big-integer@npm:1.6.51" + checksum: c8139662d57f8833a44802f4b65be911679c569535ea73c5cfd3c1c8994eaead1b84b6f63e1db63833e4d4cacb6b6a9e5522178113dfdc8e4c81ed8436f1e8cc + languageName: node + linkType: hard + +"bplist-parser@npm:^0.2.0": + version: 0.2.0 + resolution: "bplist-parser@npm:0.2.0" + dependencies: + big-integer: ^1.6.44 + checksum: ce79c69e0f6efe506281e7c84e3712f7d12978991675b6e3a58a295b16f13ca81aa9b845c335614a545e0af728c8311b6aa3142af76ba1cb616af9bbac5c4a9f + languageName: node + linkType: hard + +"brace-expansion@npm:^1.1.7": + version: 1.1.11 + resolution: "brace-expansion@npm:1.1.11" + dependencies: + balanced-match: ^1.0.0 + concat-map: 0.0.1 + checksum: 695a56cd058096a7cb71fb09d9d6a7070113c7be516699ed361317aca2ec169f618e28b8af352e02ab4233fb54eb0168460a40dc320bab0034b36ab59aaad668 + languageName: node + linkType: hard + +"brace-expansion@npm:^2.0.1": + version: 2.0.1 + resolution: "brace-expansion@npm:2.0.1" + dependencies: + balanced-match: ^1.0.0 + checksum: b358f2fe060e2d7a87aa015979ecea07f3c37d4018f8d6deb5bd4c229ad3a0384fe6029bb76cd8be63c81e516ee52d1a0673edbe2023d53a5191732ae3c3e49f + languageName: node + linkType: hard + +"braces@npm:^3.0.2": + version: 3.0.2 + resolution: "braces@npm:3.0.2" + dependencies: + fill-range: ^7.0.1 + checksum: 321b4d675791479293264019156ca322163f02dc06e3c4cab33bb15cd43d80b51efef69b0930cfde3acd63d126ebca24cd0544fa6f261e093a0fb41ab9dda381 + languageName: node + linkType: hard + +"bundle-name@npm:^3.0.0": + version: 3.0.0 + resolution: "bundle-name@npm:3.0.0" + dependencies: + run-applescript: ^5.0.0 + checksum: 57bc7f8b025d83961b04db2f1eff6a87f2363c2891f3542a4b82471ff8ebb5d484af48e9784fcdb28ef1d48bb01f03d891966dc3ef58758e46ea32d750ce40f8 + languageName: node + linkType: hard + +"callsites@npm:^3.0.0": + version: 3.1.0 + resolution: "callsites@npm:3.1.0" + checksum: fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 + languageName: node + linkType: hard + +"chalk@npm:^4.0.0": + version: 4.1.2 + resolution: "chalk@npm:4.1.2" + dependencies: + ansi-styles: ^4.1.0 + supports-color: ^7.1.0 + checksum: 4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 + languageName: node + linkType: hard + +"cliui@npm:^7.0.2": + version: 7.0.4 + resolution: "cliui@npm:7.0.4" + dependencies: + string-width: ^4.2.0 + strip-ansi: ^6.0.0 + wrap-ansi: ^7.0.0 + checksum: 6035f5daf7383470cef82b3d3db00bec70afb3423538c50394386ffbbab135e26c3689c41791f911fa71b62d13d3863c712fdd70f0fbdffd938a1e6fd09aac00 + languageName: node + linkType: hard + +"color-convert@npm:^2.0.1": + version: 2.0.1 + resolution: "color-convert@npm:2.0.1" + dependencies: + color-name: ~1.1.4 + checksum: 37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7 + languageName: node + linkType: hard + +"color-name@npm:~1.1.4": + version: 1.1.4 + resolution: "color-name@npm:1.1.4" + checksum: a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 + languageName: node + linkType: hard + +"concat-map@npm:0.0.1": + version: 0.0.1 + resolution: "concat-map@npm:0.0.1" + checksum: c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f + languageName: node + linkType: hard + +"copyfiles@npm:^2.4.1": + version: 2.4.1 + resolution: "copyfiles@npm:2.4.1" + dependencies: + glob: ^7.0.5 + minimatch: ^3.0.3 + mkdirp: ^1.0.4 + noms: 0.0.0 + through2: ^2.0.1 + untildify: ^4.0.0 + yargs: ^16.1.0 + bin: + copyfiles: copyfiles + copyup: copyfiles + checksum: e65cd055ec9acc14997b0ace83973d73f8d9c68167cbf4293c40b52d100af09a8c8da329042d52dc33422c0a8cbf74c6efb25e9ae088667721653659bd67bf57 + languageName: node + linkType: hard + +"core-util-is@npm:~1.0.0": + version: 1.0.3 + resolution: "core-util-is@npm:1.0.3" + checksum: 90a0e40abbddfd7618f8ccd63a74d88deea94e77d0e8dbbea059fa7ebebb8fbb4e2909667fe26f3a467073de1a542ebe6ae4c73a73745ac5833786759cd906c9 + languageName: node + linkType: hard + +"create-require@npm:^1.1.0": + version: 1.1.1 + resolution: "create-require@npm:1.1.1" + checksum: 157cbc59b2430ae9a90034a5f3a1b398b6738bf510f713edc4d4e45e169bc514d3d99dd34d8d01ca7ae7830b5b8b537e46ae8f3c8f932371b0875c0151d7ec91 + languageName: node + linkType: hard + +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": + version: 7.0.3 + resolution: "cross-spawn@npm:7.0.3" + dependencies: + path-key: ^3.1.0 + shebang-command: ^2.0.0 + which: ^2.0.1 + checksum: 5738c312387081c98d69c98e105b6327b069197f864a60593245d64c8089c8a0a744e16349281210d56835bb9274130d825a78b2ad6853ca13cfbeffc0c31750 + languageName: node + linkType: hard + +"debug@npm:^4.1.1, debug@npm:^4.3.2, debug@npm:^4.3.4": + version: 4.3.4 + resolution: "debug@npm:4.3.4" + dependencies: + ms: 2.1.2 + peerDependenciesMeta: + supports-color: + optional: true + checksum: cedbec45298dd5c501d01b92b119cd3faebe5438c3917ff11ae1bff86a6c722930ac9c8659792824013168ba6db7c4668225d845c633fbdafbbf902a6389f736 + languageName: node + linkType: hard + +"deep-is@npm:^0.1.3": + version: 0.1.4 + resolution: "deep-is@npm:0.1.4" + checksum: 7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c + languageName: node + linkType: hard + +"default-browser-id@npm:^3.0.0": + version: 3.0.0 + resolution: "default-browser-id@npm:3.0.0" + dependencies: + bplist-parser: ^0.2.0 + untildify: ^4.0.0 + checksum: 8db3ab882eb3e1e8b59d84c8641320e6c66d8eeb17eb4bb848b7dd549b1e6fd313988e4a13542e95fbaeff03f6e9dedc5ad191ad4df7996187753eb0d45c00b7 + languageName: node + linkType: hard + +"default-browser@npm:^4.0.0": + version: 4.0.0 + resolution: "default-browser@npm:4.0.0" + dependencies: + bundle-name: ^3.0.0 + default-browser-id: ^3.0.0 + execa: ^7.1.1 + titleize: ^3.0.0 + checksum: 7c8848badc139ecf9d878e562bc4e7ab4301e51ba120b24d8dcb14739c30152115cc612065ac3ab73c02aace4afa29db5a044257b2f0cf234f16e3a58f6c925e + languageName: node + linkType: hard + +"define-lazy-prop@npm:^3.0.0": + version: 3.0.0 + resolution: "define-lazy-prop@npm:3.0.0" + checksum: 5ab0b2bf3fa58b3a443140bbd4cd3db1f91b985cc8a246d330b9ac3fc0b6a325a6d82bddc0b055123d745b3f9931afeea74a5ec545439a1630b9c8512b0eeb49 + languageName: node + linkType: hard + +"deprecation@npm:^2.0.0": + version: 2.3.1 + resolution: "deprecation@npm:2.3.1" + checksum: 23d688ba66b74d09b908c40a76179418acbeeb0bfdf218c8075c58ad8d0c315130cb91aa3dffb623aa3a411a3569ce56c6460de6c8d69071c17fe6dd2442f032 + languageName: node + linkType: hard + +"diff@npm:^4.0.1": + version: 4.0.2 + resolution: "diff@npm:4.0.2" + checksum: 81b91f9d39c4eaca068eb0c1eb0e4afbdc5bb2941d197f513dd596b820b956fef43485876226d65d497bebc15666aa2aa82c679e84f65d5f2bfbf14ee46e32c1 + languageName: node + linkType: hard + +"dir-glob@npm:^3.0.1": + version: 3.0.1 + resolution: "dir-glob@npm:3.0.1" + dependencies: + path-type: ^4.0.0 + checksum: dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c + languageName: node + linkType: hard + +"docs-util@workspace:.": + version: 0.0.0-use.local + resolution: "docs-util@workspace:." + dependencies: + "@babel/eslint-parser": ^7.22.15 + "@typescript-eslint/eslint-plugin": ^6.7.4 + "@typescript-eslint/parser": ^6.7.4 + eslint: ^8.36.0 + eslint-config-prettier: ^9.0.0 + eslint-plugin-prettier: ^5.0.0 + prettier: ^3.0.3 + turbo: latest + languageName: unknown + linkType: soft + +"doctrine@npm:^3.0.0": + version: 3.0.0 + resolution: "doctrine@npm:3.0.0" + dependencies: + esutils: ^2.0.2 + checksum: c96bdccabe9d62ab6fea9399fdff04a66e6563c1d6fb3a3a063e8d53c3bb136ba63e84250bbf63d00086a769ad53aef92d2bd483f03f837fc97b71cbee6b2520 + languageName: node + linkType: hard + +"eastasianwidth@npm:^0.2.0": + version: 0.2.0 + resolution: "eastasianwidth@npm:0.2.0" + checksum: 26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 + languageName: node + linkType: hard + +"emoji-regex@npm:^8.0.0": + version: 8.0.0 + resolution: "emoji-regex@npm:8.0.0" + checksum: b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 + languageName: node + linkType: hard + +"emoji-regex@npm:^9.2.2": + version: 9.2.2 + resolution: "emoji-regex@npm:9.2.2" + checksum: af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 + languageName: node + linkType: hard + +"escalade@npm:^3.1.1": + version: 3.1.1 + resolution: "escalade@npm:3.1.1" + checksum: afd02e6ca91ffa813e1108b5e7756566173d6bc0d1eb951cb44d6b21702ec17c1cf116cfe75d4a2b02e05acb0b808a7a9387d0d1ca5cf9c04ad03a8445c3e46d + languageName: node + linkType: hard + +"escape-string-regexp@npm:^4.0.0": + version: 4.0.0 + resolution: "escape-string-regexp@npm:4.0.0" + checksum: 9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9 + languageName: node + linkType: hard + +"eslint-config-prettier@npm:^9.0.0": + version: 9.0.0 + resolution: "eslint-config-prettier@npm:9.0.0" + peerDependencies: + eslint: ">=7.0.0" + bin: + eslint-config-prettier: bin/cli.js + checksum: bc1f661915845c631824178942e5d02f858fe6d0ea796f0050d63e0f681927b92696e81139dd04714c08c3e7de580fd079c66162e40070155ba79eaee78ab5d0 + languageName: node + linkType: hard + +"eslint-plugin-prettier@npm:^5.0.0": + version: 5.0.0 + resolution: "eslint-plugin-prettier@npm:5.0.0" + dependencies: + prettier-linter-helpers: ^1.0.0 + synckit: ^0.8.5 + peerDependencies: + "@types/eslint": ">=8.0.0" + eslint: ">=8.0.0" + prettier: ">=3.0.0" + peerDependenciesMeta: + "@types/eslint": + optional: true + eslint-config-prettier: + optional: true + checksum: 7a3641196fc7305c11ed53faae4b69e82bd1d58ba3894d1ac77d68af7ea91c9e2b1fd50e2645f5dc2831bbcb866bb3897a0710c955c0a7fc9918ef4fb7687b97 + languageName: node + linkType: hard + +"eslint-scope@npm:5.1.1": + version: 5.1.1 + resolution: "eslint-scope@npm:5.1.1" + dependencies: + esrecurse: ^4.3.0 + estraverse: ^4.1.1 + checksum: d30ef9dc1c1cbdece34db1539a4933fe3f9b14e1ffb27ecc85987902ee663ad7c9473bbd49a9a03195a373741e62e2f807c4938992e019b511993d163450e70a + languageName: node + linkType: hard + +"eslint-scope@npm:^7.2.2": + version: 7.2.2 + resolution: "eslint-scope@npm:7.2.2" + dependencies: + esrecurse: ^4.3.0 + estraverse: ^5.2.0 + checksum: 613c267aea34b5a6d6c00514e8545ef1f1433108097e857225fed40d397dd6b1809dffd11c2fde23b37ca53d7bf935fe04d2a18e6fc932b31837b6ad67e1c116 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^2.1.0": + version: 2.1.0 + resolution: "eslint-visitor-keys@npm:2.1.0" + checksum: 9f0e3a2db751d84067d15977ac4b4472efd6b303e369e6ff241a99feac04da758f46d5add022c33d06b53596038dbae4b4aceb27c7e68b8dfc1055b35e495787 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": + version: 3.4.3 + resolution: "eslint-visitor-keys@npm:3.4.3" + checksum: 92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 + languageName: node + linkType: hard + +"eslint@npm:^8.36.0": + version: 8.50.0 + resolution: "eslint@npm:8.50.0" + dependencies: + "@eslint-community/eslint-utils": ^4.2.0 + "@eslint-community/regexpp": ^4.6.1 + "@eslint/eslintrc": ^2.1.2 + "@eslint/js": 8.50.0 + "@humanwhocodes/config-array": ^0.11.11 + "@humanwhocodes/module-importer": ^1.0.1 + "@nodelib/fs.walk": ^1.2.8 + ajv: ^6.12.4 + chalk: ^4.0.0 + cross-spawn: ^7.0.2 + debug: ^4.3.2 + doctrine: ^3.0.0 + escape-string-regexp: ^4.0.0 + eslint-scope: ^7.2.2 + eslint-visitor-keys: ^3.4.3 + espree: ^9.6.1 + esquery: ^1.4.2 + esutils: ^2.0.2 + fast-deep-equal: ^3.1.3 + file-entry-cache: ^6.0.1 + find-up: ^5.0.0 + glob-parent: ^6.0.2 + globals: ^13.19.0 + graphemer: ^1.4.0 + ignore: ^5.2.0 + imurmurhash: ^0.1.4 + is-glob: ^4.0.0 + is-path-inside: ^3.0.3 + js-yaml: ^4.1.0 + json-stable-stringify-without-jsonify: ^1.0.1 + levn: ^0.4.1 + lodash.merge: ^4.6.2 + minimatch: ^3.1.2 + natural-compare: ^1.4.0 + optionator: ^0.9.3 + strip-ansi: ^6.0.1 + text-table: ^0.2.0 + bin: + eslint: bin/eslint.js + checksum: 91629528cb240bc61b25480574d35cd54ed444cb61a70fa76f7d5ab26af2b637b94bf8fba94403c9052c1baa944a169b6ab9cc8070496e925f7eeef730ff9038 + languageName: node + linkType: hard + +"espree@npm:^9.6.0, espree@npm:^9.6.1": + version: 9.6.1 + resolution: "espree@npm:9.6.1" + dependencies: + acorn: ^8.9.0 + acorn-jsx: ^5.3.2 + eslint-visitor-keys: ^3.4.1 + checksum: 1a2e9b4699b715347f62330bcc76aee224390c28bb02b31a3752e9d07549c473f5f986720483c6469cf3cfb3c9d05df612ffc69eb1ee94b54b739e67de9bb460 + languageName: node + linkType: hard + +"esquery@npm:^1.4.2": + version: 1.5.0 + resolution: "esquery@npm:1.5.0" + dependencies: + estraverse: ^5.1.0 + checksum: a084bd049d954cc88ac69df30534043fb2aee5555b56246493f42f27d1e168f00d9e5d4192e46f10290d312dc30dc7d58994d61a609c579c1219d636996f9213 + languageName: node + linkType: hard + +"esrecurse@npm:^4.3.0": + version: 4.3.0 + resolution: "esrecurse@npm:4.3.0" + dependencies: + estraverse: ^5.2.0 + checksum: 81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5 + languageName: node + linkType: hard + +"estraverse@npm:^4.1.1": + version: 4.3.0 + resolution: "estraverse@npm:4.3.0" + checksum: 9cb46463ef8a8a4905d3708a652d60122a0c20bb58dec7e0e12ab0e7235123d74214fc0141d743c381813e1b992767e2708194f6f6e0f9fd00c1b4e0887b8b6d + languageName: node + linkType: hard + +"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": + version: 5.3.0 + resolution: "estraverse@npm:5.3.0" + checksum: 1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 + languageName: node + linkType: hard + +"esutils@npm:^2.0.2": + version: 2.0.3 + resolution: "esutils@npm:2.0.3" + checksum: 9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7 + languageName: node + linkType: hard + +"execa@npm:^5.0.0": + version: 5.1.1 + resolution: "execa@npm:5.1.1" + dependencies: + cross-spawn: ^7.0.3 + get-stream: ^6.0.0 + human-signals: ^2.1.0 + is-stream: ^2.0.0 + merge-stream: ^2.0.0 + npm-run-path: ^4.0.1 + onetime: ^5.1.2 + signal-exit: ^3.0.3 + strip-final-newline: ^2.0.0 + checksum: c8e615235e8de4c5addf2fa4c3da3e3aa59ce975a3e83533b4f6a71750fb816a2e79610dc5f1799b6e28976c9ae86747a36a606655bf8cb414a74d8d507b304f + languageName: node + linkType: hard + +"execa@npm:^7.1.1": + version: 7.2.0 + resolution: "execa@npm:7.2.0" + dependencies: + cross-spawn: ^7.0.3 + get-stream: ^6.0.1 + human-signals: ^4.3.0 + is-stream: ^3.0.0 + merge-stream: ^2.0.0 + npm-run-path: ^5.1.0 + onetime: ^6.0.0 + signal-exit: ^3.0.7 + strip-final-newline: ^3.0.0 + checksum: 098cd6a1bc26d509e5402c43f4971736450b84d058391820c6f237aeec6436963e006fd8423c9722f148c53da86aa50045929c7278b5522197dff802d10f9885 + languageName: node + linkType: hard + +"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": + version: 3.1.3 + resolution: "fast-deep-equal@npm:3.1.3" + checksum: 40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0 + languageName: node + linkType: hard + +"fast-diff@npm:^1.1.2": + version: 1.3.0 + resolution: "fast-diff@npm:1.3.0" + checksum: 5c19af237edb5d5effda008c891a18a585f74bf12953be57923f17a3a4d0979565fc64dbc73b9e20926b9d895f5b690c618cbb969af0cf022e3222471220ad29 + languageName: node + linkType: hard + +"fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0": + version: 3.3.1 + resolution: "fast-glob@npm:3.3.1" + dependencies: + "@nodelib/fs.stat": ^2.0.2 + "@nodelib/fs.walk": ^1.2.3 + glob-parent: ^5.1.2 + merge2: ^1.3.0 + micromatch: ^4.0.4 + checksum: b68431128fb6ce4b804c5f9622628426d990b66c75b21c0d16e3d80e2d1398bf33f7e1724e66a2e3f299285dcf5b8d745b122d0304e7dd66f5231081f33ec67c + languageName: node + linkType: hard + +"fast-json-stable-stringify@npm:^2.0.0": + version: 2.1.0 + resolution: "fast-json-stable-stringify@npm:2.1.0" + checksum: 7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b + languageName: node + linkType: hard + +"fast-levenshtein@npm:^2.0.6": + version: 2.0.6 + resolution: "fast-levenshtein@npm:2.0.6" + checksum: 111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4 + languageName: node + linkType: hard + +"fastq@npm:^1.6.0": + version: 1.15.0 + resolution: "fastq@npm:1.15.0" + dependencies: + reusify: ^1.0.4 + checksum: 5ce4f83afa5f88c9379e67906b4d31bc7694a30826d6cc8d0f0473c966929017fda65c2174b0ec89f064ede6ace6c67f8a4fe04cef42119b6a55b0d465554c24 + languageName: node + linkType: hard + +"file-entry-cache@npm:^6.0.1": + version: 6.0.1 + resolution: "file-entry-cache@npm:6.0.1" + dependencies: + flat-cache: ^3.0.4 + checksum: 58473e8a82794d01b38e5e435f6feaf648e3f36fdb3a56e98f417f4efae71ad1c0d4ebd8a9a7c50c3ad085820a93fc7494ad721e0e4ebc1da3573f4e1c3c7cdd + languageName: node + linkType: hard + +"fill-range@npm:^7.0.1": + version: 7.0.1 + resolution: "fill-range@npm:7.0.1" + dependencies: + to-regex-range: ^5.0.1 + checksum: 7cdad7d426ffbaadf45aeb5d15ec675bbd77f7597ad5399e3d2766987ed20bda24d5fac64b3ee79d93276f5865608bb22344a26b9b1ae6c4d00bd94bf611623f + languageName: node + linkType: hard + +"find-up@npm:^5.0.0": + version: 5.0.0 + resolution: "find-up@npm:5.0.0" + dependencies: + locate-path: ^6.0.0 + path-exists: ^4.0.0 + checksum: 062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a + languageName: node + linkType: hard + +"flat-cache@npm:^3.0.4": + version: 3.1.0 + resolution: "flat-cache@npm:3.1.0" + dependencies: + flatted: ^3.2.7 + keyv: ^4.5.3 + rimraf: ^3.0.2 + checksum: fcbf70a2a7d8664ef8f94e25d8b4a05d0594aee8ba0b53b5b7f6287877e8e5080ae893fc4a71fb3d803c7659aeaf801d49f12183b954e21ecd98a1d74012167e + languageName: node + linkType: hard + +"flatted@npm:^3.2.7": + version: 3.2.9 + resolution: "flatted@npm:3.2.9" + checksum: 5c91c5a0a21bbc0b07b272231e5b4efe6b822bcb4ad317caf6bb06984be4042a9e9045026307da0fdb4583f1f545e317a67ef1231a59e71f7fced3cc429cfc53 + languageName: node + linkType: hard + +"foreground-child@npm:^3.1.0": + version: 3.1.1 + resolution: "foreground-child@npm:3.1.1" + dependencies: + cross-spawn: ^7.0.0 + signal-exit: ^4.0.1 + checksum: 9700a0285628abaeb37007c9a4d92bd49f67210f09067638774338e146c8e9c825c5c877f072b2f75f41dc6a2d0be8664f79ffc03f6576649f54a84fb9b47de0 + languageName: node + linkType: hard + +"fs.realpath@npm:^1.0.0": + version: 1.0.0 + resolution: "fs.realpath@npm:1.0.0" + checksum: 444cf1291d997165dfd4c0d58b69f0e4782bfd9149fd72faa4fe299e68e0e93d6db941660b37dd29153bf7186672ececa3b50b7e7249477b03fdf850f287c948 + languageName: node + linkType: hard + +"get-caller-file@npm:^2.0.5": + version: 2.0.5 + resolution: "get-caller-file@npm:2.0.5" + checksum: c6c7b60271931fa752aeb92f2b47e355eac1af3a2673f47c9589e8f8a41adc74d45551c1bc57b5e66a80609f10ffb72b6f575e4370d61cc3f7f3aaff01757cde + languageName: node + linkType: hard + +"get-stream@npm:^6.0.0, get-stream@npm:^6.0.1": + version: 6.0.1 + resolution: "get-stream@npm:6.0.1" + checksum: 49825d57d3fd6964228e6200a58169464b8e8970489b3acdc24906c782fb7f01f9f56f8e6653c4a50713771d6658f7cfe051e5eb8c12e334138c9c918b296341 + languageName: node + linkType: hard + +"glob-parent@npm:^5.1.2": + version: 5.1.2 + resolution: "glob-parent@npm:5.1.2" + dependencies: + is-glob: ^4.0.1 + checksum: cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee + languageName: node + linkType: hard + +"glob-parent@npm:^6.0.2": + version: 6.0.2 + resolution: "glob-parent@npm:6.0.2" + dependencies: + is-glob: ^4.0.3 + checksum: 317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8 + languageName: node + linkType: hard + +"glob@npm:^10.3.10": + version: 10.3.10 + resolution: "glob@npm:10.3.10" + dependencies: + foreground-child: ^3.1.0 + jackspeak: ^2.3.5 + minimatch: ^9.0.1 + minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 + path-scurry: ^1.10.1 + bin: + glob: dist/esm/bin.mjs + checksum: 13d8a1feb7eac7945f8c8480e11cd4a44b24d26503d99a8d8ac8d5aefbf3e9802a2b6087318a829fad04cb4e829f25c5f4f1110c68966c498720dd261c7e344d + languageName: node + linkType: hard + +"glob@npm:^7.0.5, glob@npm:^7.1.3": + version: 7.2.3 + resolution: "glob@npm:7.2.3" + dependencies: + fs.realpath: ^1.0.0 + inflight: ^1.0.4 + inherits: 2 + minimatch: ^3.1.1 + once: ^1.3.0 + path-is-absolute: ^1.0.0 + checksum: 65676153e2b0c9095100fe7f25a778bf45608eeb32c6048cf307f579649bcc30353277b3b898a3792602c65764e5baa4f643714dfbdfd64ea271d210c7a425fe + languageName: node + linkType: hard + +"globals@npm:^13.19.0": + version: 13.22.0 + resolution: "globals@npm:13.22.0" + dependencies: + type-fest: ^0.20.2 + checksum: e7fda8fe048a3b4fdfb95602b7dcd87d719f4b3797a6ba7f43e50fe148cfe20edfd3abeb16cc301caf679ca0f3e059b561e2d5060f2133f20f52c85bb16ac394 + languageName: node + linkType: hard + +"globby@npm:^11.1.0": + version: 11.1.0 + resolution: "globby@npm:11.1.0" + dependencies: + array-union: ^2.1.0 + dir-glob: ^3.0.1 + fast-glob: ^3.2.9 + ignore: ^5.2.0 + merge2: ^1.4.1 + slash: ^3.0.0 + checksum: b39511b4afe4bd8a7aead3a27c4ade2b9968649abab0a6c28b1a90141b96ca68ca5db1302f7c7bd29eab66bf51e13916b8e0a3d0ac08f75e1e84a39b35691189 + languageName: node + linkType: hard + +"graphemer@npm:^1.4.0": + version: 1.4.0 + resolution: "graphemer@npm:1.4.0" + checksum: e951259d8cd2e0d196c72ec711add7115d42eb9a8146c8eeda5b8d3ac91e5dd816b9cd68920726d9fd4490368e7ed86e9c423f40db87e2d8dfafa00fa17c3a31 + languageName: node + linkType: hard + +"graphql@npm:^15.4.0": + version: 15.8.0 + resolution: "graphql@npm:15.8.0" + checksum: 30cc09b77170a9d1ed68e4c017ec8c5265f69501c96e4f34f8f6613f39a886c96dd9853eac925f212566ed651736334c8fe24ceae6c44e8d7625c95c3009a801 + languageName: node + linkType: hard + +"handlebars@npm:^4.7.7, handlebars@npm:^4.7.8": + version: 4.7.8 + resolution: "handlebars@npm:4.7.8" + dependencies: + minimist: ^1.2.5 + neo-async: ^2.6.2 + source-map: ^0.6.1 + uglify-js: ^3.1.4 + wordwrap: ^1.0.0 + dependenciesMeta: + uglify-js: + optional: true + bin: + handlebars: bin/handlebars + checksum: 7aff423ea38a14bb379316f3857fe0df3c5d66119270944247f155ba1f08e07a92b340c58edaa00cfe985c21508870ee5183e0634dcb53dd405f35c93ef7f10d + languageName: node + linkType: hard + +"has-flag@npm:^4.0.0": + version: 4.0.0 + resolution: "has-flag@npm:4.0.0" + checksum: 2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 + languageName: node + linkType: hard + +"human-signals@npm:^2.1.0": + version: 2.1.0 + resolution: "human-signals@npm:2.1.0" + checksum: 695edb3edfcfe9c8b52a76926cd31b36978782062c0ed9b1192b36bebc75c4c87c82e178dfcb0ed0fc27ca59d434198aac0bd0be18f5781ded775604db22304a + languageName: node + linkType: hard + +"human-signals@npm:^4.3.0": + version: 4.3.1 + resolution: "human-signals@npm:4.3.1" + checksum: 40498b33fe139f5cc4ef5d2f95eb1803d6318ac1b1c63eaf14eeed5484d26332c828de4a5a05676b6c83d7b9e57727c59addb4b1dea19cb8d71e83689e5b336c + languageName: node + linkType: hard + +"ignore@npm:^5.2.0, ignore@npm:^5.2.4": + version: 5.2.4 + resolution: "ignore@npm:5.2.4" + checksum: 7c7cd90edd9fea6e037f9b9da4b01bf0a86b198ce78345f9bbd983929d68ff14830be31111edc5d70c264921f4962404d75b7262b4d9cc3bc12381eccbd03096 + languageName: node + linkType: hard + +"import-fresh@npm:^3.2.1": + version: 3.3.0 + resolution: "import-fresh@npm:3.3.0" + dependencies: + parent-module: ^1.0.0 + resolve-from: ^4.0.0 + checksum: 7f882953aa6b740d1f0e384d0547158bc86efbf2eea0f1483b8900a6f65c5a5123c2cf09b0d542cc419d0b98a759ecaeb394237e97ea427f2da221dc3cd80cc3 + languageName: node + linkType: hard + +"imurmurhash@npm:^0.1.4": + version: 0.1.4 + resolution: "imurmurhash@npm:0.1.4" + checksum: 8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 + languageName: node + linkType: hard + +"inflight@npm:^1.0.4": + version: 1.0.6 + resolution: "inflight@npm:1.0.6" + dependencies: + once: ^1.3.0 + wrappy: 1 + checksum: 7faca22584600a9dc5b9fca2cd5feb7135ac8c935449837b315676b4c90aa4f391ec4f42240178244b5a34e8bede1948627fda392ca3191522fc46b34e985ab2 + languageName: node + linkType: hard + +"inherits@npm:2, inherits@npm:^2.0.1, inherits@npm:~2.0.1, inherits@npm:~2.0.3": + version: 2.0.4 + resolution: "inherits@npm:2.0.4" + checksum: 4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 + languageName: node + linkType: hard + +"is-docker@npm:^2.0.0": + version: 2.2.1 + resolution: "is-docker@npm:2.2.1" + bin: + is-docker: cli.js + checksum: e828365958d155f90c409cdbe958f64051d99e8aedc2c8c4cd7c89dcf35329daed42f7b99346f7828df013e27deb8f721cf9408ba878c76eb9e8290235fbcdcc + languageName: node + linkType: hard + +"is-docker@npm:^3.0.0": + version: 3.0.0 + resolution: "is-docker@npm:3.0.0" + bin: + is-docker: cli.js + checksum: d2c4f8e6d3e34df75a5defd44991b6068afad4835bb783b902fa12d13ebdb8f41b2a199dcb0b5ed2cb78bfee9e4c0bbdb69c2d9646f4106464674d3e697a5856 + languageName: node + linkType: hard + +"is-extglob@npm:^2.1.1": + version: 2.1.1 + resolution: "is-extglob@npm:2.1.1" + checksum: 5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^3.0.0": + version: 3.0.0 + resolution: "is-fullwidth-code-point@npm:3.0.0" + checksum: bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc + languageName: node + linkType: hard + +"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3": + version: 4.0.3 + resolution: "is-glob@npm:4.0.3" + dependencies: + is-extglob: ^2.1.1 + checksum: 17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a + languageName: node + linkType: hard + +"is-inside-container@npm:^1.0.0": + version: 1.0.0 + resolution: "is-inside-container@npm:1.0.0" + dependencies: + is-docker: ^3.0.0 + bin: + is-inside-container: cli.js + checksum: a8efb0e84f6197e6ff5c64c52890fa9acb49b7b74fed4da7c95383965da6f0fa592b4dbd5e38a79f87fc108196937acdbcd758fcefc9b140e479b39ce1fcd1cd + languageName: node + linkType: hard + +"is-number@npm:^7.0.0": + version: 7.0.0 + resolution: "is-number@npm:7.0.0" + checksum: b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 + languageName: node + linkType: hard + +"is-path-inside@npm:^3.0.3": + version: 3.0.3 + resolution: "is-path-inside@npm:3.0.3" + checksum: cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05 + languageName: node + linkType: hard + +"is-plain-object@npm:^5.0.0": + version: 5.0.0 + resolution: "is-plain-object@npm:5.0.0" + checksum: 893e42bad832aae3511c71fd61c0bf61aa3a6d853061c62a307261842727d0d25f761ce9379f7ba7226d6179db2a3157efa918e7fe26360f3bf0842d9f28942c + languageName: node + linkType: hard + +"is-stream@npm:^2.0.0": + version: 2.0.1 + resolution: "is-stream@npm:2.0.1" + checksum: 7c284241313fc6efc329b8d7f08e16c0efeb6baab1b4cd0ba579eb78e5af1aa5da11e68559896a2067cd6c526bd29241dda4eb1225e627d5aa1a89a76d4635a5 + languageName: node + linkType: hard + +"is-stream@npm:^3.0.0": + version: 3.0.0 + resolution: "is-stream@npm:3.0.0" + checksum: eb2f7127af02ee9aa2a0237b730e47ac2de0d4e76a4a905a50a11557f2339df5765eaea4ceb8029f1efa978586abe776908720bfcb1900c20c6ec5145f6f29d8 + languageName: node + linkType: hard + +"is-wsl@npm:^2.2.0": + version: 2.2.0 + resolution: "is-wsl@npm:2.2.0" + dependencies: + is-docker: ^2.0.0 + checksum: a6fa2d370d21be487c0165c7a440d567274fbba1a817f2f0bfa41cc5e3af25041d84267baa22df66696956038a43973e72fca117918c91431920bdef490fa25e + languageName: node + linkType: hard + +"isarray@npm:0.0.1": + version: 0.0.1 + resolution: "isarray@npm:0.0.1" + checksum: ed1e62da617f71fe348907c71743b5ed550448b455f8d269f89a7c7ddb8ae6e962de3dab6a74a237b06f5eb7f6ece7a45ada8ce96d87fe972926530f91ae3311 + languageName: node + linkType: hard + +"isarray@npm:~1.0.0": + version: 1.0.0 + resolution: "isarray@npm:1.0.0" + checksum: 18b5be6669be53425f0b84098732670ed4e727e3af33bc7f948aac01782110eb9a18b3b329c5323bcdd3acdaae547ee077d3951317e7f133bff7105264b3003d + languageName: node + linkType: hard + +"isexe@npm:^2.0.0": + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: 228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d + languageName: node + linkType: hard + +"isomorphic-unfetch@npm:^3.1.0": + version: 3.1.0 + resolution: "isomorphic-unfetch@npm:3.1.0" + dependencies: + node-fetch: ^2.6.1 + unfetch: ^4.2.0 + checksum: d3b61fca06304db692b7f76bdfd3a00f410e42cfa7403c3b250546bf71589d18cf2f355922f57198e4cc4a9872d3647b20397a5c3edf1a347c90d57c83cf2a89 + languageName: node + linkType: hard + +"jackspeak@npm:^2.3.5": + version: 2.3.6 + resolution: "jackspeak@npm:2.3.6" + dependencies: + "@isaacs/cliui": ^8.0.2 + "@pkgjs/parseargs": ^0.11.0 + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: f01d8f972d894cd7638bc338e9ef5ddb86f7b208ce177a36d718eac96ec86638a6efa17d0221b10073e64b45edc2ce15340db9380b1f5d5c5d000cbc517dc111 + languageName: node + linkType: hard + +"js-yaml@npm:^4.1.0": + version: 4.1.0 + resolution: "js-yaml@npm:4.1.0" + dependencies: + argparse: ^2.0.1 + bin: + js-yaml: bin/js-yaml.js + checksum: 184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f + languageName: node + linkType: hard + +"json-buffer@npm:3.0.1": + version: 3.0.1 + resolution: "json-buffer@npm:3.0.1" + checksum: 0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7 + languageName: node + linkType: hard + +"json-schema-traverse@npm:^0.4.1": + version: 0.4.1 + resolution: "json-schema-traverse@npm:0.4.1" + checksum: 108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce + languageName: node + linkType: hard + +"json-stable-stringify-without-jsonify@npm:^1.0.1": + version: 1.0.1 + resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" + checksum: cb168b61fd4de83e58d09aaa6425ef71001bae30d260e2c57e7d09a5fd82223e2f22a042dedaab8db23b7d9ae46854b08bb1f91675a8be11c5cffebef5fb66a5 + languageName: node + linkType: hard + +"jsonc-parser@npm:^3.2.0": + version: 3.2.0 + resolution: "jsonc-parser@npm:3.2.0" + checksum: 5a12d4d04dad381852476872a29dcee03a57439574e4181d91dca71904fcdcc5e8e4706c0a68a2c61ad9810e1e1c5806b5100d52d3e727b78f5cdc595401045b + languageName: node + linkType: hard + +"keyv@npm:^4.5.3": + version: 4.5.3 + resolution: "keyv@npm:4.5.3" + dependencies: + json-buffer: 3.0.1 + checksum: 7d3fc0469962bdff75ce92402b216a23d146e0caad011424947b32b95ffc4b91df12b1206026e6e945e7f80b3729a3109c0c3984f23038d738d355491179dd79 + languageName: node + linkType: hard + +"levn@npm:^0.4.1": + version: 0.4.1 + resolution: "levn@npm:0.4.1" + dependencies: + prelude-ls: ^1.2.1 + type-check: ~0.4.0 + checksum: effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e + languageName: node + linkType: hard + +"locate-path@npm:^6.0.0": + version: 6.0.0 + resolution: "locate-path@npm:6.0.0" + dependencies: + p-locate: ^5.0.0 + checksum: d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3 + languageName: node + linkType: hard + +"lodash.merge@npm:^4.6.2": + version: 4.6.2 + resolution: "lodash.merge@npm:4.6.2" + checksum: 402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506 + languageName: node + linkType: hard + +"lru-cache@npm:^6.0.0": + version: 6.0.0 + resolution: "lru-cache@npm:6.0.0" + dependencies: + yallist: ^4.0.0 + checksum: cb53e582785c48187d7a188d3379c181b5ca2a9c78d2bce3e7dee36f32761d1c42983da3fe12b55cb74e1779fa94cdc2e5367c028a9b35317184ede0c07a30a9 + languageName: node + linkType: hard + +"lru-cache@npm:^9.1.1 || ^10.0.0": + version: 10.0.1 + resolution: "lru-cache@npm:10.0.1" + checksum: 982dabfb227b9a2daf56d712ae0e72e01115a28c0a2068cd71277bca04568f3417bbf741c6c7941abc5c620fd8059e34f15607f90ebccbfa0a17533322d27a8e + languageName: node + linkType: hard + +"lunr@npm:^2.3.9": + version: 2.3.9 + resolution: "lunr@npm:2.3.9" + checksum: 77d7dbb4fbd602aac161e2b50887d8eda28c0fa3b799159cee380fbb311f1e614219126ecbbd2c3a9c685f1720a8109b3c1ca85cc893c39b6c9cc6a62a1d8a8b + languageName: node + linkType: hard + +"make-error@npm:^1.1.1": + version: 1.3.6 + resolution: "make-error@npm:1.3.6" + checksum: 171e458d86854c6b3fc46610cfacf0b45149ba043782558c6875d9f42f222124384ad0b468c92e996d815a8a2003817a710c0a160e49c1c394626f76fa45396f + languageName: node + linkType: hard + +"marked@npm:^4.3.0": + version: 4.3.0 + resolution: "marked@npm:4.3.0" + bin: + marked: bin/marked.js + checksum: 0013463855e31b9c88d8bb2891a611d10ef1dc79f2e3cbff1bf71ba389e04c5971298c886af0be799d7fa9aa4593b086a136062d59f1210b0480b026a8c5dc47 + languageName: node + linkType: hard + +"merge-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "merge-stream@npm:2.0.0" + checksum: 867fdbb30a6d58b011449b8885601ec1690c3e41c759ecd5a9d609094f7aed0096c37823ff4a7190ef0b8f22cc86beb7049196ff68c016e3b3c671d0dac91ce5 + languageName: node + linkType: hard + +"merge2@npm:^1.3.0, merge2@npm:^1.4.1": + version: 1.4.1 + resolution: "merge2@npm:1.4.1" + checksum: 254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb + languageName: node + linkType: hard + +"micromatch@npm:^4.0.4": + version: 4.0.5 + resolution: "micromatch@npm:4.0.5" + dependencies: + braces: ^3.0.2 + picomatch: ^2.3.1 + checksum: 3d6505b20f9fa804af5d8c596cb1c5e475b9b0cd05f652c5b56141cf941bd72adaeb7a436fda344235cef93a7f29b7472efc779fcdb83b478eab0867b95cdeff + languageName: node + linkType: hard + +"mimic-fn@npm:^2.1.0": + version: 2.1.0 + resolution: "mimic-fn@npm:2.1.0" + checksum: b26f5479d7ec6cc2bce275a08f146cf78f5e7b661b18114e2506dd91ec7ec47e7a25bf4360e5438094db0560bcc868079fb3b1fb3892b833c1ecbf63f80c95a4 + languageName: node + linkType: hard + +"mimic-fn@npm:^4.0.0": + version: 4.0.0 + resolution: "mimic-fn@npm:4.0.0" + checksum: de9cc32be9996fd941e512248338e43407f63f6d497abe8441fa33447d922e927de54d4cc3c1a3c6d652857acd770389d5a3823f311a744132760ce2be15ccbf + languageName: node + linkType: hard + +"minimatch@npm:^3.0.3, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": + version: 3.1.2 + resolution: "minimatch@npm:3.1.2" + dependencies: + brace-expansion: ^1.1.7 + checksum: 0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311 + languageName: node + linkType: hard + +"minimatch@npm:^9.0.1, minimatch@npm:^9.0.3": + version: 9.0.3 + resolution: "minimatch@npm:9.0.3" + dependencies: + brace-expansion: ^2.0.1 + checksum: 85f407dcd38ac3e180f425e86553911d101455ca3ad5544d6a7cec16286657e4f8a9aa6695803025c55e31e35a91a2252b5dc8e7d527211278b8b65b4dbd5eac + languageName: node + linkType: hard + +"minimist@npm:^1.2.5": + version: 1.2.8 + resolution: "minimist@npm:1.2.8" + checksum: 19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 + languageName: node + linkType: hard + +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0": + version: 7.0.4 + resolution: "minipass@npm:7.0.4" + checksum: 6c7370a6dfd257bf18222da581ba89a5eaedca10e158781232a8b5542a90547540b4b9b7e7f490e4cda43acfbd12e086f0453728ecf8c19e0ef6921bc5958ac5 + languageName: node + linkType: hard + +"mkdirp@npm:^1.0.4": + version: 1.0.4 + resolution: "mkdirp@npm:1.0.4" + bin: + mkdirp: bin/cmd.js + checksum: 46ea0f3ffa8bc6a5bc0c7081ffc3907777f0ed6516888d40a518c5111f8366d97d2678911ad1a6882bf592fa9de6c784fea32e1687bb94e1f4944170af48a5cf + languageName: node + linkType: hard + +"ms@npm:2.1.2": + version: 2.1.2 + resolution: "ms@npm:2.1.2" + checksum: a437714e2f90dbf881b5191d35a6db792efbca5badf112f87b9e1c712aace4b4b9b742dd6537f3edf90fd6f684de897cec230abde57e87883766712ddda297cc + languageName: node + linkType: hard + +"natural-compare@npm:^1.4.0": + version: 1.4.0 + resolution: "natural-compare@npm:1.4.0" + checksum: f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447 + languageName: node + linkType: hard + +"neo-async@npm:^2.6.2": + version: 2.6.2 + resolution: "neo-async@npm:2.6.2" + checksum: c2f5a604a54a8ec5438a342e1f356dff4bc33ccccdb6dc668d94fe8e5eccfc9d2c2eea6064b0967a767ba63b33763f51ccf2cd2441b461a7322656c1f06b3f5d + languageName: node + linkType: hard + +"node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.7": + version: 2.7.0 + resolution: "node-fetch@npm:2.7.0" + dependencies: + whatwg-url: ^5.0.0 + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + checksum: b55786b6028208e6fbe594ccccc213cab67a72899c9234eb59dba51062a299ea853210fcf526998eaa2867b0963ad72338824450905679ff0fa304b8c5093ae8 + languageName: node + linkType: hard + +"noms@npm:0.0.0": + version: 0.0.0 + resolution: "noms@npm:0.0.0" + dependencies: + inherits: ^2.0.1 + readable-stream: ~1.0.31 + checksum: 7790dbbef45c593b5444b361cb9cde3260244ab66aaa199c0728d334525eb69df96231115cff260b71b92fc7a6915a642aa22f2f8448696d8dd6e7d7cebfccce + languageName: node + linkType: hard + +"npm-run-path@npm:^4.0.1": + version: 4.0.1 + resolution: "npm-run-path@npm:4.0.1" + dependencies: + path-key: ^3.0.0 + checksum: 6f9353a95288f8455cf64cbeb707b28826a7f29690244c1e4bb61ec573256e021b6ad6651b394eb1ccfd00d6ec50147253aba2c5fe58a57ceb111fad62c519ac + languageName: node + linkType: hard + +"npm-run-path@npm:^5.1.0": + version: 5.1.0 + resolution: "npm-run-path@npm:5.1.0" + dependencies: + path-key: ^4.0.0 + checksum: ff6d77514489f47fa1c3b1311d09cd4b6d09a874cc1866260f9dea12cbaabda0436ed7f8c2ee44d147bf99a3af29307c6f63b0f83d242b0b6b0ab25dff2629e3 + languageName: node + linkType: hard + +"once@npm:^1.3.0, once@npm:^1.4.0": + version: 1.4.0 + resolution: "once@npm:1.4.0" + dependencies: + wrappy: 1 + checksum: 5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0 + languageName: node + linkType: hard + +"onetime@npm:^5.1.2": + version: 5.1.2 + resolution: "onetime@npm:5.1.2" + dependencies: + mimic-fn: ^2.1.0 + checksum: ffcef6fbb2692c3c40749f31ea2e22677a876daea92959b8a80b521d95cca7a668c884d8b2045d1d8ee7d56796aa405c405462af112a1477594cc63531baeb8f + languageName: node + linkType: hard + +"onetime@npm:^6.0.0": + version: 6.0.0 + resolution: "onetime@npm:6.0.0" + dependencies: + mimic-fn: ^4.0.0 + checksum: 4eef7c6abfef697dd4479345a4100c382d73c149d2d56170a54a07418c50816937ad09500e1ed1e79d235989d073a9bade8557122aee24f0576ecde0f392bb6c + languageName: node + linkType: hard + +"open@npm:^9.1.0": + version: 9.1.0 + resolution: "open@npm:9.1.0" + dependencies: + default-browser: ^4.0.0 + define-lazy-prop: ^3.0.0 + is-inside-container: ^1.0.0 + is-wsl: ^2.2.0 + checksum: 8073ec0dd8994a7a7d9bac208bd17d093993a65ce10f2eb9b62b6d3a91c9366ae903938a237c275493c130171d339f6dcbdd2a2de7e32953452c0867b97825af + languageName: node + linkType: hard + +"optionator@npm:^0.9.3": + version: 0.9.3 + resolution: "optionator@npm:0.9.3" + dependencies: + "@aashutoshrathi/word-wrap": ^1.2.3 + deep-is: ^0.1.3 + fast-levenshtein: ^2.0.6 + levn: ^0.4.1 + prelude-ls: ^1.2.1 + type-check: ^0.4.0 + checksum: 66fba794d425b5be51353035cf3167ce6cfa049059cbb93229b819167687e0f48d2bc4603fcb21b091c99acb516aae1083624675b15c4765b2e4693a085e959c + languageName: node + linkType: hard + +"p-limit@npm:^3.0.2": + version: 3.1.0 + resolution: "p-limit@npm:3.1.0" + dependencies: + yocto-queue: ^0.1.0 + checksum: 9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a + languageName: node + linkType: hard + +"p-locate@npm:^5.0.0": + version: 5.0.0 + resolution: "p-locate@npm:5.0.0" + dependencies: + p-limit: ^3.0.2 + checksum: 2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a + languageName: node + linkType: hard + +"parent-module@npm:^1.0.0": + version: 1.0.1 + resolution: "parent-module@npm:1.0.1" + dependencies: + callsites: ^3.0.0 + checksum: c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556 + languageName: node + linkType: hard + +"path-exists@npm:^4.0.0": + version: 4.0.0 + resolution: "path-exists@npm:4.0.0" + checksum: 8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b + languageName: node + linkType: hard + +"path-is-absolute@npm:^1.0.0": + version: 1.0.1 + resolution: "path-is-absolute@npm:1.0.1" + checksum: 127da03c82172a2a50099cddbf02510c1791fc2cc5f7713ddb613a56838db1e8168b121a920079d052e0936c23005562059756d653b7c544c53185efe53be078 + languageName: node + linkType: hard + +"path-key@npm:^3.0.0, path-key@npm:^3.1.0": + version: 3.1.1 + resolution: "path-key@npm:3.1.1" + checksum: 748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c + languageName: node + linkType: hard + +"path-key@npm:^4.0.0": + version: 4.0.0 + resolution: "path-key@npm:4.0.0" + checksum: 794efeef32863a65ac312f3c0b0a99f921f3e827ff63afa5cb09a377e202c262b671f7b3832a4e64731003fa94af0263713962d317b9887bd1e0c48a342efba3 + languageName: node + linkType: hard + +"path-scurry@npm:^1.10.1": + version: 1.10.1 + resolution: "path-scurry@npm:1.10.1" + dependencies: + lru-cache: ^9.1.1 || ^10.0.0 + minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 + checksum: e5dc78a7348d25eec61ab166317e9e9c7b46818aa2c2b9006c507a6ff48c672d011292d9662527213e558f5652ce0afcc788663a061d8b59ab495681840c0c1e + languageName: node + linkType: hard + +"path-type@npm:^4.0.0": + version: 4.0.0 + resolution: "path-type@npm:4.0.0" + checksum: 666f6973f332f27581371efaf303fd6c272cc43c2057b37aa99e3643158c7e4b2626549555d88626e99ea9e046f82f32e41bbde5f1508547e9a11b149b52387c + languageName: node + linkType: hard + +"picocolors@npm:^1.0.0": + version: 1.0.0 + resolution: "picocolors@npm:1.0.0" + checksum: 20a5b249e331c14479d94ec6817a182fd7a5680debae82705747b2db7ec50009a5f6648d0621c561b0572703f84dbef0858abcbd5856d3c5511426afcb1961f7 + languageName: node + linkType: hard + +"picomatch@npm:^2.3.1": + version: 2.3.1 + resolution: "picomatch@npm:2.3.1" + checksum: 26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be + languageName: node + linkType: hard + +"prelude-ls@npm:^1.2.1": + version: 1.2.1 + resolution: "prelude-ls@npm:1.2.1" + checksum: b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd + languageName: node + linkType: hard + +"prettier-linter-helpers@npm:^1.0.0": + version: 1.0.0 + resolution: "prettier-linter-helpers@npm:1.0.0" + dependencies: + fast-diff: ^1.1.2 + checksum: 81e0027d731b7b3697ccd2129470ed9913ecb111e4ec175a12f0fcfab0096516373bf0af2fef132af50cafb0a905b74ff57996d615f59512bb9ac7378fcc64ab + languageName: node + linkType: hard + +"prettier@npm:^3.0.3": + version: 3.0.3 + resolution: "prettier@npm:3.0.3" + bin: + prettier: bin/prettier.cjs + checksum: f950887bc03c5b970d8c6dd129364acfbbc61e7b46aec5d5ce17f4adf6404e2ef43072c98b51c4786e0eaca949b307d362a773fd47502862d754b5a328fa2b26 + languageName: node + linkType: hard + +"process-nextick-args@npm:~2.0.0": + version: 2.0.1 + resolution: "process-nextick-args@npm:2.0.1" + checksum: bec089239487833d46b59d80327a1605e1c5287eaad770a291add7f45fda1bb5e28b38e0e061add0a1d0ee0984788ce74fa394d345eed1c420cacf392c554367 + languageName: node + linkType: hard + +"punycode@npm:^2.1.0": + version: 2.3.0 + resolution: "punycode@npm:2.3.0" + checksum: 8e6f7abdd3a6635820049e3731c623bbef3fedbf63bbc696b0d7237fdba4cefa069bc1fa62f2938b0fbae057550df7b5318f4a6bcece27f1907fc75c54160bee + languageName: node + linkType: hard + +"queue-microtask@npm:^1.2.2": + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: 900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 + languageName: node + linkType: hard + +"readable-stream@npm:~1.0.31": + version: 1.0.34 + resolution: "readable-stream@npm:1.0.34" + dependencies: + core-util-is: ~1.0.0 + inherits: ~2.0.1 + isarray: 0.0.1 + string_decoder: ~0.10.x + checksum: 02272551396ed8930ddee1a088bdf0379f0f7cc47ac49ed8804e998076cb7daec9fbd2b1fd9c0490ec72e56e8bb3651abeb8080492b8e0a9c3f2158330908ed6 + languageName: node + linkType: hard + +"readable-stream@npm:~2.3.6": + version: 2.3.8 + resolution: "readable-stream@npm:2.3.8" + dependencies: + core-util-is: ~1.0.0 + inherits: ~2.0.3 + isarray: ~1.0.0 + process-nextick-args: ~2.0.0 + safe-buffer: ~5.1.1 + string_decoder: ~1.1.1 + util-deprecate: ~1.0.1 + checksum: 7efdb01f3853bc35ac62ea25493567bf588773213f5f4a79f9c365e1ad13bab845ac0dae7bc946270dc40c3929483228415e92a3fc600cc7e4548992f41ee3fa + languageName: node + linkType: hard + +"require-directory@npm:^2.1.1": + version: 2.1.1 + resolution: "require-directory@npm:2.1.1" + checksum: 83aa76a7bc1531f68d92c75a2ca2f54f1b01463cb566cf3fbc787d0de8be30c9dbc211d1d46be3497dac5785fe296f2dd11d531945ac29730643357978966e99 + languageName: node + linkType: hard + +"resolve-from@npm:^4.0.0": + version: 4.0.0 + resolution: "resolve-from@npm:4.0.0" + checksum: 8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190 + languageName: node + linkType: hard + +"reusify@npm:^1.0.4": + version: 1.0.4 + resolution: "reusify@npm:1.0.4" + checksum: c19ef26e4e188f408922c46f7ff480d38e8dfc55d448310dfb518736b23ed2c4f547fb64a6ed5bdba92cd7e7ddc889d36ff78f794816d5e71498d645ef476107 + languageName: node + linkType: hard + +"rimraf@npm:^3.0.2": + version: 3.0.2 + resolution: "rimraf@npm:3.0.2" + dependencies: + glob: ^7.1.3 + bin: + rimraf: bin.js + checksum: 9cb7757acb489bd83757ba1a274ab545eafd75598a9d817e0c3f8b164238dd90eba50d6b848bd4dcc5f3040912e882dc7ba71653e35af660d77b25c381d402e8 + languageName: node + linkType: hard + +"run-applescript@npm:^5.0.0": + version: 5.0.0 + resolution: "run-applescript@npm:5.0.0" + dependencies: + execa: ^5.0.0 + checksum: f9977db5770929f3f0db434b8e6aa266498c70dec913c84320c0a06add510cf44e3a048c44da088abee312006f9cbf572fd065cdc8f15d7682afda8755f4114c + languageName: node + linkType: hard + +"run-parallel@npm:^1.1.9": + version: 1.2.0 + resolution: "run-parallel@npm:1.2.0" + dependencies: + queue-microtask: ^1.2.2 + checksum: 200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 + languageName: node + linkType: hard + +"safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": + version: 5.1.2 + resolution: "safe-buffer@npm:5.1.2" + checksum: 780ba6b5d99cc9a40f7b951d47152297d0e260f0df01472a1b99d4889679a4b94a13d644f7dbc4f022572f09ae9005fa2fbb93bbbd83643316f365a3e9a45b21 + languageName: node + linkType: hard + +"scripts@workspace:packages/scripts": + version: 0.0.0-use.local + resolution: "scripts@workspace:packages/scripts" + dependencies: + "@linear/sdk": ^1.22.0 + "@octokit/core": ^4.0.5 + ts-node: ^10.9.1 + typedoc: 0.25.1 + typedoc-monorepo-link-types: ^0.0.2 + typedoc-plugin-frontmatter: "*" + typedoc-plugin-markdown: 3.16.0 + typedoc-plugin-markdown-medusa: "*" + typedoc-plugin-merge-modules: 5.1.0 + typedoc-plugin-modules: "*" + typedoc-plugin-reference-excluder: 1.1.3 + typedoc-plugin-rename-defaults: ^0.6.6 + languageName: unknown + linkType: soft + +"semver@npm:^6.3.1": + version: 6.3.1 + resolution: "semver@npm:6.3.1" + bin: + semver: bin/semver.js + checksum: e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d + languageName: node + linkType: hard + +"semver@npm:^7.5.4": + version: 7.5.4 + resolution: "semver@npm:7.5.4" + dependencies: + lru-cache: ^6.0.0 + bin: + semver: bin/semver.js + checksum: 5160b06975a38b11c1ab55950cb5b8a23db78df88275d3d8a42ccf1f29e55112ac995b3a26a522c36e3b5f76b0445f1eef70d696b8c7862a2b4303d7b0e7609e + languageName: node + linkType: hard + +"shebang-command@npm:^2.0.0": + version: 2.0.0 + resolution: "shebang-command@npm:2.0.0" + dependencies: + shebang-regex: ^3.0.0 + checksum: a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e + languageName: node + linkType: hard + +"shebang-regex@npm:^3.0.0": + version: 3.0.0 + resolution: "shebang-regex@npm:3.0.0" + checksum: 1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 + languageName: node + linkType: hard + +"shiki@npm:^0.14.1": + version: 0.14.4 + resolution: "shiki@npm:0.14.4" + dependencies: + ansi-sequence-parser: ^1.1.0 + jsonc-parser: ^3.2.0 + vscode-oniguruma: ^1.7.0 + vscode-textmate: ^8.0.0 + checksum: 9d1609fde8b7d361b0a9bce62dd72fc5cb2be566f215b14427d0d04bbd272bcfe0662cd6a158db56391daa55f246017f0fa8a8a78b8c8611c3cc03923587b6f4 + languageName: node + linkType: hard + +"signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": + version: 3.0.7 + resolution: "signal-exit@npm:3.0.7" + checksum: 25d272fa73e146048565e08f3309d5b942c1979a6f4a58a8c59d5fa299728e9c2fcd1a759ec870863b1fd38653670240cd420dad2ad9330c71f36608a6a1c912 + languageName: node + linkType: hard + +"signal-exit@npm:^4.0.1": + version: 4.1.0 + resolution: "signal-exit@npm:4.1.0" + checksum: 41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83 + languageName: node + linkType: hard + +"slash@npm:^3.0.0": + version: 3.0.0 + resolution: "slash@npm:3.0.0" + checksum: e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b + languageName: node + linkType: hard + +"source-map@npm:^0.6.1": + version: 0.6.1 + resolution: "source-map@npm:0.6.1" + checksum: ab55398007c5e5532957cb0beee2368529618ac0ab372d789806f5718123cc4367d57de3904b4e6a4170eb5a0b0f41373066d02ca0735a0c4d75c7d328d3e011 + languageName: node + linkType: hard + +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0": + version: 4.2.3 + resolution: "string-width@npm:4.2.3" + dependencies: + emoji-regex: ^8.0.0 + is-fullwidth-code-point: ^3.0.0 + strip-ansi: ^6.0.1 + checksum: 1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b + languageName: node + linkType: hard + +"string-width@npm:^5.0.1, string-width@npm:^5.1.2": + version: 5.1.2 + resolution: "string-width@npm:5.1.2" + dependencies: + eastasianwidth: ^0.2.0 + emoji-regex: ^9.2.2 + strip-ansi: ^7.0.1 + checksum: ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca + languageName: node + linkType: hard + +"string_decoder@npm:~0.10.x": + version: 0.10.31 + resolution: "string_decoder@npm:0.10.31" + checksum: 1c628d78f974aa7539c496029f48e7019acc32487fc695464f9d6bdfec98edd7d933a06b3216bc2016918f6e75074c611d84430a53cb0e43071597d6c1ac5e25 + languageName: node + linkType: hard + +"string_decoder@npm:~1.1.1": + version: 1.1.1 + resolution: "string_decoder@npm:1.1.1" + dependencies: + safe-buffer: ~5.1.0 + checksum: b4f89f3a92fd101b5653ca3c99550e07bdf9e13b35037e9e2a1c7b47cec4e55e06ff3fc468e314a0b5e80bfbaf65c1ca5a84978764884ae9413bec1fc6ca924e + languageName: node + linkType: hard + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": + version: 6.0.1 + resolution: "strip-ansi@npm:6.0.1" + dependencies: + ansi-regex: ^5.0.1 + checksum: 1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 + languageName: node + linkType: hard + +"strip-ansi@npm:^7.0.1": + version: 7.1.0 + resolution: "strip-ansi@npm:7.1.0" + dependencies: + ansi-regex: ^6.0.1 + checksum: a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 + languageName: node + linkType: hard + +"strip-final-newline@npm:^2.0.0": + version: 2.0.0 + resolution: "strip-final-newline@npm:2.0.0" + checksum: bddf8ccd47acd85c0e09ad7375409d81653f645fda13227a9d459642277c253d877b68f2e5e4d819fe75733b0e626bac7e954c04f3236f6d196f79c94fa4a96f + languageName: node + linkType: hard + +"strip-final-newline@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-final-newline@npm:3.0.0" + checksum: a771a17901427bac6293fd416db7577e2bc1c34a19d38351e9d5478c3c415f523f391003b42ed475f27e33a78233035df183525395f731d3bfb8cdcbd4da08ce + languageName: node + linkType: hard + +"strip-json-comments@npm:^3.1.1": + version: 3.1.1 + resolution: "strip-json-comments@npm:3.1.1" + checksum: 9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd + languageName: node + linkType: hard + +"supports-color@npm:^7.1.0": + version: 7.2.0 + resolution: "supports-color@npm:7.2.0" + dependencies: + has-flag: ^4.0.0 + checksum: afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124 + languageName: node + linkType: hard + +"synckit@npm:^0.8.5": + version: 0.8.5 + resolution: "synckit@npm:0.8.5" + dependencies: + "@pkgr/utils": ^2.3.1 + tslib: ^2.5.0 + checksum: 9827f828cabc404b3a147c38f824c8d5b846eb6f65189d965aa0b71ea8ecda5048f8f50b4bdfd8813148844175233cff56c6bc8d87a7118cf10707df870519f4 + languageName: node + linkType: hard + +"text-table@npm:^0.2.0": + version: 0.2.0 + resolution: "text-table@npm:0.2.0" + checksum: 02805740c12851ea5982686810702e2f14369a5f4c5c40a836821e3eefc65ffeec3131ba324692a37608294b0fd8c1e55a2dd571ffed4909822787668ddbee5c + languageName: node + linkType: hard + +"through2@npm:^2.0.1": + version: 2.0.5 + resolution: "through2@npm:2.0.5" + dependencies: + readable-stream: ~2.3.6 + xtend: ~4.0.1 + checksum: cbfe5b57943fa12b4f8c043658c2a00476216d79c014895cef1ac7a1d9a8b31f6b438d0e53eecbb81054b93128324a82ecd59ec1a4f91f01f7ac113dcb14eade + languageName: node + linkType: hard + +"titleize@npm:^3.0.0": + version: 3.0.0 + resolution: "titleize@npm:3.0.0" + checksum: 5ae6084ba299b5782f95e3fe85ea9f0fa4d74b8ae722b6b3208157e975589fbb27733aeba4e5080fa9314a856044ef52caa61b87caea4b1baade951a55c06336 + languageName: node + linkType: hard + +"to-regex-range@npm:^5.0.1": + version: 5.0.1 + resolution: "to-regex-range@npm:5.0.1" + dependencies: + is-number: ^7.0.0 + checksum: 487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 + languageName: node + linkType: hard + +"tr46@npm:~0.0.3": + version: 0.0.3 + resolution: "tr46@npm:0.0.3" + checksum: 047cb209a6b60c742f05c9d3ace8fa510bff609995c129a37ace03476a9b12db4dbf975e74600830ef0796e18882b2381fb5fb1f6b4f96b832c374de3ab91a11 + languageName: node + linkType: hard + +"ts-api-utils@npm:^1.0.1": + version: 1.0.3 + resolution: "ts-api-utils@npm:1.0.3" + peerDependencies: + typescript: ">=4.2.0" + checksum: 9408338819c3aca2a709f0bc54e3f874227901506cacb1163612a6c8a43df224174feb965a5eafdae16f66fc68fd7bfee8d3275d0fa73fbb8699e03ed26520c9 + languageName: node + linkType: hard + +"ts-node@npm:^10.9.1": + version: 10.9.1 + resolution: "ts-node@npm:10.9.1" + dependencies: + "@cspotcode/source-map-support": ^0.8.0 + "@tsconfig/node10": ^1.0.7 + "@tsconfig/node12": ^1.0.7 + "@tsconfig/node14": ^1.0.0 + "@tsconfig/node16": ^1.0.2 + acorn: ^8.4.1 + acorn-walk: ^8.1.1 + arg: ^4.1.0 + create-require: ^1.1.0 + diff: ^4.0.1 + make-error: ^1.1.1 + v8-compile-cache-lib: ^3.0.1 + yn: 3.1.1 + peerDependencies: + "@swc/core": ">=1.2.50" + "@swc/wasm": ">=1.2.50" + "@types/node": "*" + typescript: ">=2.7" + peerDependenciesMeta: + "@swc/core": + optional: true + "@swc/wasm": + optional: true + bin: + ts-node: dist/bin.js + ts-node-cwd: dist/bin-cwd.js + ts-node-esm: dist/bin-esm.js + ts-node-script: dist/bin-script.js + ts-node-transpile-only: dist/bin-transpile.js + ts-script: dist/bin-script-deprecated.js + checksum: 95187932fb83f3901e22546bd2feeac7d2feb4f412f42ac3a595f049a23e8dcf70516dffb51866391228ea2dbcfaea039e250fb2bb334d48a86ab2b6aea0ae2d + languageName: node + linkType: hard + +"tslib@npm:^2.5.0, tslib@npm:^2.6.0": + version: 2.6.2 + resolution: "tslib@npm:2.6.2" + checksum: e03a8a4271152c8b26604ed45535954c0a45296e32445b4b87f8a5abdb2421f40b59b4ca437c4346af0f28179780d604094eb64546bee2019d903d01c6c19bdb + languageName: node + linkType: hard + +"turbo-darwin-64@npm:1.10.14": + version: 1.10.14 + resolution: "turbo-darwin-64@npm:1.10.14" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"turbo-darwin-arm64@npm:1.10.14": + version: 1.10.14 + resolution: "turbo-darwin-arm64@npm:1.10.14" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"turbo-linux-64@npm:1.10.14": + version: 1.10.14 + resolution: "turbo-linux-64@npm:1.10.14" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"turbo-linux-arm64@npm:1.10.14": + version: 1.10.14 + resolution: "turbo-linux-arm64@npm:1.10.14" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"turbo-windows-64@npm:1.10.14": + version: 1.10.14 + resolution: "turbo-windows-64@npm:1.10.14" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"turbo-windows-arm64@npm:1.10.14": + version: 1.10.14 + resolution: "turbo-windows-arm64@npm:1.10.14" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"turbo@npm:latest": + version: 1.10.14 + resolution: "turbo@npm:1.10.14" + dependencies: + turbo-darwin-64: 1.10.14 + turbo-darwin-arm64: 1.10.14 + turbo-linux-64: 1.10.14 + turbo-linux-arm64: 1.10.14 + turbo-windows-64: 1.10.14 + turbo-windows-arm64: 1.10.14 + dependenciesMeta: + turbo-darwin-64: + optional: true + turbo-darwin-arm64: + optional: true + turbo-linux-64: + optional: true + turbo-linux-arm64: + optional: true + turbo-windows-64: + optional: true + turbo-windows-arm64: + optional: true + bin: + turbo: bin/turbo + checksum: 4e23c41ad04ad278587c2ae1f1fa1edf7402b4ec122d5e55133dcad3c5d6c20a9ce8f98bfadbeaf7003f276bed500cfe82ae54e27d8cde78b5754bf853288990 + languageName: node + linkType: hard + +"type-check@npm:^0.4.0, type-check@npm:~0.4.0": + version: 0.4.0 + resolution: "type-check@npm:0.4.0" + dependencies: + prelude-ls: ^1.2.1 + checksum: 7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58 + languageName: node + linkType: hard + +"type-fest@npm:^0.20.2": + version: 0.20.2 + resolution: "type-fest@npm:0.20.2" + checksum: dea9df45ea1f0aaa4e2d3bed3f9a0bfe9e5b2592bddb92eb1bf06e50bcf98dbb78189668cd8bc31a0511d3fc25539b4cd5c704497e53e93e2d40ca764b10bfc3 + languageName: node + linkType: hard + +"typedoc-config@workspace:packages/typedoc-config": + version: 0.0.0-use.local + resolution: "typedoc-config@workspace:packages/typedoc-config" + languageName: unknown + linkType: soft + +"typedoc-monorepo-link-types@npm:^0.0.2": + version: 0.0.2 + resolution: "typedoc-monorepo-link-types@npm:0.0.2" + peerDependencies: + typedoc: 0.22.x + checksum: f282e6c0b1becdc36fd3cce5f4a79573b31098ec64c4e92bc17cc9001920e4e196b2973fa666f027643da5d34cbf3344c768a0ffd8f1907e04416b20c0af6ce6 + languageName: node + linkType: hard + +"typedoc-plugin-frontmatter@*, typedoc-plugin-frontmatter@workspace:packages/typedoc-plugin-frontmatter": + version: 0.0.0-use.local + resolution: "typedoc-plugin-frontmatter@workspace:packages/typedoc-plugin-frontmatter" + dependencies: + "@types/node": ^16.11.10 + typedoc: ^0.25.1 + typescript: ^4.6 + peerDependencies: + typedoc: 0.25.x + languageName: unknown + linkType: soft + +"typedoc-plugin-markdown-medusa@*, typedoc-plugin-markdown-medusa@workspace:packages/typedoc-plugin-markdown-medusa": + version: 0.0.0-use.local + resolution: "typedoc-plugin-markdown-medusa@workspace:packages/typedoc-plugin-markdown-medusa" + dependencies: + "@types/node": ^16.11.10 + copyfiles: ^2.4.1 + handlebars: ^4.7.8 + typescript: ^4.6 + peerDependencies: + typedoc: 0.25.x + languageName: unknown + linkType: soft + +"typedoc-plugin-markdown@npm:3.16.0, typedoc-plugin-markdown@npm:^3.16.0": + version: 3.16.0 + resolution: "typedoc-plugin-markdown@npm:3.16.0" + dependencies: + handlebars: ^4.7.7 + peerDependencies: + typedoc: ">=0.24.0" + checksum: 0daa8290e7b8f03e9e1e79efdd564a61db3dbb8f20eb15ef89cc3bce0c14ff2061b7f35452b06e2c31644f33f0cc53c06570c9c1a20245f7458b1f88a3438588 + languageName: node + linkType: hard + +"typedoc-plugin-merge-modules@npm:5.1.0": + version: 5.1.0 + resolution: "typedoc-plugin-merge-modules@npm:5.1.0" + peerDependencies: + typedoc: 0.24.x || 0.25.x + checksum: 59b44c5afe02372367db2be237546c9ab1a755ff8eab9b696ff8649f0eee87d5c7290b931642371907877fdf4754875076056d8cc29cfef582a665aaf49894ca + languageName: node + linkType: hard + +"typedoc-plugin-modules@*, typedoc-plugin-modules@workspace:packages/typedoc-plugin-modules": + version: 0.0.0-use.local + resolution: "typedoc-plugin-modules@workspace:packages/typedoc-plugin-modules" + dependencies: + "@types/node": ^16.11.10 + glob: ^10.3.10 + typedoc-plugin-markdown: ^3.16.0 + typescript: ^4.6 + peerDependencies: + typedoc: 0.25.x + languageName: unknown + linkType: soft + +"typedoc-plugin-reference-excluder@npm:1.1.3": + version: 1.1.3 + resolution: "typedoc-plugin-reference-excluder@npm:1.1.3" + peerDependencies: + typedoc: ">=0.22.0" + checksum: df3ffb7cade292d8f3001d41d541e11644b04b120c96ef7dad417ee4e75caf1aeffcfbb4ec025251c6510e82b690596087b9bdf79f3bbcdb8f968d1e5bb53e74 + languageName: node + linkType: hard + +"typedoc-plugin-rename-defaults@npm:^0.6.6": + version: 0.6.6 + resolution: "typedoc-plugin-rename-defaults@npm:0.6.6" + peerDependencies: + typedoc: 0.22.x || 0.23.x || 0.24.x || 0.25.x + checksum: 519666dff2496a1348181b9a40b3d0efe710df2cb688902e63adb7624a2bd9088a9fbe512de0d557aca18e435d4b4dd7da6e3982ad2602ff037ae471bf7b978f + languageName: node + linkType: hard + +"typedoc@npm:0.25.1, typedoc@npm:^0.25.1": + version: 0.25.1 + resolution: "typedoc@npm:0.25.1" + dependencies: + lunr: ^2.3.9 + marked: ^4.3.0 + minimatch: ^9.0.3 + shiki: ^0.14.1 + peerDependencies: + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x + bin: + typedoc: bin/typedoc + checksum: 11d91302378d618ce451cc5857fcfd4d7923a20075c15ef7b7be663f827d3c2e01260b23ddb97d0d2d47b414b5ed3953a8fabc1adcb582c093d667cf704b5e48 + languageName: node + linkType: hard + +"typescript@npm:^4.6": + version: 4.9.5 + resolution: "typescript@npm:4.9.5" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 5f6cad2e728a8a063521328e612d7876e12f0d8a8390d3b3aaa452a6a65e24e9ac8ea22beb72a924fd96ea0a49ea63bb4e251fb922b12eedfb7f7a26475e5c56 + languageName: node + linkType: hard + +"typescript@patch:typescript@^4.6#~builtin": + version: 4.9.5 + resolution: "typescript@patch:typescript@npm%3A4.9.5#~builtin::version=4.9.5&hash=7ad353" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 897c8ac656e01b132fa82be6a8e34c4507b19be63dbf1ff1d8287d775519081a7c91dd0ca3ec62536c8137228141d65b238dfb2e8987a3f5182818f58f83e7d7 + languageName: node + linkType: hard + +"uglify-js@npm:^3.1.4": + version: 3.17.4 + resolution: "uglify-js@npm:3.17.4" + bin: + uglifyjs: bin/uglifyjs + checksum: 8b7fcdca69deb284fed7d2025b73eb747ce37f9aca6af53422844f46427152d5440601b6e2a033e77856a2f0591e4167153d5a21b68674ad11f662034ec13ced + languageName: node + linkType: hard + +"unfetch@npm:^4.2.0": + version: 4.2.0 + resolution: "unfetch@npm:4.2.0" + checksum: a5c0a896a6f09f278b868075aea65652ad185db30e827cb7df45826fe5ab850124bf9c44c4dafca4bf0c55a0844b17031e8243467fcc38dd7a7d435007151f1b + languageName: node + linkType: hard + +"universal-user-agent@npm:^6.0.0": + version: 6.0.0 + resolution: "universal-user-agent@npm:6.0.0" + checksum: ebeb0206963666c13bcf9ebc86d0577c7daed5870c05cd34d4972ee7a43b9ef20679baf2a8c83bf1b71d899bae67243ac4982d84ddaf9ba0355ff76595819961 + languageName: node + linkType: hard + +"untildify@npm:^4.0.0": + version: 4.0.0 + resolution: "untildify@npm:4.0.0" + checksum: d758e624c707d49f76f7511d75d09a8eda7f2020d231ec52b67ff4896bcf7013be3f9522d8375f57e586e9a2e827f5641c7e06ee46ab9c435fc2b2b2e9de517a + languageName: node + linkType: hard + +"uri-js@npm:^4.2.2": + version: 4.4.1 + resolution: "uri-js@npm:4.4.1" + dependencies: + punycode: ^2.1.0 + checksum: 4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c + languageName: node + linkType: hard + +"util-deprecate@npm:~1.0.1": + version: 1.0.2 + resolution: "util-deprecate@npm:1.0.2" + checksum: 41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942 + languageName: node + linkType: hard + +"v8-compile-cache-lib@npm:^3.0.1": + version: 3.0.1 + resolution: "v8-compile-cache-lib@npm:3.0.1" + checksum: bdc36fb8095d3b41df197f5fb6f11e3a26adf4059df3213e3baa93810d8f0cc76f9a74aaefc18b73e91fe7e19154ed6f134eda6fded2e0f1c8d2272ed2d2d391 + languageName: node + linkType: hard + +"vscode-oniguruma@npm:^1.7.0": + version: 1.7.0 + resolution: "vscode-oniguruma@npm:1.7.0" + checksum: bef0073c665ddf8c86e51da94529c905856559e9aba97a9882f951acd572da560384775941ab6e7e8db94d9c578b25fefb951e4b73c37e8712e16b0231de2689 + languageName: node + linkType: hard + +"vscode-textmate@npm:^8.0.0": + version: 8.0.0 + resolution: "vscode-textmate@npm:8.0.0" + checksum: 836f7fe73fc94998a38ca193df48173a2b6eab08b4943d83c8cac9a2a0c3546cfdab4cf1b10b890ec4a4374c5bee03a885ef0e83e7fd2bd618cf00781c017c04 + languageName: node + linkType: hard + +"webidl-conversions@npm:^3.0.0": + version: 3.0.1 + resolution: "webidl-conversions@npm:3.0.1" + checksum: 5612d5f3e54760a797052eb4927f0ddc01383550f542ccd33d5238cfd65aeed392a45ad38364970d0a0f4fea32e1f4d231b3d8dac4a3bdd385e5cf802ae097db + languageName: node + linkType: hard + +"whatwg-url@npm:^5.0.0": + version: 5.0.0 + resolution: "whatwg-url@npm:5.0.0" + dependencies: + tr46: ~0.0.3 + webidl-conversions: ^3.0.0 + checksum: 1588bed84d10b72d5eec1d0faa0722ba1962f1821e7539c535558fb5398d223b0c50d8acab950b8c488b4ba69043fd833cc2697056b167d8ad46fac3995a55d5 + languageName: node + linkType: hard + +"which@npm:^2.0.1": + version: 2.0.2 + resolution: "which@npm:2.0.2" + dependencies: + isexe: ^2.0.0 + bin: + node-which: ./bin/node-which + checksum: 66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f + languageName: node + linkType: hard + +"wordwrap@npm:^1.0.0": + version: 1.0.0 + resolution: "wordwrap@npm:1.0.0" + checksum: 7ed2e44f3c33c5c3e3771134d2b0aee4314c9e49c749e37f464bf69f2bcdf0cbf9419ca638098e2717cff4875c47f56a007532f6111c3319f557a2ca91278e92 + languageName: node + linkType: hard + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": + version: 7.0.0 + resolution: "wrap-ansi@npm:7.0.0" + dependencies: + ansi-styles: ^4.0.0 + string-width: ^4.1.0 + strip-ansi: ^6.0.0 + checksum: d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da + languageName: node + linkType: hard + +"wrap-ansi@npm:^8.1.0": + version: 8.1.0 + resolution: "wrap-ansi@npm:8.1.0" + dependencies: + ansi-styles: ^6.1.0 + string-width: ^5.0.1 + strip-ansi: ^7.0.1 + checksum: 138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 + languageName: node + linkType: hard + +"wrappy@npm:1": + version: 1.0.2 + resolution: "wrappy@npm:1.0.2" + checksum: 56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0 + languageName: node + linkType: hard + +"xtend@npm:~4.0.1": + version: 4.0.2 + resolution: "xtend@npm:4.0.2" + checksum: 366ae4783eec6100f8a02dff02ac907bf29f9a00b82ac0264b4d8b832ead18306797e283cf19de776538babfdcb2101375ec5646b59f08c52128ac4ab812ed0e + languageName: node + linkType: hard + +"y18n@npm:^5.0.5": + version: 5.0.8 + resolution: "y18n@npm:5.0.8" + checksum: 4df2842c36e468590c3691c894bc9cdbac41f520566e76e24f59401ba7d8b4811eb1e34524d57e54bc6d864bcb66baab7ffd9ca42bf1eda596618f9162b91249 + languageName: node + linkType: hard + +"yallist@npm:^4.0.0": + version: 4.0.0 + resolution: "yallist@npm:4.0.0" + checksum: 2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a + languageName: node + linkType: hard + +"yargs-parser@npm:^20.2.2": + version: 20.2.9 + resolution: "yargs-parser@npm:20.2.9" + checksum: 0685a8e58bbfb57fab6aefe03c6da904a59769bd803a722bb098bd5b0f29d274a1357762c7258fb487512811b8063fb5d2824a3415a0a4540598335b3b086c72 + languageName: node + linkType: hard + +"yargs@npm:^16.1.0": + version: 16.2.0 + resolution: "yargs@npm:16.2.0" + dependencies: + cliui: ^7.0.2 + escalade: ^3.1.1 + get-caller-file: ^2.0.5 + require-directory: ^2.1.1 + string-width: ^4.2.0 + y18n: ^5.0.5 + yargs-parser: ^20.2.2 + checksum: b1dbfefa679848442454b60053a6c95d62f2d2e21dd28def92b647587f415969173c6e99a0f3bab4f1b67ee8283bf735ebe3544013f09491186ba9e8a9a2b651 + languageName: node + linkType: hard + +"yn@npm:3.1.1": + version: 3.1.1 + resolution: "yn@npm:3.1.1" + checksum: 0732468dd7622ed8a274f640f191f3eaf1f39d5349a1b72836df484998d7d9807fbea094e2f5486d6b0cd2414aad5775972df0e68f8604db89a239f0f4bf7443 + languageName: node + linkType: hard + +"yocto-queue@npm:^0.1.0": + version: 0.1.0 + resolution: "yocto-queue@npm:0.1.0" + checksum: dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f + languageName: node + linkType: hard diff --git a/package.json b/package.json index 2139c04e9895a..c9d397963b613 100644 --- a/package.json +++ b/package.json @@ -52,12 +52,6 @@ "ts-jest": "^26.5.6", "ts-node": "^10.9.1", "turbo": "^1.6.3", - "typedoc": "0.23.10", - "typedoc-frontmatter-plugin": "link:docs-util/typedoc-plugins/typedoc-frontmatter-plugin", - "typedoc-monorepo-link-types": "^0.0.2", - "typedoc-plugin-markdown": "^3.13.4", - "typedoc-plugin-merge-modules": "^4.0.1", - "typedoc-plugin-reference-excluder": "^1.0.0", "typeorm": "^0.3.16" }, "lint-staged": { @@ -78,24 +72,17 @@ "test:integration:repositories": "turbo run test:integration --no-daemon --filter=integration-tests-repositories", "openapi:generate": "yarn ./packages/oas/oas-github-ci run ci", "medusa-oas": "yarn ./packages/oas/medusa-oas-cli run medusa-oas", - "generate:services": "typedoc --options typedoc.services.js", - "generate:js-client": "typedoc --options typedoc.js-client.js", - "generate:entities": "typedoc --options typedoc.entities.js", "release:snapshot": "changeset publish --no-git-tags --snapshot --tag snapshot", - "generate:announcement": "node ./scripts/doc-change-release.js", "develop": "ts-node --transpile-only ./integration-tests/development/server.js", "develop:create:db": "ts-node --transpile-only ./integration-tests/development/create-database.js", "release:next": "changeset publish --no-git-tags --snapshot --tag next", "version:next": "changeset version --snapshot next", "release": "changeset publish", - "version": "changeset version && yarn install --no-immutable", - "check:freshness": "node ./scripts/freshness-check.js" + "version": "changeset version && yarn install --no-immutable" }, "dependencies": { "@changesets/changelog-github": "^0.4.8", "@changesets/cli": "^2.26.0", - "@linear/sdk": "^1.22.0", - "@octokit/core": "^4.0.5", "global": "^4.4.0", "import-from": "^3.0.0" }, diff --git a/scripts/doc-change-release.js b/scripts/doc-change-release.js deleted file mode 100644 index 5a18ca108c0b6..0000000000000 --- a/scripts/doc-change-release.js +++ /dev/null @@ -1,65 +0,0 @@ -#!/usr/bin/env node - -const { Octokit } = require("@octokit/core"); -const fs = require('fs'); -const path = require('path'); - -const shouldExpire = process.argv.indexOf('--expire') !== -1; -const octokit = new Octokit({ - auth: process.env.GH_TOKEN -}); - -async function main () { - let announcement = {}; - - if (shouldExpire) { - //check if the file was last updated 6 days ago - try { - const commitResponse = await octokit.request('GET /repos/{owner}/{repo}/commits', { - owner: 'medusajs', - repo: 'medusa', - path: path.join('www', "apps", 'docs', 'announcement.json'), - per_page: 1 - }) - - if (commitResponse.data.length && dateDiffInDays(new Date(commitResponse.data[0].commit.committer.date), new Date()) < 6) { - console.log("File was edited less than 6 days ago. Expiry canceled."); - return; - } - } catch (e) { - //continue as if file doesn't exist - } - } else { - //retrieve the latest release - const response = await octokit.request('GET /repos/{owner}/{repo}/releases/latest', { - owner: 'medusajs', - repo: 'medusa' - }); - - const version = response.data.tag_name; - - //add new announcement - announcement = { - id: response.data.html_url, - content: `${version} is out`, - isCloseable: true, - } - } - - //write new config file - fs.writeFileSync(path.join(__dirname, '..', 'www', "apps", 'docs', 'announcement.json'), JSON.stringify(announcement)); - console.log(`Announcement Bar has been ${shouldExpire ? 'removed' : 'added'}`); -} - -const _MS_PER_DAY = 1000 * 60 * 60 * 24; - -// a and b are javascript Date objects -function dateDiffInDays(a, b) { - // Discard the time and time-zone information. - const utc1 = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate()); - const utc2 = Date.UTC(b.getFullYear(), b.getMonth(), b.getDate()); - - return Math.floor((utc2 - utc1) / _MS_PER_DAY); -} - -main(); \ No newline at end of file diff --git a/scripts/freshness-check.js b/scripts/freshness-check.js deleted file mode 100644 index bd247f0a0f1de..0000000000000 --- a/scripts/freshness-check.js +++ /dev/null @@ -1,154 +0,0 @@ -#!/usr/bin/env node - -const { LinearClient } = require("@linear/sdk"); -const { Octokit } = require("@octokit/core"); -const fs = require('fs'); -const path = require('path'); - -const octokit = new Octokit({ - auth: process.env.GH_TOKEN -}); - -const linearClient = new LinearClient({ - apiKey: process.env.LINEAR_API_KEY -}); - -const repoPath = path.join('www', 'apps', 'docs', 'content'); -let freshnessCheckLabelId = ""; -let documentationTeamId = ""; - -async function scanDirectory (startPath) { - const files = fs.readdirSync(path.join(startPath), { - withFileTypes: true - }); - - for (const file of files) { - const filePath = path.join(startPath, file.name); - if (file.isDirectory()) { - //if it's references directory, skip - if (file.name !== 'references' && file.name !== 'upgrade-guides') { - await scanDirectory(filePath); - } - continue; - } - - //check that the file is a markdown file - if (file.name.indexOf('.md') === -1 && file.name.indexOf('.mdx') === -1 ) { - continue; - } - - //if it is a file, check its commits in GitHub - const commitResponse = await octokit.request('GET /repos/{owner}/{repo}/commits', { - owner: 'medusajs', - repo: 'medusa', - path: filePath, - per_page: 1 - }) - - if (!commitResponse.data.length) { - continue; - } - - const today = new Date(); - const lastEditedDate = new Date(commitResponse.data[0].commit.committer.date); - const monthsSinceEdited = getMonthDifference(lastEditedDate, today); - - if (monthsSinceEdited > 6) { - //file was edited more than 6 months ago. - //check if there's an issue created for this file since the commit date - const existingIssue = await linearClient.issues({ - filter: { - createdAt: { - gte: subtractMonths(monthsSinceEdited - 6, today) - }, - title: { - containsIgnoreCase: `Freshness check for ${filePath}` - }, - labels: { - some: { - id: { - eq: freshnessCheckLabelId - } - } - } - }, - first: 1 - }); - - if (existingIssue.nodes.length) { - //an issue has been created for the past 6 months. Don't create an issue for it. - continue; - } - - console.log(`Creating an issue for ${filePath}...`); - - //there are no issues in the past 6 months. Create an issue - await linearClient.issueCreate({ - teamId: documentationTeamId, - title: `Freshness check for ${filePath}`, - labelIds: [ - freshnessCheckLabelId - ], - description: `File \`${filePath}\` was last edited on ${lastEditedDate.toDateString()}.` - }) - } - } -} - -async function main () { - //fetch documentation team ID from linear - const documentationTeam = await linearClient.teams({ - filter: { - name: { - eqIgnoreCase: 'Documentation' - } - }, - first: 1 - }); - - if (!documentationTeam.nodes.length) { - console.log("Please add Documentation team in Linear first then try again"); - process.exit(1); - } - - documentationTeamId = documentationTeam.nodes[0].id; - - //fetch freshness check label ID from linear - const freshnessCheckLabel = await linearClient.issueLabels({ - filter: { - name: { - eqIgnoreCase: 'type: freshness-check' - }, - team: { - id: { - eq: documentationTeamId - } - } - } - }); - - if (!freshnessCheckLabel.nodes.length) { - console.log("Please add freshness check label in Linear under the documentation team first then try again"); - process.exit(1); - } - - freshnessCheckLabelId = freshnessCheckLabel.nodes[0].id; - - await scanDirectory(repoPath); -} - -function getMonthDifference(startDate, endDate) { - return ( - endDate.getMonth() - - startDate.getMonth() + - 12 * (endDate.getFullYear() - startDate.getFullYear()) - ); -} - -function subtractMonths(numOfMonths, date = new Date()) { - date.setMonth(date.getMonth() - numOfMonths); - - return date; -} - -main() \ No newline at end of file diff --git a/typedoc.entities.js b/typedoc.entities.js deleted file mode 100644 index 87ada01cd7e4d..0000000000000 --- a/typedoc.entities.js +++ /dev/null @@ -1,17 +0,0 @@ -const globalTypedocOptions = require("./typedoc") - -module.exports = { - ...globalTypedocOptions, - entryPoints: ["packages/medusa/src/models/index.ts"], - out: ["www/apps/docs/content/references/entities"], - tsconfig: "packages/medusa/tsconfig.json", - name: "Entities Reference", - indexTitle: "Entities Reference", - entryDocument: "index.md", - hideInPageTOC: true, - hideBreadcrumbs: true, - plugin: [...globalTypedocOptions.plugin, "typedoc-frontmatter-plugin"], - frontmatterData: { - displayed_sidebar: "entitiesSidebar", - }, -} diff --git a/typedoc.services.js b/typedoc.services.js deleted file mode 100644 index 932fc9db44b57..0000000000000 --- a/typedoc.services.js +++ /dev/null @@ -1,13 +0,0 @@ -const globalTypedocOptions = require("./typedoc") - -module.exports = { - ...globalTypedocOptions, - entryPoints: ["packages/medusa/src/services/index.ts"], - out: ["www/apps/docs/content/references/services"], - tsconfig: "packages/medusa/tsconfig.json", - name: "Services Reference", - indexTitle: "Services Reference", - entryDocument: "index.md", - hideInPageTOC: true, - hideBreadcrumbs: true, -} diff --git a/yarn.lock b/yarn.lock index efec945468490..cc0481fc2162c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4744,7 +4744,7 @@ __metadata: languageName: node linkType: hard -"@graphql-typed-document-node/core@npm:^3.1.0, @graphql-typed-document-node/core@npm:^3.1.1": +"@graphql-typed-document-node/core@npm:^3.1.1": version: 3.2.0 resolution: "@graphql-typed-document-node/core@npm:3.2.0" peerDependencies: @@ -6080,17 +6080,6 @@ __metadata: languageName: node linkType: hard -"@linear/sdk@npm:^1.22.0": - version: 1.22.0 - resolution: "@linear/sdk@npm:1.22.0" - dependencies: - "@graphql-typed-document-node/core": ^3.1.0 - graphql: ^15.4.0 - isomorphic-unfetch: ^3.1.0 - checksum: 7e8f24f617631d027fd606334a498b04014d4c33603bcb3e08073d14f86260d116597983567f8bc147a935e4557180158175b52b9a9a8a270a234b946894a82b - languageName: node - linkType: hard - "@lmdb/lmdb-darwin-arm64@npm:2.5.2": version: 2.5.2 resolution: "@lmdb/lmdb-darwin-arm64@npm:2.5.2" @@ -7471,91 +7460,6 @@ __metadata: languageName: node linkType: hard -"@octokit/auth-token@npm:^3.0.0": - version: 3.0.4 - resolution: "@octokit/auth-token@npm:3.0.4" - checksum: abdf5e2da36344de9727c70ba782d58004f5ae1da0f65fa9bc9216af596ef23c0e4675f386df2f6886806612558091d603564051b693b0ad1986aa6160b7a231 - languageName: node - linkType: hard - -"@octokit/core@npm:^4.0.5": - version: 4.2.4 - resolution: "@octokit/core@npm:4.2.4" - dependencies: - "@octokit/auth-token": ^3.0.0 - "@octokit/graphql": ^5.0.0 - "@octokit/request": ^6.0.0 - "@octokit/request-error": ^3.0.0 - "@octokit/types": ^9.0.0 - before-after-hook: ^2.2.0 - universal-user-agent: ^6.0.0 - checksum: e54081a56884e628d1804837fddcd48c10d516117bb891551c8dc9d8e3dad449aeb9b4677ca71e8f0e76268c2b7656c953099506679aaa4666765228474a3ce6 - languageName: node - linkType: hard - -"@octokit/endpoint@npm:^7.0.0": - version: 7.0.6 - resolution: "@octokit/endpoint@npm:7.0.6" - dependencies: - "@octokit/types": ^9.0.0 - is-plain-object: ^5.0.0 - universal-user-agent: ^6.0.0 - checksum: fd147a55010b54af7567bf90791359f7096a1c9916a2b7c72f8afd0c53141338b3d78da3a4ab3e3bdfeb26218a1b73735432d8987ccc04996b1019219299f115 - languageName: node - linkType: hard - -"@octokit/graphql@npm:^5.0.0": - version: 5.0.6 - resolution: "@octokit/graphql@npm:5.0.6" - dependencies: - "@octokit/request": ^6.0.0 - "@octokit/types": ^9.0.0 - universal-user-agent: ^6.0.0 - checksum: de1d839d97fe6d96179925f6714bf96e7af6f77929892596bb4211adab14add3291fc5872b269a3d0e91a4dcf248d16096c82606c4a43538cf241b815c2e2a36 - languageName: node - linkType: hard - -"@octokit/openapi-types@npm:^18.0.0": - version: 18.0.0 - resolution: "@octokit/openapi-types@npm:18.0.0" - checksum: d90fab10d962be71e72b85ffab2055cffd9c3196ff1edc3e4106deb78e99e8782965cf7aa6a4c1398f828e4d0c3e0f905915debfe34396d956dfce8e75b21664 - languageName: node - linkType: hard - -"@octokit/request-error@npm:^3.0.0": - version: 3.0.3 - resolution: "@octokit/request-error@npm:3.0.3" - dependencies: - "@octokit/types": ^9.0.0 - deprecation: ^2.0.0 - once: ^1.4.0 - checksum: 1e252ac193c8af23b709909911aa327ed5372cbafcba09e4aff41e0f640a7c152579ab0a60311a92e37b4e7936392d59ee4c2feae5cdc387ee8587a33d8afa60 - languageName: node - linkType: hard - -"@octokit/request@npm:^6.0.0": - version: 6.2.8 - resolution: "@octokit/request@npm:6.2.8" - dependencies: - "@octokit/endpoint": ^7.0.0 - "@octokit/request-error": ^3.0.0 - "@octokit/types": ^9.0.0 - is-plain-object: ^5.0.0 - node-fetch: ^2.6.7 - universal-user-agent: ^6.0.0 - checksum: 6b6079ed45bac44c4579b40990bfd1905b03d4bc4e5255f3d5a10cf5182171578ebe19abeab32ebb11a806f1131947f2a06b7a077bd7e77ade7b15fe2882174b - languageName: node - linkType: hard - -"@octokit/types@npm:^9.0.0": - version: 9.3.2 - resolution: "@octokit/types@npm:9.3.2" - dependencies: - "@octokit/openapi-types": ^18.0.0 - checksum: 2925479aa378a4491762b4fcf381bdc7daca39b4e0b2dd7062bce5d74a32ed7d79d20d3c65ceaca6d105cf4b1f7417fea634219bf90f79a57d03e2dac629ec45 - languageName: node - linkType: hard - "@open-draft/until@npm:^1.0.3": version: 1.0.3 resolution: "@open-draft/until@npm:1.0.3" @@ -17079,13 +16983,6 @@ __metadata: languageName: node linkType: hard -"before-after-hook@npm:^2.2.0": - version: 2.2.3 - resolution: "before-after-hook@npm:2.2.3" - checksum: 0488c4ae12df758ca9d49b3bb27b47fd559677965c52cae7b335784724fb8bf96c42b6e5ba7d7afcbc31facb0e294c3ef717cc41c5bc2f7bd9e76f8b90acd31c - languageName: node - linkType: hard - "better-opn@npm:^2.1.1": version: 2.1.1 resolution: "better-opn@npm:2.1.1" @@ -20535,13 +20432,6 @@ __metadata: languageName: node linkType: hard -"deprecation@npm:^2.0.0": - version: 2.3.1 - resolution: "deprecation@npm:2.3.1" - checksum: 23d688ba66b74d09b908c40a76179418acbeeb0bfdf218c8075c58ad8d0c315130cb91aa3dffb623aa3a411a3569ce56c6460de6c8d69071c17fe6dd2442f032 - languageName: node - linkType: hard - "dequal@npm:^2.0.3": version: 2.0.3 resolution: "dequal@npm:2.0.3" @@ -25235,7 +25125,7 @@ __metadata: languageName: node linkType: hard -"graphql@npm:^15.4.0, graphql@npm:^15.5.1, graphql@npm:^15.7.2": +"graphql@npm:^15.5.1, graphql@npm:^15.7.2": version: 15.8.0 resolution: "graphql@npm:15.8.0" checksum: 30cc09b77170a9d1ed68e4c017ec8c5265f69501c96e4f34f8f6613f39a886c96dd9853eac925f212566ed651736334c8fe24ceae6c44e8d7625c95c3009a801 @@ -27245,7 +27135,7 @@ __metadata: languageName: node linkType: hard -"is-plain-object@npm:5.0.0, is-plain-object@npm:^5.0.0": +"is-plain-object@npm:5.0.0": version: 5.0.0 resolution: "is-plain-object@npm:5.0.0" checksum: 893e42bad832aae3511c71fd61c0bf61aa3a6d853061c62a307261842727d0d25f761ce9379f7ba7226d6179db2a3157efa918e7fe26360f3bf0842d9f28942c @@ -30338,7 +30228,7 @@ __metadata: languageName: node linkType: hard -"jsonc-parser@npm:^3.0.0, jsonc-parser@npm:^3.2.0": +"jsonc-parser@npm:^3.2.0": version: 3.2.0 resolution: "jsonc-parser@npm:3.2.0" checksum: 5a12d4d04dad381852476872a29dcee03a57439574e4181d91dca71904fcdcc5e8e4706c0a68a2c61ad9810e1e1c5806b5100d52d3e727b78f5cdc595401045b @@ -31662,7 +31552,7 @@ __metadata: languageName: node linkType: hard -"marked@npm:^4.0.15, marked@npm:^4.0.18": +"marked@npm:^4.0.15": version: 4.3.0 resolution: "marked@npm:4.3.0" bin: @@ -33034,7 +32924,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^5.0.1, minimatch@npm:^5.1.0": +"minimatch@npm:^5.0.1": version: 5.1.6 resolution: "minimatch@npm:5.1.6" dependencies: @@ -39412,8 +39302,6 @@ __metadata: "@babel/runtime": ^7.11.2 "@changesets/changelog-github": ^0.4.8 "@changesets/cli": ^2.26.0 - "@linear/sdk": ^1.22.0 - "@octokit/core": ^4.0.5 "@typescript-eslint/eslint-plugin": ^5.53.0 "@typescript-eslint/parser": ^5.53.0 axios: ^0.21.4 @@ -39443,12 +39331,6 @@ __metadata: ts-jest: ^26.5.6 ts-node: ^10.9.1 turbo: ^1.6.3 - typedoc: 0.23.10 - typedoc-frontmatter-plugin: "link:docs-util/typedoc-plugins/typedoc-frontmatter-plugin" - typedoc-monorepo-link-types: ^0.0.2 - typedoc-plugin-markdown: ^3.13.4 - typedoc-plugin-merge-modules: ^4.0.1 - typedoc-plugin-reference-excluder: ^1.0.0 typeorm: ^0.3.16 languageName: unknown linkType: soft @@ -40148,17 +40030,6 @@ __metadata: languageName: node linkType: hard -"shiki@npm:^0.10.1": - version: 0.10.1 - resolution: "shiki@npm:0.10.1" - dependencies: - jsonc-parser: ^3.0.0 - vscode-oniguruma: ^1.6.1 - vscode-textmate: 5.2.0 - checksum: cc4db3462722261cb9ce0f7c0dbe278af3b99ad57dfab77b80c4dc9c8e3198f1d3f3c3433044a731c16f7afede9e60747f8a62290fbbaa18c26026f7b94cde8b - languageName: node - linkType: hard - "should-equal@npm:^2.0.0": version: 2.0.0 resolution: "should-equal@npm:2.0.0" @@ -43125,66 +42996,6 @@ __metadata: languageName: node linkType: hard -"typedoc-frontmatter-plugin@link:docs-util/typedoc-plugins/typedoc-frontmatter-plugin::locator=root%40workspace%3A.": - version: 0.0.0-use.local - resolution: "typedoc-frontmatter-plugin@link:docs-util/typedoc-plugins/typedoc-frontmatter-plugin::locator=root%40workspace%3A." - languageName: node - linkType: soft - -"typedoc-monorepo-link-types@npm:^0.0.2": - version: 0.0.2 - resolution: "typedoc-monorepo-link-types@npm:0.0.2" - peerDependencies: - typedoc: 0.22.x - checksum: f282e6c0b1becdc36fd3cce5f4a79573b31098ec64c4e92bc17cc9001920e4e196b2973fa666f027643da5d34cbf3344c768a0ffd8f1907e04416b20c0af6ce6 - languageName: node - linkType: hard - -"typedoc-plugin-markdown@npm:^3.13.4": - version: 3.15.3 - resolution: "typedoc-plugin-markdown@npm:3.15.3" - dependencies: - handlebars: ^4.7.7 - peerDependencies: - typedoc: ">=0.24.0" - checksum: 573a5c103843b7b0035bedb0bac8ea34f842e8e63ade154d680c58fe6720e6fe7f9a48e3c3062021411d4710a4b06af32a6687d9d50b2c7a0512147dafeac060 - languageName: node - linkType: hard - -"typedoc-plugin-merge-modules@npm:^4.0.1": - version: 4.1.0 - resolution: "typedoc-plugin-merge-modules@npm:4.1.0" - peerDependencies: - typedoc: 0.23.x || 0.24.x - checksum: e57fdef4a07e8fb83ff6e3c49e6f6461fa6412552346c16ad6f861f9343255cc55aa6e55d9ff69bc90fc5ccd2a95b476169097d1fc6d2c3ee729bf6983364e84 - languageName: node - linkType: hard - -"typedoc-plugin-reference-excluder@npm:^1.0.0": - version: 1.1.3 - resolution: "typedoc-plugin-reference-excluder@npm:1.1.3" - peerDependencies: - typedoc: ">=0.22.0" - checksum: df3ffb7cade292d8f3001d41d541e11644b04b120c96ef7dad417ee4e75caf1aeffcfbb4ec025251c6510e82b690596087b9bdf79f3bbcdb8f968d1e5bb53e74 - languageName: node - linkType: hard - -"typedoc@npm:0.23.10": - version: 0.23.10 - resolution: "typedoc@npm:0.23.10" - dependencies: - lunr: ^2.3.9 - marked: ^4.0.18 - minimatch: ^5.1.0 - shiki: ^0.10.1 - peerDependencies: - typescript: 4.6.x || 4.7.x - bin: - typedoc: bin/typedoc - checksum: 634e805a608c699811a0fa10944823504f0023afd599037298700179f2293cd717a937b32cf885c6bcf4808334f3132aaa9c946e63b9131789a9a9b240cb0115 - languageName: node - linkType: hard - "typeorm@npm:^0.3.16": version: 0.3.17 resolution: "typeorm@npm:0.3.17" @@ -43644,13 +43455,6 @@ __metadata: languageName: node linkType: hard -"universal-user-agent@npm:^6.0.0": - version: 6.0.0 - resolution: "universal-user-agent@npm:6.0.0" - checksum: ebeb0206963666c13bcf9ebc86d0577c7daed5870c05cd34d4972ee7a43b9ef20679baf2a8c83bf1b71d899bae67243ac4982d84ddaf9ba0355ff76595819961 - languageName: node - linkType: hard - "universalify@npm:^0.1.0": version: 0.1.2 resolution: "universalify@npm:0.1.2" @@ -44361,20 +44165,6 @@ __metadata: languageName: node linkType: hard -"vscode-oniguruma@npm:^1.6.1": - version: 1.7.0 - resolution: "vscode-oniguruma@npm:1.7.0" - checksum: bef0073c665ddf8c86e51da94529c905856559e9aba97a9882f951acd572da560384775941ab6e7e8db94d9c578b25fefb951e4b73c37e8712e16b0231de2689 - languageName: node - linkType: hard - -"vscode-textmate@npm:5.2.0": - version: 5.2.0 - resolution: "vscode-textmate@npm:5.2.0" - checksum: 87c4786606cf7a49d78b690b37236f919db594ff81f1a405f9d9a0a9ee66ff3450fe51c0d8731f270268f7be550adffb6711a4bbc6f56d76b71abe41949817c7 - languageName: node - linkType: hard - "vue-template-compiler@npm:^2.6.11": version: 2.7.14 resolution: "vue-template-compiler@npm:2.7.14"