diff options
| author | Shinigami <[email protected]> | 2022-08-07 04:54:28 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-08-06 20:54:28 +0000 |
| commit | 51a88634092dbe17985e434572385af4e99d1022 (patch) | |
| tree | 197d605ffabbd765336de45b610a35437bf35c77 | |
| parent | 0668cfe393368f59feffbb0e96540603bc2d8755 (diff) | |
| download | faker-51a88634092dbe17985e434572385af4e99d1022.tar.xz faker-51a88634092dbe17985e434572385af4e99d1022.zip | |
docs: use vitepress v1 (#993)
| -rw-r--r-- | docs/.vitepress/config.ts | 204 | ||||
| -rw-r--r-- | docs/about/team.md | 4 | ||||
| -rw-r--r-- | docs/about/team/TeamMember.ts | 7 | ||||
| -rw-r--r-- | docs/about/team/TeamMember.vue | 76 | ||||
| -rw-r--r-- | docs/about/team/TeamPage.vue | 89 | ||||
| -rw-r--r-- | docs/about/team/members.json | 132 | ||||
| -rw-r--r-- | docs/guide/migration-guide-v5.md (renamed from docs/migration-guide-v5/index.md) | 0 | ||||
| -rw-r--r-- | docs/index.md | 45 | ||||
| -rw-r--r-- | package.json | 4 | ||||
| -rw-r--r-- | pnpm-lock.yaml | 340 | ||||
| -rw-r--r-- | scripts/apidoc.ts | 3 | ||||
| -rw-r--r-- | scripts/apidoc/signature.ts | 63 | ||||
| -rw-r--r-- | test/scripts/apidoc/signature.expected.json | 28 | ||||
| -rw-r--r-- | test/scripts/apidoc/signature.spec.ts | 11 |
14 files changed, 524 insertions, 482 deletions
diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index 91e7fd2f..9b013d2e 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -1,93 +1,7 @@ -import type { DefaultTheme } from 'vitepress'; import { defineConfig } from 'vitepress'; import { apiPages } from './api-pages'; import { currentVersion, oldVersions } from './versions'; -const nav: DefaultTheme.NavItem[] = [ - { text: 'Guide', link: '/guide/' }, - // { text: 'Playground', link: '/playground/' }, - { - text: 'Ecosystem', - items: [ - { text: 'Discord ', link: 'https://chat.fakerjs.dev' }, - { text: 'StackBlitz ', link: 'https://fakerjs.dev/new' }, - { text: 'Twitter ', link: 'https://twitter.com/faker_js' }, - ], - }, - { - text: 'About', - items: [ - { - text: 'Announcements', - link: '/about/announcements', - }, - { - text: 'Team', - link: '/about/team', - }, - ], - }, - { - text: currentVersion, - items: [ - { - text: 'Release Notes', - link: 'https://github.com/faker-js/faker/releases', - }, - ...oldVersions.map(({ version, link }) => ({ - text: version, - link, - })), - ], - }, -]; - -const sidebar: DefaultTheme.MultiSideBarConfig = { - '/about': [ - { - text: 'About', - children: [ - { - text: 'Announcements', - link: '/about/announcements', - children: [ - { text: '2022-01-14', link: '/about/announcements/2022-01-14' }, - ], - }, - { - text: 'Team', - link: '/about/team', - }, - ], - }, - ], - '/': [ - { - text: 'Guide', - children: [ - { - text: 'Getting Started', - link: '/guide/', - }, - ], - }, - { - text: 'API', - children: apiPages, - }, - { - text: 'Migrating from Faker v5', - link: '/migration-guide-v5/', - }, - ], -}; - -const algolia: DefaultTheme.AlgoliaSearchOptions = { - apiKey: process.env.API_KEY, - appId: process.env.APP_ID, - indexName: 'fakerjs', -}; - const description = 'Generate massive amounts of fake (but reasonable) data for testing and development.'; const image = 'https://fakerjs.dev/social-image.png'; @@ -95,6 +9,7 @@ const image = 'https://fakerjs.dev/social-image.png'; export default defineConfig({ title: 'Faker', description, + head: [ ['link', { rel: 'icon', href: '/logo.svg' }], ['meta', { name: 'theme-color', content: '#40af7c' }], @@ -141,15 +56,116 @@ export default defineConfig({ }, ], ], + themeConfig: { - repo: 'faker-js/faker', logo: '/logo.svg', - docsDir: 'docs', - docsBranch: 'main', - editLinks: true, - editLinkText: 'Suggest changes to this page', - nav, - sidebar, - algolia, + + editLink: { + pattern: 'https://github.com/faker-js/faker/edit/main/docs/:path', + text: 'Suggest changes to this page', + }, + + socialLinks: [ + { icon: 'twitter', link: 'https://twitter.com/faker_js' }, + { icon: 'discord', link: 'https://chat.fakerjs.dev' }, + { icon: 'github', link: 'https://github.com/faker-js/faker' }, + ], + + algolia: { + apiKey: process.env.API_KEY, + appId: process.env.APP_ID, + indexName: 'fakerjs', + }, + + footer: { + message: 'Released under the MIT License.', + copyright: 'Copyright ยฉ 2022-present Faker.', + }, + + nav: [ + { text: 'Guide', link: '/guide/' }, + // { text: 'Playground', link: '/playground/' }, + { + text: 'Ecosystem', + items: [{ text: 'StackBlitz ', link: 'https://fakerjs.dev/new' }], + }, + { + text: 'About', + items: [ + { + text: 'Announcements', + link: '/about/announcements', + }, + { + text: 'Team', + link: '/about/team', + }, + ], + }, + { + text: currentVersion, + items: [ + { + text: 'Release Notes', + link: 'https://github.com/faker-js/faker/releases', + }, + ...oldVersions.map(({ version, link }) => ({ + text: version, + link, + })), + ], + }, + ], + + sidebar: { + '/guide/': [ + { + text: 'Guide', + items: [ + { + text: 'Getting Started', + link: '/guide/', + }, + ], + }, + { + text: 'API', + items: apiPages, + }, + { + text: 'Migrations', + items: [ + { + text: 'Migrating from Faker v5', + link: '/guide/migration-guide-v5', + }, + ], + }, + ], + '/api/': [ + { + text: 'API', + items: apiPages, + }, + ], + '/about/': [ + { + text: 'About', + items: [ + { + text: 'Announcements', + link: '/about/announcements', + // children: [ + // { text: '2022-01-14', link: '/about/announcements/2022-01-14' }, + // ], + }, + { + text: 'Team', + link: '/about/team', + }, + ], + }, + ], + }, }, }); diff --git a/docs/about/team.md b/docs/about/team.md index 9013ee90..a3502b76 100644 --- a/docs/about/team.md +++ b/docs/about/team.md @@ -1,9 +1,11 @@ --- +layout: page title: Team +description: The development of Faker is guided by an international team. --- <script setup> - import TeamPage from './team/TeamPage.vue' +import TeamPage from './team/TeamPage.vue' </script> <TeamPage /> diff --git a/docs/about/team/TeamMember.ts b/docs/about/team/TeamMember.ts deleted file mode 100644 index 01fe3771..00000000 --- a/docs/about/team/TeamMember.ts +++ /dev/null @@ -1,7 +0,0 @@ -export interface Member { - readonly name: string; - readonly github: string; - readonly gitlab?: string; - readonly twitter?: string; - readonly roles: readonly string[]; -} diff --git a/docs/about/team/TeamMember.vue b/docs/about/team/TeamMember.vue deleted file mode 100644 index 03514a1f..00000000 --- a/docs/about/team/TeamMember.vue +++ /dev/null @@ -1,76 +0,0 @@ -<script lang="ts" setup> -import type { Member } from './TeamMember'; - -defineProps<{ member: Member }>(); -</script> - -<template> - <div class="TeamMember"> - <div class="avatar"> - <img :src="'https://github.com/' + member.github + '.png'" width="120" /> - </div> - <div class="info"> - <div class="name"> - <b>{{ member.name }}</b> - </div> - <div class="socials"> - <a :href="'https://github.com/' + member.github"> - <img - src="https://img.icons8.com/ios-glyphs/344/github.png" - alt="GitHub" - title="GitHub" - width="32" - /> - </a> - <a v-if="member.gitlab" :href="'https://gitlab.com/' + member.gitlab"> - <img - src="https://img.icons8.com/color/344/gitlab.png" - alt="GitLab" - title="GitLab" - width="32" - /> - </a> - <a - v-if="member.twitter" - :href="'https://twitter.com/' + member.twitter" - > - <img - src="https://img.icons8.com/color/344/twitter.png" - alt="Twitter" - title="Twitter" - width="32" - /> - </a> - </div> - <div v-if="member.roles?.length" class="roles"> - <span>Roles: </span> - <template v-for="(role, index) in member.roles"> - <i>{{ role }}</i> - <span v-if="index < member.roles.length - 1">, </span> - </template> - </div> - </div> - </div> -</template> - -<style scoped> -.TeamMember { - padding: 0.5em; - - display: flex; - align-items: center; -} - -.TeamMember .avatar { - flex: 0 0 120px; - margin-right: 1em; -} - -.TeamMember .avatar img { - border-radius: 50%; -} - -.TeamMember .roles i { - white-space: nowrap; -} -</style> diff --git a/docs/about/team/TeamPage.vue b/docs/about/team/TeamPage.vue index 99801f17..67171917 100644 --- a/docs/about/team/TeamPage.vue +++ b/docs/about/team/TeamPage.vue @@ -1,60 +1,41 @@ -<script lang="ts" setup> -import membersData from './members.json'; -import TeamMember from './TeamMember.vue'; +<script setup lang="ts"> +import { + VPTeamMembers, + VPTeamPage, + VPTeamPageSection, + VPTeamPageTitle, +} from 'vitepress/theme'; +import { contributors, core, emeriti } from './members.json'; </script> <template> - <div class="TeamPage"> - <div class="core"> - <h2>Core Team</h2> - <div class="members"> - <TeamMember - v-for="member in membersData.core" - :key="member.name" - :member="member" - /> - </div> - </div> + <VPTeamPage> + <VPTeamPageTitle> + <template #title>Meet the Team</template> + <template #lead> + The development of Faker is guided by an international team, some of + whom have chosen to be featured below. + </template> + </VPTeamPageTitle> - <div class="contributors"> - <h2>Contributors</h2> - <div class="members"> - <TeamMember - v-for="member in membersData.contributors" - :key="member.name" - :member="member" - /> - </div> - </div> + <VPTeamMembers :members="core" /> - <div class="previous"> - <h2>Honorable previous members</h2> - <div class="members"> - <TeamMember - v-for="member in membersData.previous" - :key="member.name" - :member="member" - /> - </div> - </div> - </div> -</template> - -<style scoped> -.TeamPage .members { - display: flex; - flex-direction: row; - flex-wrap: wrap; - width: 100%; -} + <VPTeamPageSection> + <template #title>Team Contributors</template> + <template #members> + <VPTeamMembers :members="contributors" /> + </template> + </VPTeamPageSection> -.TeamPage .members .TeamMember { - width: 50%; -} - -@media (max-width: 120rem) { - .TeamPage .members .TeamMember { - width: 100%; - } -} -</style> + <VPTeamPageSection> + <template #title>Team Emeriti</template> + <template #lead> + Here we honor some no-longer-active team members who have made valuable + contributions in the past. + </template> + <template #members> + <VPTeamMembers size="small" :members="emeriti" /> + </template> + </VPTeamPageSection> + </VPTeamPage> +</template> diff --git a/docs/about/team/members.json b/docs/about/team/members.json index 31018175..7732eab2 100644 --- a/docs/about/team/members.json +++ b/docs/about/team/members.json @@ -1,77 +1,141 @@ { "core": [ { + "avatar": "https://github.com/Shinigami92.png", "name": "Christopher Quadflieg", - "github": "Shinigami92", - "twitter": "Shini_92", - "roles": ["Code Maintainer"] + "title": "Code Maintainer", + "org": "Faker", + "orgLink": "https://fakerjs.dev", + "desc": "Passionate TypeScript enthusiast. Also core member of Vite.", + "links": [ + { "icon": "github", "link": "https://github.com/Shinigami92" }, + { "icon": "twitter", "link": "https://twitter.com/Shini_92" } + ], + "sponsor": "https://github.com/sponsors/Shinigami92" }, { + "avatar": "https://github.com/damienwebdev.png", "name": "Damien Retzinger", - "github": "damienwebdev", - "twitter": "damienwebdev", - "roles": ["Advisor"] + "title": "Advisor", + "org": "", + "orgLink": "", + "desc": "", + "links": [ + { "icon": "github", "link": "https://github.com/damienwebdev" }, + { "icon": "twitter", "link": "https://twitter.com/damienwebdev" } + ], + "sponsor": "https://github.com/sponsors/damienwebdev" }, { + "avatar": "https://github.com/prisis.png", "name": "Daniel Bannert", - "github": "prisis", - "twitter": "_prisis_", - "roles": ["Organization Owner"] + "title": "Organization Owner", + "org": "", + "orgLink": "", + "desc": "", + "links": [ + { "icon": "github", "link": "https://github.com/prisis" }, + { "icon": "twitter", "link": "https://twitter.com/_prisis_" } + ], + "sponsor": "https://github.com/sponsors/prisis" }, { + "avatar": "https://github.com/ST-DDT.png", "name": "Daniel Theuke", - "github": "ST-DDT", - "roles": ["Code Maintainer", "Docs Automation"] + "title": "Code Maintainer | Docs Automation", + "org": "", + "orgLink": "", + "desc": "", + "links": [{ "icon": "github", "link": "https://github.com/ST-DDT" }], + "sponsor": "https://github.com/sponsors/ST-DDT" }, { + "avatar": "https://github.com/clarkerican.png", "name": "Erica Clark", - "github": "clarkerican", - "twitter": "clarkerican", - "roles": [] + "title": "", + "org": "", + "orgLink": "", + "desc": "", + "links": [ + { "icon": "github", "link": "https://github.com/clarkerican" }, + { "icon": "twitter", "link": "https://twitter.com/clarkerican" } + ] }, { + "avatar": "https://github.com/griest024.png", "name": "griest", - "github": "griest024", - "gitlab": "griest", - "roles": ["Code Reviewer"] + "title": "Code Reviewer", + "org": "", + "orgLink": "", + "desc": "", + "links": [ + { "icon": "github", "link": "https://github.com/griest024" }, + { "icon": "gitlab", "link": "https://gitlab.com/griest" } + ] }, { + "avatar": "https://github.com/JessicaSachs.png", "name": "Jessica Sachs", - "github": "JessicaSachs", - "twitter": "_JessicaSachs", - "roles": ["Press Officer"] + "title": "Press Officer", + "org": "", + "orgLink": "", + "desc": "", + "links": [ + { "icon": "github", "link": "https://github.com/JessicaSachs" }, + { "icon": "twitter", "link": "https://twitter.com/_JessicaSachs" } + ], + "sponsor": "https://github.com/sponsors/JessicaSachs" } ], "contributors": [ { + "avatar": "https://github.com/import-brain.png", "name": "Eric Cheng", - "github": "import-brain", - "roles": ["Triage", "Contributor"] + "title": "Triage", + "org": "", + "orgLink": "", + "desc": "", + "links": [{ "icon": "github", "link": "https://github.com/import-brain" }] }, { + "avatar": "https://github.com/xDivisionByZerox.png", "name": "Leyla Jรคhnig", - "github": "xDivisionByZerox", - "roles": ["Contributor"] + "title": "Contributor", + "desc": "", + "links": [ + { "icon": "github", "link": "https://github.com/xDivisionByZerox" } + ] }, { + "avatar": "https://github.com/pkuczynski.png", "name": "Piotr Kuczynski", - "github": "pkuczynski", - "twitter": "PiotrKuczynski", - "roles": ["Contributor"] + "title": "Contributor", + "org": "", + "orgLink": "", + "desc": "", + "links": [ + { "icon": "github", "link": "https://github.com/pkuczynski" }, + { "icon": "twitter", "link": "https://twitter.com/PiotrKuczynski" } + ], + "sponsor": "https://github.com/sponsors/pkuczynski" } ], - "previous": [ + "emeriti": [ { + "avatar": "https://github.com/MateusDadalto.png", "name": "Mateus Dadalto", - "github": "MateusDadalto", - "twitter": "MateusD", - "roles": [] + "links": [ + { "icon": "github", "link": "https://github.com/MateusDadalto" }, + { "icon": "twitter", "link": "https://twitter.com/MateusD" } + ] }, { + "avatar": "https://github.com/mmahalwy.png", "name": "Mo Mahallawy", - "github": "mmahalwy", - "twitter": "mmahalwy", - "roles": [] + "links": [ + { "icon": "github", "link": "https://github.com/mmahalwy" }, + { "icon": "twitter", "link": "https://twitter.com/mmahalwy" } + ] } ] } diff --git a/docs/migration-guide-v5/index.md b/docs/guide/migration-guide-v5.md index 1fcc229f..1fcc229f 100644 --- a/docs/migration-guide-v5/index.md +++ b/docs/guide/migration-guide-v5.md diff --git a/docs/index.md b/docs/index.md index 7a4b9300..8f5f6b55 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,27 +1,38 @@ --- -home: true -title: 'Faker' -heroImage: /logo.svg -heroAlt: 'Cartoon logo of a panda magician' -heroText: 'Faker' -tagline: 'Generate massive amounts of fake (but realistic) data for testing and development.' -actionText: Get Started -actionLink: /guide/ -altActionText: Star -altActionLink: https://github.com/faker-js/faker +layout: home + +hero: + name: Faker + text: '' + tagline: Generate massive amounts of fake (but realistic) data for testing and development. + image: + src: /logo.svg + alt: Cartoon logo of a panda magician + actions: + - theme: brand + text: Get Started + link: /guide/ + - theme: alt + text: View on GitHub + link: https://github.com/faker-js/faker features: - - title: ๐ Products + - icon: ๐ + title: Products details: Generate Prices, Product Names, Adjectives, and Descriptions. - - title: ๐ธ Finance + - icon: ๐ธ + title: Finance details: Create stubbed out Account Details, Transactions, and Crypto Addresses. - - title: ๐ Addresses + - icon: ๐ + title: Addresses details: Generate valid Addresses, Zip Codes, Street Names, States, and Countries! - - title: ๐พ Hacker Jargon + - icon: ๐พ + title: Hacker Jargon details: โTry to reboot the SQL bus, maybe it will bypass the virtual application!โ - - title: โฐ Time-based Data + - icon: โฐ + title: Time-based Data details: Past, present, future, recent, soon... whenever! - - title: ๐ Localization + - icon: ๐ + title: Localization details: Set a locale to generate realistic looking Names, Addresses, and Phone Numbers. -footer: MIT Licensed 2022 --- diff --git a/package.json b/package.json index 0ca24346..f1dab00f 100644 --- a/package.json +++ b/package.json @@ -95,7 +95,7 @@ "devDependencies": { "@algolia/client-search": "~4.14.2", "@types/markdown-it": "~12.2.3", - "@types/node": "~18.0.6", + "@types/node": "~18.6.4", "@types/prettier": "~2.6.4", "@types/react": "~18.0.15", "@types/sanitize-html": "~2.6.2", @@ -132,7 +132,7 @@ "typescript": "~4.7.4", "validator": "~13.7.0", "vite": "~3.0.4", - "vitepress": "~0.22.4", + "vitepress": "1.0.0-alpha.4", "vitest": "~0.20.3" }, "packageManager": "[email protected]", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9c019c43..d7744c21 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3,7 +3,7 @@ lockfileVersion: 5.4 specifiers: '@algolia/client-search': ~4.14.2 '@types/markdown-it': ~12.2.3 - '@types/node': ~18.0.6 + '@types/node': ~18.6.4 '@types/prettier': ~2.6.4 '@types/react': ~18.0.15 '@types/sanitize-html': ~2.6.2 @@ -40,13 +40,13 @@ specifiers: typescript: ~4.7.4 validator: ~13.7.0 vite: ~3.0.4 - vitepress: ~0.22.4 + vitepress: 1.0.0-alpha.4 vitest: ~0.20.3 devDependencies: '@algolia/client-search': 4.14.2 '@types/markdown-it': 12.2.3 - '@types/node': 18.0.6 + '@types/node': 18.6.4 '@types/prettier': 2.6.4 '@types/react': 18.0.15 '@types/sanitize-html': 2.6.2 @@ -83,7 +83,7 @@ devDependencies: typescript: 4.7.4 validator: 13.7.0 vite: 3.0.4 - vitepress: 0.22.4_imvgwgjzmeisgkq5uchhrryg6y + vitepress: 1.0.0-alpha.4_imvgwgjzmeisgkq5uchhrryg6y vitest: 0.20.3_a75h7wshsl437ycz6mdvk7ygqe packages: @@ -94,7 +94,7 @@ packages: '@algolia/autocomplete-shared': 1.7.1 dev: true - /@algolia/autocomplete-preset-algolia/1.7.1_bynjdelmk7kqfxl6rolmquprhm: + /@algolia/autocomplete-preset-algolia/1.7.1_qs6lk5nhygj2o3hj4sf6xnr724: resolution: {integrity: sha512-pJwmIxeJCymU1M6cGujnaIYcY3QPOVYZOXhFkWVM7IxKzy272BwCvMFMyc5NpG/QmiObBxjo7myd060OeTNJXg==} peerDependencies: '@algolia/client-search': ^4.9.1 @@ -102,55 +102,44 @@ packages: dependencies: '@algolia/autocomplete-shared': 1.7.1 '@algolia/client-search': 4.14.2 - algoliasearch: 4.13.1 + algoliasearch: 4.14.2 dev: true /@algolia/autocomplete-shared/1.7.1: resolution: {integrity: sha512-eTmGVqY3GeyBTT8IWiB2K5EuURAqhnumfktAEoHxfDY2o7vg2rSnO16ZtIG0fMgt3py28Vwgq42/bVEuaQV7pg==} dev: true - /@algolia/cache-browser-local-storage/4.13.1: - resolution: {integrity: sha512-UAUVG2PEfwd/FfudsZtYnidJ9eSCpS+LW9cQiesePQLz41NAcddKxBak6eP2GErqyFagSlnVXe/w2E9h2m2ttg==} + /@algolia/cache-browser-local-storage/4.14.2: + resolution: {integrity: sha512-FRweBkK/ywO+GKYfAWbrepewQsPTIEirhi1BdykX9mxvBPtGNKccYAxvGdDCumU1jL4r3cayio4psfzKMejBlA==} dependencies: - '@algolia/cache-common': 4.13.1 - dev: true - - /@algolia/cache-common/4.13.1: - resolution: {integrity: sha512-7Vaf6IM4L0Jkl3sYXbwK+2beQOgVJ0mKFbz/4qSxKd1iy2Sp77uTAazcX+Dlexekg1fqGUOSO7HS4Sx47ZJmjA==} + '@algolia/cache-common': 4.14.2 dev: true /@algolia/cache-common/4.14.2: resolution: {integrity: sha512-SbvAlG9VqNanCErr44q6lEKD2qoK4XtFNx9Qn8FK26ePCI8I9yU7pYB+eM/cZdS9SzQCRJBbHUumVr4bsQ4uxg==} dev: true - /@algolia/cache-in-memory/4.13.1: - resolution: {integrity: sha512-pZzybCDGApfA/nutsFK1P0Sbsq6fYJU3DwIvyKg4pURerlJM4qZbB9bfLRef0FkzfQu7W11E4cVLCIOWmyZeuQ==} - dependencies: - '@algolia/cache-common': 4.13.1 - dev: true - - /@algolia/client-account/4.13.1: - resolution: {integrity: sha512-TFLiZ1KqMiir3FNHU+h3b0MArmyaHG+eT8Iojio6TdpeFcAQ1Aiy+2gb3SZk3+pgRJa/BxGmDkRUwE5E/lv3QQ==} + /@algolia/cache-in-memory/4.14.2: + resolution: {integrity: sha512-HrOukWoop9XB/VFojPv1R5SVXowgI56T9pmezd/djh2JnVN/vXswhXV51RKy4nCpqxyHt/aGFSq2qkDvj6KiuQ==} dependencies: - '@algolia/client-common': 4.13.1 - '@algolia/client-search': 4.13.1 - '@algolia/transporter': 4.13.1 + '@algolia/cache-common': 4.14.2 dev: true - /@algolia/client-analytics/4.13.1: - resolution: {integrity: sha512-iOS1JBqh7xaL5x00M5zyluZ9+9Uy9GqtYHv/2SMuzNW1qP7/0doz1lbcsP3S7KBbZANJTFHUOfuqyRLPk91iFA==} + /@algolia/client-account/4.14.2: + resolution: {integrity: sha512-WHtriQqGyibbb/Rx71YY43T0cXqyelEU0lB2QMBRXvD2X0iyeGl4qMxocgEIcbHyK7uqE7hKgjT8aBrHqhgc1w==} dependencies: - '@algolia/client-common': 4.13.1 - '@algolia/client-search': 4.13.1 - '@algolia/requester-common': 4.13.1 - '@algolia/transporter': 4.13.1 + '@algolia/client-common': 4.14.2 + '@algolia/client-search': 4.14.2 + '@algolia/transporter': 4.14.2 dev: true - /@algolia/client-common/4.13.1: - resolution: {integrity: sha512-LcDoUE0Zz3YwfXJL6lJ2OMY2soClbjrrAKB6auYVMNJcoKZZ2cbhQoFR24AYoxnGUYBER/8B+9sTBj5bj/Gqbg==} + /@algolia/client-analytics/4.14.2: + resolution: {integrity: sha512-yBvBv2mw+HX5a+aeR0dkvUbFZsiC4FKSnfqk9rrfX+QrlNOKEhCG0tJzjiOggRW4EcNqRmaTULIYvIzQVL2KYQ==} dependencies: - '@algolia/requester-common': 4.13.1 - '@algolia/transporter': 4.13.1 + '@algolia/client-common': 4.14.2 + '@algolia/client-search': 4.14.2 + '@algolia/requester-common': 4.14.2 + '@algolia/transporter': 4.14.2 dev: true /@algolia/client-common/4.14.2: @@ -160,20 +149,12 @@ packages: '@algolia/transporter': 4.14.2 dev: true - /@algolia/client-personalization/4.13.1: - resolution: {integrity: sha512-1CqrOW1ypVrB4Lssh02hP//YxluoIYXAQCpg03L+/RiXJlCs+uIqlzC0ctpQPmxSlTK6h07kr50JQoYH/TIM9w==} - dependencies: - '@algolia/client-common': 4.13.1 - '@algolia/requester-common': 4.13.1 - '@algolia/transporter': 4.13.1 - dev: true - - /@algolia/client-search/4.13.1: - resolution: {integrity: sha512-YQKYA83MNRz3FgTNM+4eRYbSmHi0WWpo019s5SeYcL3HUan/i5R09VO9dk3evELDFJYciiydSjbsmhBzbpPP2A==} + /@algolia/client-personalization/4.14.2: + resolution: {integrity: sha512-ACCoLi0cL8CBZ1W/2juehSltrw2iqsQBnfiu/Rbl9W2yE6o2ZUb97+sqN/jBqYNQBS+o0ekTMKNkQjHHAcEXNw==} dependencies: - '@algolia/client-common': 4.13.1 - '@algolia/requester-common': 4.13.1 - '@algolia/transporter': 4.13.1 + '@algolia/client-common': 4.14.2 + '@algolia/requester-common': 4.14.2 + '@algolia/transporter': 4.14.2 dev: true /@algolia/client-search/4.14.2: @@ -184,46 +165,30 @@ packages: '@algolia/transporter': 4.14.2 dev: true - /@algolia/logger-common/4.13.1: - resolution: {integrity: sha512-L6slbL/OyZaAXNtS/1A8SAbOJeEXD5JcZeDCPYDqSTYScfHu+2ePRTDMgUTY4gQ7HsYZ39N1LujOd8WBTmM2Aw==} - dev: true - /@algolia/logger-common/4.14.2: resolution: {integrity: sha512-/JGlYvdV++IcMHBnVFsqEisTiOeEr6cUJtpjz8zc0A9c31JrtLm318Njc72p14Pnkw3A/5lHHh+QxpJ6WFTmsA==} dev: true - /@algolia/logger-console/4.13.1: - resolution: {integrity: sha512-7jQOTftfeeLlnb3YqF8bNgA2GZht7rdKkJ31OCeSH2/61haO0tWPoNRjZq9XLlgMQZH276pPo0NdiArcYPHjCA==} + /@algolia/logger-console/4.14.2: + resolution: {integrity: sha512-8S2PlpdshbkwlLCSAB5f8c91xyc84VM9Ar9EdfE9UmX+NrKNYnWR1maXXVDQQoto07G1Ol/tYFnFVhUZq0xV/g==} dependencies: - '@algolia/logger-common': 4.13.1 + '@algolia/logger-common': 4.14.2 dev: true - /@algolia/requester-browser-xhr/4.13.1: - resolution: {integrity: sha512-oa0CKr1iH6Nc7CmU6RE7TnXMjHnlyp7S80pP/LvZVABeJHX3p/BcSCKovNYWWltgTxUg0U1o+2uuy8BpMKljwA==} + /@algolia/requester-browser-xhr/4.14.2: + resolution: {integrity: sha512-CEh//xYz/WfxHFh7pcMjQNWgpl4wFB85lUMRyVwaDPibNzQRVcV33YS+63fShFWc2+42YEipFGH2iPzlpszmDw==} dependencies: - '@algolia/requester-common': 4.13.1 - dev: true - - /@algolia/requester-common/4.13.1: - resolution: {integrity: sha512-eGVf0ID84apfFEuXsaoSgIxbU3oFsIbz4XiotU3VS8qGCJAaLVUC5BUJEkiFENZIhon7hIB4d0RI13HY4RSA+w==} + '@algolia/requester-common': 4.14.2 dev: true /@algolia/requester-common/4.14.2: resolution: {integrity: sha512-73YQsBOKa5fvVV3My7iZHu1sUqmjjfs9TteFWwPwDmnad7T0VTCopttcsM3OjLxZFtBnX61Xxl2T2gmG2O4ehg==} dev: true - /@algolia/requester-node-http/4.13.1: - resolution: {integrity: sha512-7C0skwtLdCz5heKTVe/vjvrqgL/eJxmiEjHqXdtypcE5GCQCYI15cb+wC4ytYioZDMiuDGeVYmCYImPoEgUGPw==} + /@algolia/requester-node-http/4.14.2: + resolution: {integrity: sha512-oDbb02kd1o5GTEld4pETlPZLY0e+gOSWjWMJHWTgDXbv9rm/o2cF7japO6Vj1ENnrqWvLBmW1OzV9g6FUFhFXg==} dependencies: - '@algolia/requester-common': 4.13.1 - dev: true - - /@algolia/transporter/4.13.1: - resolution: {integrity: sha512-pICnNQN7TtrcYJqqPEXByV8rJ8ZRU2hCiIKLTLRyNpghtQG3VAFk6fVtdzlNfdUGZcehSKGarPIZEHlQXnKjgw==} - dependencies: - '@algolia/cache-common': 4.13.1 - '@algolia/logger-common': 4.13.1 - '@algolia/requester-common': 4.13.1 + '@algolia/requester-common': 4.14.2 dev: true /@algolia/transporter/4.14.2: @@ -241,6 +206,11 @@ packages: '@babel/highlight': 7.18.6 dev: true + /@babel/helper-string-parser/7.18.10: + resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-validator-identifier/7.18.6: resolution: {integrity: sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==} engines: {node: '>=6.9.0'} @@ -255,18 +225,19 @@ packages: js-tokens: 4.0.0 dev: true - /@babel/parser/7.18.8: - resolution: {integrity: sha512-RSKRfYX20dyH+elbJK2uqAkVyucL+xXzhqlMD5/ZXx+dAAwpyB7HsvnHe/ZUGOF+xLr5Wx9/JoXVTj6BQE2/oA==} + /@babel/parser/7.18.11: + resolution: {integrity: sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.18.8 + '@babel/types': 7.18.10 dev: true - /@babel/types/7.18.8: - resolution: {integrity: sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==} + /@babel/types/7.18.10: + resolution: {integrity: sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==} engines: {node: '>=6.9.0'} dependencies: + '@babel/helper-string-parser': 7.18.10 '@babel/helper-validator-identifier': 7.18.6 to-fast-properties: 2.0.0 dev: true @@ -315,14 +286,14 @@ packages: - supports-color dev: true - /@docsearch/css/3.1.1: - resolution: {integrity: sha512-utLgg7E1agqQeqCJn05DWC7XXMk4tMUUnL7MZupcknRu2OzGN13qwey2qA/0NAKkVBGugiWtON0+rlU0QIPojg==} + /@docsearch/css/3.2.0: + resolution: {integrity: sha512-jnNrO2JVYYhj2pP2FomlHIy6220n6mrLn2t9v2/qc+rM7M/fbIcKMgk9ky4RN+L/maUEmteckzg6/PIYoAAXJg==} dev: true - /@docsearch/js/3.1.1_imvgwgjzmeisgkq5uchhrryg6y: - resolution: {integrity: sha512-bt7l2aKRoSnLUuX+s4LVQ1a7AF2c9myiZNv5uvQCePG5tpvVGpwrnMwqVXOUJn9q6FwVVhOrQMO/t+QmnnAEUw==} + /@docsearch/js/3.2.0_imvgwgjzmeisgkq5uchhrryg6y: + resolution: {integrity: sha512-FEgXW8a+ZKBjSDteFPsKQ7Hlzk6+18A2Y7NffjV+VTsE7P3uTvHPKHKDCeYMnAgXTatRCGHWCfP7YImTSwEFQA==} dependencies: - '@docsearch/react': 3.1.1_imvgwgjzmeisgkq5uchhrryg6y + '@docsearch/react': 3.2.0_imvgwgjzmeisgkq5uchhrryg6y preact: 10.10.0 transitivePeerDependencies: - '@algolia/client-search' @@ -331,18 +302,18 @@ packages: - react-dom dev: true - /@docsearch/react/3.1.1_imvgwgjzmeisgkq5uchhrryg6y: - resolution: {integrity: sha512-cfoql4qvtsVRqBMYxhlGNpvyy/KlCoPqjIsJSZYqYf9AplZncKjLBTcwBu6RXFMVCe30cIFljniI4OjqAU67pQ==} + /@docsearch/react/3.2.0_imvgwgjzmeisgkq5uchhrryg6y: + resolution: {integrity: sha512-ATS3w5JBgQGQF0kHn5iOAPfnCCaoLouZQMmI7oENV//QMFrYbjhUZxBU9lIwAT7Rzybud+Jtb4nG5IEjBk3Ixw==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' react: '>= 16.8.0 < 19.0.0' react-dom: '>= 16.8.0 < 19.0.0' dependencies: '@algolia/autocomplete-core': 1.7.1 - '@algolia/autocomplete-preset-algolia': 1.7.1_bynjdelmk7kqfxl6rolmquprhm - '@docsearch/css': 3.1.1 + '@algolia/autocomplete-preset-algolia': 1.7.1_qs6lk5nhygj2o3hj4sf6xnr724 + '@docsearch/css': 3.2.0 '@types/react': 18.0.15 - algoliasearch: 4.13.1 + algoliasearch: 4.14.2 react: 18.2.0 react-dom: [email protected] transitivePeerDependencies: @@ -358,8 +329,8 @@ packages: jsdoc-type-pratt-parser: 3.1.0 dev: true - /@esbuild-kit/cjs-loader/2.3.1: - resolution: {integrity: sha512-ov6ALYD9xZSPoo5mmGOQtEC/b0xXeUlPy65p8aHMHLF4DfBEe8Y+iquH2lTDsy6Iskc1uMTadF+SVADTSTNJMA==} + /@esbuild-kit/cjs-loader/2.3.2: + resolution: {integrity: sha512-3UIFKrGfq2d2R2A/SpJaeHTP5z3nrOnVMxE+cNpOuuW+Lotm0Sfbc9lVHCjcxaxgcx0MKI7g2FvxvWlylzDRKg==} dependencies: '@esbuild-kit/core-utils': 2.1.0 get-tsconfig: 4.2.0 @@ -372,8 +343,8 @@ packages: source-map-support: 0.5.21 dev: true - /@esbuild-kit/esm-loader/2.4.1: - resolution: {integrity: sha512-6x44rygVfNODm27v0RW3wX5y61mqSrXDvB39G0nomgWWqxG3mjiKtPSwrFppdkrA39QIqDgVlD4gJmPOxnleSw==} + /@esbuild-kit/esm-loader/2.4.2: + resolution: {integrity: sha512-N9dPKAj8WOx6djVnStgILWXip4fjDcBk9L7azO0/uQDpu8Ee0eaL78mkN4Acid9BzvNAKWwdYXFJZnsVahNEew==} dependencies: '@esbuild-kit/core-utils': 2.1.0 get-tsconfig: 4.2.0 @@ -395,7 +366,7 @@ packages: ajv: 6.12.6 debug: 4.3.4 espree: 9.3.3 - globals: 13.16.0 + globals: 13.17.0 ignore: 5.2.0 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -512,12 +483,12 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node/14.18.22: - resolution: {integrity: sha512-qzaYbXVzin6EPjghf/hTdIbnVW1ErMx8rPzwRNJhlbyJhu2SyqlvjGOY/tbUt6VFyzg56lROcOeSQRInpt63Yw==} + /@types/node/14.18.23: + resolution: {integrity: sha512-MhbCWN18R4GhO8ewQWAFK4TGQdBpXWByukz7cWyJmXhvRuCIaM/oWytGPqVmDzgEnnaIc9ss6HbU5mUi+vyZPA==} dev: true - /@types/node/18.0.6: - resolution: {integrity: sha512-/xUq6H2aQm261exT6iZTMifUySEt4GR5KX8eYyY+C4MSNPqSh9oNIP7tz2GLKTlFaiBbgZNxffoR3CVRG+cljw==} + /@types/node/18.6.4: + resolution: {integrity: sha512-I4BD3L+6AWiUobfxZ49DlU43gtI+FTHSv9pE2Zekg6KjMpre4ByusaljW3vYSLJrvQ1ck1hUaeVu8HVlY3vzHg==} dev: true /@types/normalize-package-data/2.4.1: @@ -562,11 +533,15 @@ packages: resolution: {integrity: sha512-9rQHeAqz6Jw3gDhttkmWetoriW5FPbxylv/6h6mXtaj2NKRcOvOmvfcswVdLVpbuy10NrO486K3lCoLgoIhiIA==} dev: true + /@types/web-bluetooth/0.0.14: + resolution: {integrity: sha512-5d2RhCard1nQUC3aHcq/gHzWYO6K0WJmAbjO7mQJgCQKtZpgXxv1rOM6O/dBDhDYYVutk1sciOgNSe+5YyfM8A==} + dev: true + /@types/yauzl/2.10.0: resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} requiresBuild: true dependencies: - '@types/node': 18.0.6 + '@types/node': 18.6.4 dev: true optional: true @@ -716,7 +691,7 @@ packages: /@vue/compiler-core/3.2.37: resolution: {integrity: sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==} dependencies: - '@babel/parser': 7.18.8 + '@babel/parser': 7.18.11 '@vue/shared': 3.2.37 estree-walker: 2.0.2 source-map: 0.6.1 @@ -732,7 +707,7 @@ packages: /@vue/compiler-sfc/3.2.37: resolution: {integrity: sha512-+7i/2+9LYlpqDv+KTtWhOZH+pa8/HnX/905MdVmAcI/mPQOBwkHHIzrsEsucyOIZQYMkXUiTkmZq5am/NyXKkg==} dependencies: - '@babel/parser': 7.18.8 + '@babel/parser': 7.18.11 '@vue/compiler-core': 3.2.37 '@vue/compiler-dom': 3.2.37 '@vue/compiler-ssr': 3.2.37 @@ -751,10 +726,14 @@ packages: '@vue/shared': 3.2.37 dev: true + /@vue/devtools-api/6.2.1: + resolution: {integrity: sha512-OEgAMeQXvCoJ+1x8WyQuVZzFo0wcyCmUR3baRVLmKBo1LmYZWMlRiXlux5jd0fqVJu6PfDbOrZItVqUEzLobeQ==} + dev: true + /@vue/reactivity-transform/3.2.37: resolution: {integrity: sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg==} dependencies: - '@babel/parser': 7.18.8 + '@babel/parser': 7.18.11 '@vue/compiler-core': 3.2.37 '@vue/shared': 3.2.37 estree-walker: 2.0.2 @@ -796,6 +775,43 @@ packages: resolution: {integrity: sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw==} dev: true + /@vueuse/core/[email protected]: + resolution: {integrity: sha512-B/Mdj9TK1peFyWaPof+Zf/mP9XuGAngaJZBwPaXBvU3aCTZlx3ltlrFFFyMV4iGBwsjSCeUCgZrtkEj9dS2Y3Q==} + peerDependencies: + '@vue/composition-api': ^1.1.0 + vue: ^2.6.0 || ^3.2.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + vue: + optional: true + dependencies: + '@types/web-bluetooth': 0.0.14 + '@vueuse/metadata': 8.9.4 + '@vueuse/shared': [email protected] + vue: 3.2.37 + vue-demi: [email protected] + dev: true + + /@vueuse/metadata/8.9.4: + resolution: {integrity: sha512-IwSfzH80bnJMzqhaapqJl9JRIiyQU0zsRGEgnxN6jhq7992cPUJIRfV+JHRIZXjYqbwt07E1gTEp0R0zPJ1aqw==} + dev: true + + /@vueuse/shared/[email protected]: + resolution: {integrity: sha512-wt+T30c4K6dGRMVqPddexEVLa28YwxW5OFIPmzUHICjphfAuBFTTdDoyqREZNDOFJZ44ARH1WWQNCUK8koJ+Ag==} + peerDependencies: + '@vue/composition-api': ^1.1.0 + vue: ^2.6.0 || ^3.2.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + vue: + optional: true + dependencies: + vue: 3.2.37 + vue-demi: [email protected] + dev: true + /JSONStream/1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true @@ -839,23 +855,23 @@ packages: uri-js: 4.4.1 dev: true - /algoliasearch/4.13.1: - resolution: {integrity: sha512-dtHUSE0caWTCE7liE1xaL+19AFf6kWEcyn76uhcitWpntqvicFHXKFoZe5JJcv9whQOTRM6+B8qJz6sFj+rDJA==} + /algoliasearch/4.14.2: + resolution: {integrity: sha512-ngbEQonGEmf8dyEh5f+uOIihv4176dgbuOZspiuhmTTBRBuzWu3KCGHre6uHj5YyuC7pNvQGzB6ZNJyZi0z+Sg==} dependencies: - '@algolia/cache-browser-local-storage': 4.13.1 - '@algolia/cache-common': 4.13.1 - '@algolia/cache-in-memory': 4.13.1 - '@algolia/client-account': 4.13.1 - '@algolia/client-analytics': 4.13.1 - '@algolia/client-common': 4.13.1 - '@algolia/client-personalization': 4.13.1 - '@algolia/client-search': 4.13.1 - '@algolia/logger-common': 4.13.1 - '@algolia/logger-console': 4.13.1 - '@algolia/requester-browser-xhr': 4.13.1 - '@algolia/requester-common': 4.13.1 - '@algolia/requester-node-http': 4.13.1 - '@algolia/transporter': 4.13.1 + '@algolia/cache-browser-local-storage': 4.14.2 + '@algolia/cache-common': 4.14.2 + '@algolia/cache-in-memory': 4.14.2 + '@algolia/client-account': 4.14.2 + '@algolia/client-analytics': 4.14.2 + '@algolia/client-common': 4.14.2 + '@algolia/client-personalization': 4.14.2 + '@algolia/client-search': 4.14.2 + '@algolia/logger-common': 4.14.2 + '@algolia/logger-console': 4.14.2 + '@algolia/requester-browser-xhr': 4.14.2 + '@algolia/requester-common': 4.14.2 + '@algolia/requester-node-http': 4.14.2 + '@algolia/transporter': 4.14.2 dev: true /ansi-colors/4.1.3: @@ -994,6 +1010,10 @@ packages: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} dev: true + /body-scroll-lock/4.0.0-beta.0: + resolution: {integrity: sha512-a7tP5+0Mw3YlUJcGAKUqIBkYYGlYxk2fnCasq/FUph1hadxlTRjF+gAcZksxANnaMnALjxEddmSi/H3OR8ugcQ==} + dev: true + /brace-expansion/1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -1471,7 +1491,7 @@ packages: dependencies: '@cypress/request': 2.88.10 '@cypress/xvfb': [email protected] - '@types/node': 14.18.22 + '@types/node': 14.18.23 '@types/sinonjs__fake-timers': 8.1.1 '@types/sizzle': 2.3.3 arch: 2.2.0 @@ -1485,10 +1505,10 @@ packages: cli-table3: 0.6.2 commander: 5.1.0 common-tags: 1.8.2 - dayjs: 1.11.3 + dayjs: 1.11.4 debug: [email protected] enquirer: 2.3.6 - eventemitter2: 6.4.6 + eventemitter2: 6.4.7 execa: 4.1.0 executable: 4.1.1 extract-zip: [email protected] @@ -1529,8 +1549,8 @@ packages: resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==} dev: true - /dayjs/1.11.3: - resolution: {integrity: sha512-xxwlswWOlGhzgQ4TKzASQkUhqERI3egRNqgV4ScR8wlANA/A9tZ7miXa44vTTKEq5l7vWoL5G57bG3zA+Kow0A==} + /dayjs/1.11.4: + resolution: {integrity: sha512-Zj/lPM5hOvQ1Bf7uAvewDaUcsJoI6JmNqmHhHl3nyumwe0XHwt8sWdOVAPACJzCebL8gQCi+K49w7iKWnGwX9g==} dev: true /debug/[email protected]: @@ -2112,7 +2132,7 @@ packages: find-up: 5.0.0 functional-red-black-tree: 1.0.1 glob-parent: 6.0.2 - globals: 13.16.0 + globals: 13.17.0 globby: 11.1.0 grapheme-splitter: 1.0.4 ignore: 5.2.0 @@ -2177,8 +2197,8 @@ packages: engines: {node: '>=0.10.0'} dev: true - /eventemitter2/6.4.6: - resolution: {integrity: sha512-OHqo4wbHX5VbvlbB6o6eDwhYmiTjrpWACjF8Pmof/GTD6rdBNdZFNck3xlhqOiQFGCOoq3uzHvA0cQpFHIGVAQ==} + /eventemitter2/6.4.7: + resolution: {integrity: sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==} dev: true /execa/4.1.0: @@ -2550,8 +2570,8 @@ packages: ini: 2.0.0 dev: true - /globals/13.16.0: - resolution: {integrity: sha512-A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q==} + /globals/13.17.0: + resolution: {integrity: sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 @@ -2587,7 +2607,7 @@ packages: source-map: 0.6.1 wordwrap: 1.0.0 optionalDependencies: - uglify-js: 3.16.2 + uglify-js: 3.16.3 dev: true /hard-rejection/2.1.0: @@ -2763,8 +2783,8 @@ packages: ci-info: 3.3.2 dev: true - /is-core-module/2.9.0: - resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==} + /is-core-module/2.10.0: + resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} dependencies: has: 1.0.3 dev: true @@ -3371,7 +3391,7 @@ packages: engines: {node: '>=10'} dependencies: hosted-git-info: 4.1.0 - is-core-module: 2.9.0 + is-core-module: 2.10.0 semver: 7.3.7 validate-npm-package-license: 3.0.4 dev: true @@ -3700,17 +3720,12 @@ packages: engines: {node: '>=6'} dev: true - /prismjs/1.28.0: - resolution: {integrity: sha512-8aaXdYvl1F7iC7Xm1spqSaY/OJBpYW3v+KJ+F17iYxvdc8sfjW194COK5wVhMZX45tGteiBQgdvD/nhxcRwylw==} - engines: {node: '>=6'} - dev: true - /process-nextick-args/2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: true /proxy-from-env/1.0.0: - resolution: {integrity: sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==} + resolution: {integrity: sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=} dev: true /psl/1.9.0: @@ -3864,7 +3879,7 @@ packages: resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} hasBin: true dependencies: - is-core-module: 2.9.0 + is-core-module: 2.10.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true @@ -3893,8 +3908,8 @@ packages: glob: 7.2.3 dev: true - /rollup/2.77.0: - resolution: {integrity: sha512-vL8xjY4yOQEw79DvyXLijhnhh+R/O9zpF/LEgkCebZFtb6ELeN9H3/2T0r8+mp+fFTBHZ5qGpOpW2ela2zRt3g==} + /rollup/2.77.2: + resolution: {integrity: sha512-m/4YzYgLcpMQbxX3NmAqDvwLATZzxt8bIegO78FZLl+lAgKJBd1DRAOeEiZcKOIOPjxE6ewHWHNgGEalFXuz1g==} engines: {node: '>=10.0.0'} hasBin: true optionalDependencies: @@ -4398,9 +4413,9 @@ packages: resolution: {integrity: sha512-PcvTwRXTm6hDWfPihA4n5WW/9SmgFNxKaDKqvLLG+FKNEPA4crsipChzC7PVozPtdOaMfR5QctDlkC/hKoIsxw==} hasBin: true dependencies: - '@esbuild-kit/cjs-loader': 2.3.1 + '@esbuild-kit/cjs-loader': 2.3.2 '@esbuild-kit/core-utils': 2.1.0 - '@esbuild-kit/esm-loader': 2.4.1 + '@esbuild-kit/esm-loader': 2.4.2 optionalDependencies: fsevents: 2.3.2 dev: true @@ -4484,8 +4499,8 @@ packages: hasBin: true dev: true - /uglify-js/3.16.2: - resolution: {integrity: sha512-AaQNokTNgExWrkEYA24BTNMSjyqEXPSfhqoS0AxmHkCJ4U+Dyy5AvbGV/sqxuxficEfGGoX3zWw9R7QpLFfEsg==} + /uglify-js/3.16.3: + resolution: {integrity: sha512-uVbFqx9vvLhQg0iBaau9Z75AxWJ8tqM9AV890dIZCLApF4rTcyHwmAvLeEdYRs+BzYWu8Iw81F79ah0EfTXbaw==} engines: {node: '>=0.8.0'} hasBin: true requiresBuild: true @@ -4558,7 +4573,7 @@ packages: dev: true /verror/1.10.0: - resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} + resolution: {integrity: sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=} engines: {'0': node >=0.6.0} dependencies: assert-plus: 1.0.0 @@ -4585,7 +4600,7 @@ packages: esbuild: 0.14.53 postcss: 8.4.14 resolve: 1.22.1 - rollup: 2.77.0 + rollup: 2.77.2 optionalDependencies: fsevents: 2.3.2 dev: true @@ -4612,25 +4627,29 @@ packages: esbuild: 0.14.53 postcss: 8.4.14 resolve: 1.22.1 - rollup: 2.77.0 + rollup: 2.77.2 optionalDependencies: fsevents: 2.3.2 dev: true - /vitepress/0.22.4_imvgwgjzmeisgkq5uchhrryg6y: - resolution: {integrity: sha512-oZUnLO/SpYdThaBKefDeOiVlr0Rie4Ppx3FzMnMyLtJnI5GlBMNjqYqMy/4+umm/iC+ZDJfI+IlDKxv5fZnYzA==} - engines: {node: '>=14.0.0'} + /vitepress/1.0.0-alpha.4_imvgwgjzmeisgkq5uchhrryg6y: + resolution: {integrity: sha512-bOAA4KW6vYGlkbcrPLZLTKWTgXVroObU+o9xj9EENyEl6yg26WWvfN7DGA4BftjdM5O8nR93Z5khPQ3W/tFE7Q==} + engines: {node: '>=14.6.0'} hasBin: true dependencies: - '@docsearch/css': 3.1.1 - '@docsearch/js': 3.1.1_imvgwgjzmeisgkq5uchhrryg6y + '@docsearch/css': 3.2.0 + '@docsearch/js': 3.2.0_imvgwgjzmeisgkq5uchhrryg6y '@vitejs/plugin-vue': [email protected][email protected] - prismjs: 1.28.0 + '@vue/devtools-api': 6.2.1 + '@vueuse/core': [email protected] + body-scroll-lock: 4.0.0-beta.0 + shiki: 0.10.1 vite: 2.9.14 vue: 3.2.37 transitivePeerDependencies: - '@algolia/client-search' - '@types/react' + - '@vue/composition-api' - less - react - react-dom @@ -4665,7 +4684,7 @@ packages: dependencies: '@types/chai': 4.3.1 '@types/chai-subset': 1.3.3 - '@types/node': 18.0.6 + '@types/node': 18.6.4 '@vitest/ui': 0.20.3 c8: 7.12.0 chai: 4.3.6 @@ -4690,6 +4709,21 @@ packages: resolution: {integrity: sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==} dev: true + /vue-demi/[email protected]: + resolution: {integrity: sha512-02NYpxgyGE2kKGegRPYlNQSL1UWfA/+JqvzhGCOYjhfbLWXU5QQX0+9pAm/R2sCOPKr5NBxVIab7fvFU0B1RxQ==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + dependencies: + vue: 3.2.37 + dev: true + /vue/3.2.37: resolution: {integrity: sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ==} dependencies: diff --git a/scripts/apidoc.ts b/scripts/apidoc.ts index d519a320..ed6f679f 100644 --- a/scripts/apidoc.ts +++ b/scripts/apidoc.ts @@ -2,12 +2,15 @@ import { resolve } from 'path'; import { writeApiPagesIndex } from './apidoc/apiDocsWriter'; import { processDirectMethods } from './apidoc/directMethods'; import { processModuleMethods } from './apidoc/moduleMethods'; +import { initMarkdownRenderer } from './apidoc/signature'; import type { PageIndex } from './apidoc/utils'; import { newTypeDocApp, patchProject, pathOutputDir } from './apidoc/utils'; const pathOutputJson = resolve(pathOutputDir, 'typedoc.json'); async function build(): Promise<void> { + await initMarkdownRenderer(); + const app = newTypeDocApp(); app.bootstrap({ diff --git a/scripts/apidoc/signature.ts b/scripts/apidoc/signature.ts index dd60a223..ce037988 100644 --- a/scripts/apidoc/signature.ts +++ b/scripts/apidoc/signature.ts @@ -1,4 +1,4 @@ -import sanitizeHtml from 'sanitize-html'; +// import sanitizeHtml from 'sanitize-html'; import type { Comment, DeclarationReflection, @@ -10,6 +10,7 @@ import type { Type, } from 'typedoc'; import { ReflectionFlag, ReflectionKind } from 'typedoc'; +import type { MarkdownRenderer } from 'vitepress'; import { createMarkdownRenderer } from 'vitepress'; import type { Method, @@ -38,40 +39,46 @@ export function toBlock(comment?: Comment): string { return joinTagParts(comment?.summary) || 'Missing'; } -const markdown = createMarkdownRenderer( - pathOutputDir, - vitepressConfig.markdown, - '/' -); - -const htmlSanitizeOptions: sanitizeHtml.IOptions = { - allowedTags: ['a', 'code', 'div', 'li', 'span', 'p', 'pre', 'ul'], - allowedAttributes: { - a: ['href', 'target', 'rel'], - div: ['class'], - pre: ['v-pre'], - span: ['class'], - }, - selfClosing: [], -}; +let markdown: MarkdownRenderer; + +export async function initMarkdownRenderer(): Promise<void> { + markdown = await createMarkdownRenderer( + pathOutputDir, + vitepressConfig.markdown, + '/' + ); +} + +// const htmlSanitizeOptions: sanitizeHtml.IOptions = { +// allowedTags: ['a', 'code', 'div', 'li', 'span', 'p', 'pre', 'ul'], +// allowedAttributes: { +// a: ['href', 'target', 'rel'], +// div: ['class'], +// pre: ['v-pre'], +// span: ['class'], +// }, +// selfClosing: [], +// }; function mdToHtml(md: string): string { const rawHtml = markdown.render(md); - const safeHtml: string = sanitizeHtml(rawHtml, htmlSanitizeOptions); - // Revert some escaped characters for comparison. - if (rawHtml.replace(/>/g, '>') === safeHtml.replace(/>/g, '>')) { - return safeHtml; - } else { - console.debug('Rejected unsafe md:', md); - console.error('Rejected unsafe html:', rawHtml.replace(/>/g, '>')); - console.error('Expected safe html:', safeHtml.replace(/>/g, '>')); - throw new Error('Found unsafe html'); - } + // TODO @Shinigami92 2022-06-24: Sanitize html to prevent XSS + return rawHtml; + // const safeHtml: string = sanitizeHtml(rawHtml, htmlSanitizeOptions); + // // Revert some escaped characters for comparison. + // if (rawHtml.replace(/>/g, '>') === safeHtml.replace(/>/g, '>')) { + // return safeHtml; + // } else { + // console.debug('Rejected unsafe md:', md); + // console.error('Rejected unsafe html:', rawHtml.replace(/>/g, '>')); + // console.error('Expected safe html:', safeHtml.replace(/>/g, '>')); + // throw new Error('Found unsafe html'); + // } } export function analyzeSignature( signature: SignatureReflection, - moduleName: string, + moduleName: string | null, methodName: string ): Method { const parameters: MethodParameter[] = []; diff --git a/test/scripts/apidoc/signature.expected.json b/test/scripts/apidoc/signature.expected.json index f576a342..fc948e55 100644 --- a/test/scripts/apidoc/signature.expected.json +++ b/test/scripts/apidoc/signature.expected.json @@ -12,7 +12,7 @@ } ], "returns": "number", - "examples": "<div class=\"language-ts\"><pre v-pre><code>faker<span class=\"token punctuation\">.</span><span class=\"token function\">defaultBooleanParamMethod</span><span class=\"token punctuation\">(</span>c<span class=\"token operator\">:</span> <span class=\"token builtin\">boolean</span> <span class=\"token operator\">=</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">)</span><span class=\"token operator\">:</span> <span class=\"token builtin\">number</span>\n</code></pre>\n</div>", + "examples": "<div class=\"language-ts\"><span class=\"copy\"></span><pre v-pre><code><span class=\"line\"><span style=\"color: #A6ACCD\">faker</span><span style=\"color: #89DDFF\">.</span><span style=\"color: #82AAFF\">defaultBooleanParamMethod</span><span style=\"color: #A6ACCD\">(c: boolean </span><span style=\"color: #89DDFF\">=</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #FF9CAC\">true</span><span style=\"color: #A6ACCD\">): number</span></span>\n<span class=\"line\"></span></code></pre>\n</div>", "deprecated": false, "seeAlsos": [] }, @@ -28,7 +28,7 @@ } ], "returns": "number", - "examples": "<div class=\"language-ts\"><pre v-pre><code>faker<span class=\"token punctuation\">.</span><span class=\"token function\">functionParamMethod</span><span class=\"token punctuation\">(</span><span class=\"token function-variable function\">fn</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">(</span>a<span class=\"token operator\">:</span> <span class=\"token builtin\">string</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token builtin\">number</span><span class=\"token punctuation\">)</span><span class=\"token operator\">:</span> <span class=\"token builtin\">number</span>\n</code></pre>\n</div>", + "examples": "<div class=\"language-ts\"><span class=\"copy\"></span><pre v-pre><code><span class=\"line\"><span style=\"color: #A6ACCD\">faker</span><span style=\"color: #89DDFF\">.</span><span style=\"color: #82AAFF\">functionParamMethod</span><span style=\"color: #A6ACCD\">(fn: </span><span style=\"color: #89DDFF\">(</span><span style=\"color: #A6ACCD\">a</span><span style=\"color: #89DDFF\">:</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #FFCB6B\">string</span><span style=\"color: #89DDFF\">)</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #C792EA\">=></span><span style=\"color: #A6ACCD\"> number): number</span></span>\n<span class=\"line\"></span></code></pre>\n</div>", "deprecated": false, "seeAlsos": [] }, @@ -44,7 +44,7 @@ } ], "returns": "string", - "examples": "<div class=\"language-ts\"><pre v-pre><code>faker<span class=\"token punctuation\">.</span><span class=\"token function\">literalUnionParamMethod</span><span class=\"token punctuation\">(</span>value<span class=\"token operator\">:</span> <span class=\"token string\">'a'</span> <span class=\"token operator\">|</span> <span class=\"token string\">'b'</span> <span class=\"token operator\">|</span> <span class=\"token builtin\">string</span><span class=\"token punctuation\">)</span><span class=\"token operator\">:</span> <span class=\"token builtin\">string</span>\n</code></pre>\n</div>", + "examples": "<div class=\"language-ts\"><span class=\"copy\"></span><pre v-pre><code><span class=\"line\"><span style=\"color: #A6ACCD\">faker</span><span style=\"color: #89DDFF\">.</span><span style=\"color: #82AAFF\">literalUnionParamMethod</span><span style=\"color: #A6ACCD\">(value: </span><span style=\"color: #89DDFF\">'</span><span style=\"color: #C3E88D\">a</span><span style=\"color: #89DDFF\">'</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #89DDFF\">|</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #89DDFF\">'</span><span style=\"color: #C3E88D\">b</span><span style=\"color: #89DDFF\">'</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #89DDFF\">|</span><span style=\"color: #A6ACCD\"> string): string</span></span>\n<span class=\"line\"></span></code></pre>\n</div>", "deprecated": false, "seeAlsos": [] }, @@ -54,7 +54,7 @@ "description": "<p>Test with deprecated and see marker.</p>\n", "parameters": [], "returns": "number", - "examples": "<div class=\"language-ts\"><pre v-pre><code>faker<span class=\"token punctuation\">.</span><span class=\"token function\">methodWithDeprecated</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token operator\">:</span> <span class=\"token builtin\">number</span>\n</code></pre>\n</div>", + "examples": "<div class=\"language-ts\"><span class=\"copy\"></span><pre v-pre><code><span class=\"line\"><span style=\"color: #A6ACCD\">faker</span><span style=\"color: #89DDFF\">.</span><span style=\"color: #82AAFF\">methodWithDeprecated</span><span style=\"color: #A6ACCD\">(): number</span></span>\n<span class=\"line\"></span></code></pre>\n</div>", "deprecated": true, "seeAlsos": ["test.apidoc.methodWithExample()"] }, @@ -64,7 +64,7 @@ "description": "<p>Test with example marker.</p>\n", "parameters": [], "returns": "number", - "examples": "<div class=\"language-ts\"><pre v-pre><code>faker<span class=\"token punctuation\">.</span><span class=\"token function\">methodWithExample</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token operator\">:</span> <span class=\"token builtin\">number</span>\ntest<span class=\"token punctuation\">.</span>apidoc<span class=\"token punctuation\">.</span><span class=\"token function\">methodWithExample</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token comment\">// 0</span>\n</code></pre>\n</div>", + "examples": "<div class=\"language-ts\"><span class=\"copy\"></span><pre v-pre><code><span class=\"line\"><span style=\"color: #A6ACCD\">faker</span><span style=\"color: #89DDFF\">.</span><span style=\"color: #82AAFF\">methodWithExample</span><span style=\"color: #A6ACCD\">(): number</span></span>\n<span class=\"line\"><span style=\"color: #A6ACCD\">test</span><span style=\"color: #89DDFF\">.</span><span style=\"color: #A6ACCD\">apidoc</span><span style=\"color: #89DDFF\">.</span><span style=\"color: #82AAFF\">methodWithExample</span><span style=\"color: #A6ACCD\">() </span><span style=\"color: #676E95; font-style: italic\">// 0</span></span>\n<span class=\"line\"></span></code></pre>\n</div>", "deprecated": false, "seeAlsos": [] }, @@ -91,7 +91,7 @@ } ], "returns": "number", - "examples": "<div class=\"language-ts\"><pre v-pre><code>faker<span class=\"token punctuation\">.</span><span class=\"token function\">multiParamMethod</span><span class=\"token punctuation\">(</span>a<span class=\"token operator\">:</span> <span class=\"token builtin\">number</span><span class=\"token punctuation\">,</span> b<span class=\"token operator\">?</span><span class=\"token operator\">:</span> <span class=\"token builtin\">string</span><span class=\"token punctuation\">,</span> c<span class=\"token operator\">:</span> <span class=\"token builtin\">boolean</span> <span class=\"token operator\">=</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">)</span><span class=\"token operator\">:</span> <span class=\"token builtin\">number</span>\n</code></pre>\n</div>", + "examples": "<div class=\"language-ts\"><span class=\"copy\"></span><pre v-pre><code><span class=\"line\"><span style=\"color: #A6ACCD\">faker</span><span style=\"color: #89DDFF\">.</span><span style=\"color: #82AAFF\">multiParamMethod</span><span style=\"color: #A6ACCD\">(a: number</span><span style=\"color: #89DDFF\">,</span><span style=\"color: #A6ACCD\"> b</span><span style=\"color: #89DDFF\">?:</span><span style=\"color: #A6ACCD\"> string</span><span style=\"color: #89DDFF\">,</span><span style=\"color: #A6ACCD\"> c: boolean </span><span style=\"color: #89DDFF\">=</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #FF9CAC\">true</span><span style=\"color: #A6ACCD\">): number</span></span>\n<span class=\"line\"></span></code></pre>\n</div>", "deprecated": false, "seeAlsos": [] }, @@ -101,7 +101,7 @@ "description": "<p>Test with no parameters.</p>\n", "parameters": [], "returns": "number", - "examples": "<div class=\"language-ts\"><pre v-pre><code>faker<span class=\"token punctuation\">.</span><span class=\"token function\">noParamMethod</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token operator\">:</span> <span class=\"token builtin\">number</span>\n</code></pre>\n</div>", + "examples": "<div class=\"language-ts\"><span class=\"copy\"></span><pre v-pre><code><span class=\"line\"><span style=\"color: #A6ACCD\">faker</span><span style=\"color: #89DDFF\">.</span><span style=\"color: #82AAFF\">noParamMethod</span><span style=\"color: #A6ACCD\">(): number</span></span>\n<span class=\"line\"></span></code></pre>\n</div>", "deprecated": false, "seeAlsos": [] }, @@ -117,7 +117,7 @@ } ], "returns": "number", - "examples": "<div class=\"language-ts\"><pre v-pre><code>faker<span class=\"token punctuation\">.</span><span class=\"token function\">optionalStringParamMethod</span><span class=\"token punctuation\">(</span>b<span class=\"token operator\">?</span><span class=\"token operator\">:</span> <span class=\"token builtin\">string</span><span class=\"token punctuation\">)</span><span class=\"token operator\">:</span> <span class=\"token builtin\">number</span>\n</code></pre>\n</div>", + "examples": "<div class=\"language-ts\"><span class=\"copy\"></span><pre v-pre><code><span class=\"line\"><span style=\"color: #A6ACCD\">faker</span><span style=\"color: #89DDFF\">.</span><span style=\"color: #82AAFF\">optionalStringParamMethod</span><span style=\"color: #A6ACCD\">(b</span><span style=\"color: #89DDFF\">?:</span><span style=\"color: #A6ACCD\"> string): number</span></span>\n<span class=\"line\"></span></code></pre>\n</div>", "deprecated": false, "seeAlsos": [] }, @@ -161,7 +161,7 @@ } ], "returns": "number", - "examples": "<div class=\"language-ts\"><pre v-pre><code>faker<span class=\"token punctuation\">.</span><span class=\"token function\">optionsInlineParamMethodWithDefaults</span><span class=\"token punctuation\">(</span>a<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n value<span class=\"token operator\">:</span> <span class=\"token builtin\">number</span>\n<span class=\"token punctuation\">}</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span> value<span class=\"token operator\">:</span> <span class=\"token number\">1</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span> b<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n value<span class=\"token operator\">:</span> <span class=\"token builtin\">number</span>\n<span class=\"token punctuation\">}</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span> value<span class=\"token operator\">:</span> <span class=\"token number\">1</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span> c<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n value<span class=\"token operator\">:</span> <span class=\"token builtin\">number</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token operator\">:</span> <span class=\"token builtin\">number</span>\n</code></pre>\n</div>", + "examples": "<div class=\"language-ts\"><span class=\"copy\"></span><pre v-pre><code><span class=\"line\"><span style=\"color: #A6ACCD\">faker</span><span style=\"color: #89DDFF\">.</span><span style=\"color: #82AAFF\">optionsInlineParamMethodWithDefaults</span><span style=\"color: #A6ACCD\">(a: </span><span style=\"color: #89DDFF\">{</span></span>\n<span class=\"line\"><span style=\"color: #A6ACCD\"> </span><span style=\"color: #F07178\">value</span><span style=\"color: #89DDFF\">:</span><span style=\"color: #A6ACCD\"> number</span></span>\n<span class=\"line\"><span style=\"color: #89DDFF\">}</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #89DDFF\">=</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #89DDFF\">{</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #F07178\">value</span><span style=\"color: #89DDFF\">:</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #F78C6C\">1</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #89DDFF\">},</span><span style=\"color: #A6ACCD\"> b: </span><span style=\"color: #89DDFF\">{</span></span>\n<span class=\"line\"><span style=\"color: #A6ACCD\"> </span><span style=\"color: #F07178\">value</span><span style=\"color: #89DDFF\">:</span><span style=\"color: #A6ACCD\"> number</span></span>\n<span class=\"line\"><span style=\"color: #89DDFF\">}</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #89DDFF\">=</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #89DDFF\">{</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #F07178\">value</span><span style=\"color: #89DDFF\">:</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #F78C6C\">1</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #89DDFF\">},</span><span style=\"color: #A6ACCD\"> c: </span><span style=\"color: #89DDFF\">{</span></span>\n<span class=\"line\"><span style=\"color: #A6ACCD\"> </span><span style=\"color: #F07178\">value</span><span style=\"color: #89DDFF\">:</span><span style=\"color: #A6ACCD\"> number</span></span>\n<span class=\"line\"><span style=\"color: #89DDFF\">}</span><span style=\"color: #A6ACCD\">): number</span></span>\n<span class=\"line\"></span></code></pre>\n</div>", "deprecated": false, "seeAlsos": [] }, @@ -189,7 +189,7 @@ } ], "returns": "number", - "examples": "<div class=\"language-ts\"><pre v-pre><code>faker<span class=\"token punctuation\">.</span><span class=\"token function\">optionsInterfaceParamMethodWithDefaults</span><span class=\"token punctuation\">(</span>a<span class=\"token operator\">:</span> ParameterOptionsInterfaceA <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span> value<span class=\"token operator\">:</span> <span class=\"token number\">1</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span> b<span class=\"token operator\">:</span> ParameterOptionsInterfaceB <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span> value<span class=\"token operator\">:</span> <span class=\"token number\">1</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span> c<span class=\"token operator\">:</span> ParameterOptionsInterfaceC<span class=\"token punctuation\">)</span><span class=\"token operator\">:</span> <span class=\"token builtin\">number</span>\n</code></pre>\n</div>", + "examples": "<div class=\"language-ts\"><span class=\"copy\"></span><pre v-pre><code><span class=\"line\"><span style=\"color: #A6ACCD\">faker</span><span style=\"color: #89DDFF\">.</span><span style=\"color: #82AAFF\">optionsInterfaceParamMethodWithDefaults</span><span style=\"color: #A6ACCD\">(a: ParameterOptionsInterfaceA </span><span style=\"color: #89DDFF\">=</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #89DDFF\">{</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #F07178\">value</span><span style=\"color: #89DDFF\">:</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #F78C6C\">1</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #89DDFF\">},</span><span style=\"color: #A6ACCD\"> b: ParameterOptionsInterfaceB </span><span style=\"color: #89DDFF\">=</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #89DDFF\">{</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #F07178\">value</span><span style=\"color: #89DDFF\">:</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #F78C6C\">1</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #89DDFF\">},</span><span style=\"color: #A6ACCD\"> c: ParameterOptionsInterfaceC): number</span></span>\n<span class=\"line\"></span></code></pre>\n</div>", "deprecated": false, "seeAlsos": [] }, @@ -225,7 +225,7 @@ } ], "returns": "number", - "examples": "<div class=\"language-ts\"><pre v-pre><code>faker<span class=\"token punctuation\">.</span><span class=\"token function\">optionsParamMethod</span><span class=\"token punctuation\">(</span>options<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n a<span class=\"token operator\">:</span> <span class=\"token builtin\">number</span><span class=\"token punctuation\">,</span>\n b<span class=\"token operator\">:</span> <span class=\"token builtin\">string</span><span class=\"token punctuation\">,</span>\n c<span class=\"token operator\">:</span> <span class=\"token builtin\">boolean</span><span class=\"token punctuation\">,</span>\n <span class=\"token function-variable function\">d</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token builtin\">string</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token operator\">:</span> <span class=\"token builtin\">number</span>\n</code></pre>\n</div>", + "examples": "<div class=\"language-ts\"><span class=\"copy\"></span><pre v-pre><code><span class=\"line\"><span style=\"color: #A6ACCD\">faker</span><span style=\"color: #89DDFF\">.</span><span style=\"color: #82AAFF\">optionsParamMethod</span><span style=\"color: #A6ACCD\">(options: </span><span style=\"color: #89DDFF\">{</span></span>\n<span class=\"line\"><span style=\"color: #A6ACCD\"> </span><span style=\"color: #F07178\">a</span><span style=\"color: #89DDFF\">:</span><span style=\"color: #A6ACCD\"> number</span><span style=\"color: #89DDFF\">,</span></span>\n<span class=\"line\"><span style=\"color: #A6ACCD\"> </span><span style=\"color: #F07178\">b</span><span style=\"color: #89DDFF\">:</span><span style=\"color: #A6ACCD\"> string</span><span style=\"color: #89DDFF\">,</span></span>\n<span class=\"line\"><span style=\"color: #A6ACCD\"> </span><span style=\"color: #F07178\">c</span><span style=\"color: #89DDFF\">:</span><span style=\"color: #A6ACCD\"> boolean</span><span style=\"color: #89DDFF\">,</span></span>\n<span class=\"line\"><span style=\"color: #A6ACCD\"> </span><span style=\"color: #82AAFF\">d</span><span style=\"color: #89DDFF\">:</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #89DDFF\">()</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #C792EA\">=></span><span style=\"color: #A6ACCD\"> string</span></span>\n<span class=\"line\"><span style=\"color: #89DDFF\">}</span><span style=\"color: #A6ACCD\">): number</span></span>\n<span class=\"line\"></span></code></pre>\n</div>", "deprecated": false, "seeAlsos": [] }, @@ -253,7 +253,7 @@ } ], "returns": "number", - "examples": "<div class=\"language-ts\"><pre v-pre><code>faker<span class=\"token punctuation\">.</span><span class=\"token function\">optionsTypeParamMethodWithDefaults</span><span class=\"token punctuation\">(</span>a<span class=\"token operator\">:</span> ParameterOptionsTypeA <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span> value<span class=\"token operator\">:</span> <span class=\"token number\">1</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span> b<span class=\"token operator\">:</span> ParameterOptionsTypeB <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span> value<span class=\"token operator\">:</span> <span class=\"token number\">1</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span> c<span class=\"token operator\">:</span> ParameterOptionsTypeC<span class=\"token punctuation\">)</span><span class=\"token operator\">:</span> <span class=\"token builtin\">number</span>\n</code></pre>\n</div>", + "examples": "<div class=\"language-ts\"><span class=\"copy\"></span><pre v-pre><code><span class=\"line\"><span style=\"color: #A6ACCD\">faker</span><span style=\"color: #89DDFF\">.</span><span style=\"color: #82AAFF\">optionsTypeParamMethodWithDefaults</span><span style=\"color: #A6ACCD\">(a: ParameterOptionsTypeA </span><span style=\"color: #89DDFF\">=</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #89DDFF\">{</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #F07178\">value</span><span style=\"color: #89DDFF\">:</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #F78C6C\">1</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #89DDFF\">},</span><span style=\"color: #A6ACCD\"> b: ParameterOptionsTypeB </span><span style=\"color: #89DDFF\">=</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #89DDFF\">{</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #F07178\">value</span><span style=\"color: #89DDFF\">:</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #F78C6C\">1</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #89DDFF\">},</span><span style=\"color: #A6ACCD\"> c: ParameterOptionsTypeC): number</span></span>\n<span class=\"line\"></span></code></pre>\n</div>", "deprecated": false, "seeAlsos": [] }, @@ -269,7 +269,7 @@ } ], "returns": "number", - "examples": "<div class=\"language-ts\"><pre v-pre><code>faker<span class=\"token punctuation\">.</span><span class=\"token function\">requiredNumberParamMethod</span><span class=\"token punctuation\">(</span>a<span class=\"token operator\">:</span> <span class=\"token builtin\">number</span><span class=\"token punctuation\">)</span><span class=\"token operator\">:</span> <span class=\"token builtin\">number</span>\n</code></pre>\n</div>", + "examples": "<div class=\"language-ts\"><span class=\"copy\"></span><pre v-pre><code><span class=\"line\"><span style=\"color: #A6ACCD\">faker</span><span style=\"color: #89DDFF\">.</span><span style=\"color: #82AAFF\">requiredNumberParamMethod</span><span style=\"color: #A6ACCD\">(a: number): number</span></span>\n<span class=\"line\"></span></code></pre>\n</div>", "deprecated": false, "seeAlsos": [] }, @@ -285,7 +285,7 @@ } ], "returns": "string", - "examples": "<div class=\"language-ts\"><pre v-pre><code>faker<span class=\"token punctuation\">.</span><span class=\"token function\">stringUnionParamMethod</span><span class=\"token punctuation\">(</span>value<span class=\"token operator\">:</span> <span class=\"token string\">'a'</span> <span class=\"token operator\">|</span> <span class=\"token string\">'b'</span><span class=\"token punctuation\">)</span><span class=\"token operator\">:</span> <span class=\"token builtin\">string</span>\n</code></pre>\n</div>", + "examples": "<div class=\"language-ts\"><span class=\"copy\"></span><pre v-pre><code><span class=\"line\"><span style=\"color: #A6ACCD\">faker</span><span style=\"color: #89DDFF\">.</span><span style=\"color: #82AAFF\">stringUnionParamMethod</span><span style=\"color: #A6ACCD\">(value: </span><span style=\"color: #89DDFF\">'</span><span style=\"color: #C3E88D\">a</span><span style=\"color: #89DDFF\">'</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #89DDFF\">|</span><span style=\"color: #A6ACCD\"> </span><span style=\"color: #89DDFF\">'</span><span style=\"color: #C3E88D\">b</span><span style=\"color: #89DDFF\">'</span><span style=\"color: #A6ACCD\">): string</span></span>\n<span class=\"line\"></span></code></pre>\n</div>", "deprecated": false, "seeAlsos": [] } diff --git a/test/scripts/apidoc/signature.spec.ts b/test/scripts/apidoc/signature.spec.ts index 427ed923..f55c10f8 100644 --- a/test/scripts/apidoc/signature.spec.ts +++ b/test/scripts/apidoc/signature.spec.ts @@ -1,8 +1,11 @@ import { writeFileSync } from 'fs'; import { resolve } from 'path'; -import { afterAll, describe, expect, it } from 'vitest'; +import { afterAll, beforeAll, describe, expect, it } from 'vitest'; import type { Method } from '../../../docs/.vitepress/components/api-docs/method'; -import { analyzeSignature } from '../../../scripts/apidoc/signature'; +import { + analyzeSignature, + initMarkdownRenderer, +} from '../../../scripts/apidoc/signature'; import { SignatureTest } from './signature.example'; import expected_ from './signature.expected.json'; import { loadExampleMethods } from './utils'; @@ -18,6 +21,10 @@ describe('signature', () => { const actuals = {}; const methods = loadExampleMethods(); + beforeAll(async () => { + await initMarkdownRenderer(); + }); + it('dummy dependency to rerun the test if the example changes', () => { expect(new SignatureTest()).toBeTruthy(); }); |
