From 7a11318b9c231602b503fc21e19e4eb21793f66e Mon Sep 17 00:00:00 2001 From: tugcekucukoglu Date: Fri, 28 Jun 2024 10:27:22 +0300 Subject: [PATCH] New Typedoc implementation --- .github/workflows/generate_api_doc.yml | 11 +- apps/showcase/package.json | 3 +- apps/showcase/scripts/build-apidoc.js | 760 +++++++++++++++++++++++++ apps/showcase/tsconfig.json | 20 + apps/showcase/typedoc.json | 5 + package.json | 5 +- pnpm-lock.yaml | 245 ++++---- 7 files changed, 918 insertions(+), 131 deletions(-) create mode 100644 apps/showcase/scripts/build-apidoc.js create mode 100644 apps/showcase/tsconfig.json create mode 100644 apps/showcase/typedoc.json diff --git a/.github/workflows/generate_api_doc.yml b/.github/workflows/generate_api_doc.yml index aeeade87b..de88b108b 100644 --- a/.github/workflows/generate_api_doc.yml +++ b/.github/workflows/generate_api_doc.yml @@ -4,8 +4,9 @@ on: push: branches: [master] paths: - - '**/**/**/*.d.ts' - - '/api-generator/build-apidoc.js' + - 'packages/primevue/src/**/*.d.ts' + - 'packages/primevue/src/**/style/*.js' + - 'packages/themes/src/presets/**/**/index.js' permissions: contents: write @@ -17,7 +18,7 @@ jobs: strategy: matrix: - node-version: [18, 20] + node-version: [20] steps: - name: Checkout repository @@ -26,7 +27,7 @@ jobs: - name: Install pnpm uses: pnpm/action-setup@v4 with: - version: 9 + version: 9 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4 @@ -38,7 +39,7 @@ jobs: run: pnpm run setup - name: Generate api doc - run: pnpm run apidoc + run: pnpm run build:apidoc - name: Code Format run: pnpm run format diff --git a/apps/showcase/package.json b/apps/showcase/package.json index 17aaf908a..00bad2791 100644 --- a/apps/showcase/package.json +++ b/apps/showcase/package.json @@ -1,6 +1,6 @@ { "name": "showcase", - "version": "4.0.0-rc.2", + "version": "4.0.0-rc.3", "author": "PrimeTek Informatics", "description": "", "homepage": "https://primevue.org/", @@ -20,6 +20,7 @@ "preview": "nuxt preview", "postinstall": "nuxt prepare", "build:prebuild": "node ./scripts/prebuild.js", + "build:apidoc": "node ./scripts/build-apidoc.js", "test:unit": "vitest run", "test:unit:watch": "vitest watch", "test:coverage": "vitest run --coverage" diff --git a/apps/showcase/scripts/build-apidoc.js b/apps/showcase/scripts/build-apidoc.js new file mode 100644 index 000000000..85e8d50e2 --- /dev/null +++ b/apps/showcase/scripts/build-apidoc.js @@ -0,0 +1,760 @@ +const TypeDoc = require('typedoc'); +const path = require('path'); +const fs = require('fs'); + +const rootDir = path.resolve(__dirname, '../../../'); +const outputPath = path.resolve(rootDir, 'apps/showcase/doc/common/apidoc'); + +const staticMessages = { + methods: "Defines methods that can be accessed by the component's reference.", + emits: 'Defines emit that determine the behavior of the component based on a given condition or report the actions that the component takes.', + slots: 'Defines the slots used by the component.', + functions: 'Defines the custom functions used by the module.', + events: "Defines the custom events used by the component's emit.", + interfaces: 'Defines the custom interfaces used by the module.', + types: 'Defines the custom types used by the module.', + tokens: 'Define design tokens used by the component.' +}; + +const app = new TypeDoc.Application(); + +// If you want TypeDoc to load tsconfig.json / typedoc.json files +app.options.addReader(new TypeDoc.TSConfigReader()); +app.options.addReader(new TypeDoc.TypeDocReader()); + +app.bootstrap({ + // typedoc options here + name: 'PrimeVue', + entryPoints: [`src/`], + entryPointStrategy: 'expand', + hideGenerator: true, + excludeExternals: true, + includeVersion: true, + searchInComments: true, + disableSources: true, + logLevel: 'Error', + sort: ['source-order'], + exclude: ['node_modules', 'src/**/*.js'] +}); + +const project = app.convert(); + +if (project) { + const doc = {}; + + const parseText = (text) => { + return text.replace(/{/g, '{').replace(/}/g, '}'); + }; + + project.children.forEach((module) => { + const { name, comment } = module; + + const description = comment && comment.summary.map((s) => s.text || '').join(' '); + + doc[name] = { + description + }; + + const module_component_group = module.groups?.find((g) => g.title === 'Component'); + let methods = { + description: staticMessages['methods'], + values: [] + }; + + module_component_group && + module_component_group.children.forEach((component) => { + const description = + component.comment && + component.comment.summary + .map((s) => { + const text = s.text || ''; + const splittedText = text.split('_'); + + return splittedText[1] ? splittedText[1] : text; + }) + .join(' '); + + !doc[name]['components'] && (doc[name]['components'] = {}); + + const component_method_group = component.groups && component.groups.find((g) => g.title === 'Methods'); + + component_method_group && + component_method_group.children.forEach((method) => { + const signature = method.getAllSignatures()[0]; + + methods.values.push({ + name: signature.name, + parameters: signature.parameters.map((param) => { + return { + name: param.name, + type: param.type.toString(), + description: param.comment && param.comment.summary.map((s) => s.text || '').join(' ') + }; + }), + returnType: signature.type.toString(), + description: signature.comment && signature.comment.summary.map((s) => s.text || '').join(' ') + }); + }); + + const component_props_id = component.extendedTypes && component.extendedTypes[0].typeArguments && component.extendedTypes[0].typeArguments[0] && component.extendedTypes[0].typeArguments[0]._target; + const module_properties_group = module.groups.find((g) => g.title === 'Properties'); + const component_props = module_properties_group && module_properties_group.children.find((c) => (component_props_id ? c.id === component_props_id : true)); + + const props = { + description: '', + values: [] + }; + const emit = { + description: staticMessages['emit'], + values: [] + }; + + if (component_props) { + props.description = component_props.comment ? component_props.comment.summary.map((s) => parseText(s.text || '')).join(' ') : ''; + + const component_props_group = component_props.groups && component_props.groups.find((g) => g.title === 'Properties'); + + component_props_group && + component_props_group.children.forEach((prop) => { + if (!prop.inheritedFrom || (prop.inheritedFrom && !prop.inheritedFrom.toString().startsWith('Omit.data-pr-'))) { + props.values.push({ + name: prop.name, + optional: prop.flags.isOptional, + readonly: prop.flags.isReadonly, + type: prop.type.toString(), + default: prop.comment && prop.comment.getTag('@defaultValue') ? parseText(prop.comment.getTag('@defaultValue').content[0]?.text || '') : '', // TODO: Check + description: prop.comment && prop.comment.summary.map((s) => parseText(s.text || '')).join(' '), + deprecated: prop.comment && prop.comment.getTag('@deprecated') ? parseText(prop.comment.getTag('@deprecated').content[0]?.text) : undefined + }); + } + }); + + const component_props_methods_group = component_props.groups && component_props.groups.find((g) => g.title === 'Methods'); + + component_props_methods_group && + component_props_methods_group.children.forEach((method) => { + const signature = method.getAllSignatures()[0]; + + methods.values.push({ + name: signature.name, + parameters: signature.parameters.map((param) => { + return { + name: param.name, + optional: param.flags.isOptional, + type: param.type.toString(), + description: param.comment && param.comment.summary.map((s) => parseText(s.text || '')).join(' ') + }; + }), + returnType: signature.type.toString(), + description: signature.comment.summary.map((s) => parseText(s.text || '')).join(' ') + }); + }); + } + + doc[name]['components'][component.name] = { + description, + methods + }; + }); + + const module_model_group = module.groups?.find((g) => g.title === 'Model'); + + module_model_group && + module_model_group.children.forEach((model) => { + const event_props_description = model.comment && model.comment.summary.map((s) => s.text || '').join(' '); + + !doc[name]['model'] && (doc[name]['model'] = {}); + + const props = { + description: '', + values: [] + }; + + const methods = { + description: '', + values: [] + }; + const model_props_group = model.groups.find((g) => g.title === 'Properties'); + + model_props_group && + model_props_group.children.forEach((prop) => { + props.values.push({ + name: prop.name, + optional: prop.flags.isOptional, + readonly: prop.flags.isReadonly, + type: prop.type.toString(), + default: prop.comment && prop.comment.getTag('@defaultValue') ? prop.comment.getTag('@defaultValue').content[0]?.text || '' : '', // TODO: Check + description: prop.comment && prop.comment.summary.map((s) => s.text || '').join(' ') + }); + }); + + const model_methods_group = model.groups.find((g) => g.title === 'Methods'); + + model_methods_group && + model_methods_group.children.forEach((method) => { + const signature = method.getAllSignatures()[0]; + const isSlot = model.name.includes('Slots'); + + methods.values.push({ + name: signature.name, + parameters: signature.parameters.map((param) => { + let type = param.type.toString(); + + if (param.type.declaration && isSlot) { + type = ''; + + if (param.type.declaration.children) { + param.type.declaration.children.forEach((child) => { + if (child.signatures) { + const childSinature = child.signatures[0]; + const parameters = childSinature.parameters.reduce((acc, { name, type }, index) => (index === 0 ? `${name}: ${type.name}` : `${acc}, ${name}: ${type.name}`), ''); + + type += ` \t ${childSinature.name}(${parameters}): ${childSinature.type?.name}, // ${childSinature.comment?.summary[0]?.text}\n `; + } else { + const childType = child.type.elementType ? child.type.elementType.name : child.type.name; + + type += ` \t ${child.name}: ${childType}, // ${child.comment?.summary[0]?.text}\n `; + } + }); + } + + type = `{\n ${type} }`; + } + + return { + name: param.name, + optional: param.flags.isOptional, + type: type, + description: param.comment && param.comment.summary.map((s) => parseText(s.text || '')).join(' ') + }; + }), + returnType: signature.type.toString(), + description: signature.comment && signature.comment.summary.map((s) => parseText(s.text || '')).join(' '), + deprecated: signature.comment && signature.comment.getTag('@deprecated') ? parseText(signature.comment.getTag('@deprecated').content[0]?.text) : undefined + }); + }); + + doc[name]['model'][model.name] = { + description: event_props_description, + props, + methods + }; + }); + + const module_functions_group = module.groups?.find((g) => g.title === 'Functions'); + + module_functions_group && + module_functions_group.children.forEach((method) => { + !doc[name]['functions'] && + (doc[name]['functions'] = { + description: staticMessages['functions'], + values: {} + }); + + const signatures = method.getAllSignatures(); + + if (signatures && signatures.length > 0) { + const signature = signatures[0]; + + doc[name]['functions'].values[method.name] = { + name: signature.name, + parameters: signature.parameters.map((param) => { + return { + name: param.name, + type: param.type.toString(), + description: param.comment && param.comment.summary.map((s) => s.text || '').join(' ') + }; + }), + returnType: signature.type.toString(), + description: signature.comment && signature.comment.summary.map((s) => s.text || '').join(' ') + }; + } + }); + + const module_events_group = module.groups?.find((g) => g.title === 'Events'); + + module_events_group && + module_events_group.children.forEach((event) => { + const event_props_description = event.comment && event.comment.summary.map((s) => s.text || '').join(' '); + const component_prop = event.comment && event.comment.getTag('@see') ? event.comment.getTag('@see').content[0]?.text || '' : ''; // TODO: Check + const event_extendedBy = event.extendedBy && event.extendedBy.toString(); + + !doc[name]['events'] && + (doc[name]['events'] = { + description: staticMessages['events'], + values: {} + }); + + const props = []; + const event_props_group = event.groups.find((g) => g.title === 'Properties'); + + event_props_group && + event_props_group.children.forEach((prop) => { + props.push({ + name: prop.name, + optional: prop.flags.isOptional, + readonly: prop.flags.isReadonly, + type: prop.type.toString(), + //default: prop.comment && prop.comment.getTag('@defaultValue') ? prop.comment.getTag('@defaultValue').content[0].text : '', // TODO: Check + description: prop.comment && prop.comment.summary.map((s) => s.text || '').join(' ') + }); + }); + + doc[name]['events'].values[event.name] = { + description: event_props_description, + relatedProp: component_prop, + props, + extendedBy: event_extendedBy + }; + }); + + const module_interfaces_group = module.groups?.find((g) => g.title === 'Interfaces'); + + module_interfaces_group && + module_interfaces_group.children.forEach((event) => { + const event_props_description = event.comment && event.comment.summary.map((s) => s.text || '').join(' '); + let component_prop = ''; + + if (event.comment && event.comment.getTag('@see')) { + const tag = event.comment.getTag('@see'); + const content = tag.content[0]; + + if (content.text.includes("['")) { + component_prop = `${content.target.name}${content.text}`; + } else { + component_prop = `${content.text === content.target?.name ? content.target.parent.name : content.target?.name}.${content.text}`; + } + } + + const event_extendedBy = event.extendedBy && event.extendedBy.toString(); + const event_extendedTypes = event.extendedTypes && event.extendedTypes.toString(); + + !doc[name]['interfaces'] && + (doc[name]['interfaces'] = { + description: staticMessages['interfaces'], + eventDescription: staticMessages['events'], + methodDescription: staticMessages['methods'], + typeDescription: staticMessages['types'], + + values: {} + }); + + const props = []; + const methods = []; + + if (event.groups) { + const event_props_group = event.groups.find((g) => g.title === 'Properties'); + + event_props_group && + event_props_group.children.forEach((prop) => { + props.push({ + name: prop.name, + optional: prop.flags.isOptional, + readonly: prop.flags.isReadonly, + type: prop.type.toString(), + default: prop.comment && prop.comment.getTag('@defaultValue') ? prop.comment.getTag('@defaultValue').content[0]?.text || '' : '', // TODO: Check + description: + prop.comment && + prop.comment.summary + .map((s) => { + if (s.text.indexOf('[here]') > -1) { + return `${s.text.slice(0, s.text.indexOf('[here]'))} here ${s.text.slice(s.text.indexOf(')') + 1)}`; + } + + return s.text || ''; + }) + .join(' '), + deprecated: prop.comment && prop.comment.getTag('@deprecated') ? parseText(prop.comment.getTag('@deprecated').content[0]?.text) : undefined + }); + }); + + const event_methods_group = event.groups.find((g) => g.title === 'Methods'); + + event_methods_group && + event_methods_group.children.forEach((method) => { + const signature = method.getAllSignatures()[0]; + const isSlot = event.name.includes('Slots'); + + methods.push({ + name: signature.name, + parameters: signature.parameters.map((param) => { + let type = param.type.toString(); + + if (param.type.declaration && isSlot) { + type = ''; + + if (param.type.declaration.children) { + param.type.declaration.children.forEach((child) => { + if (child.signatures) { + const childSinature = child.signatures[0]; + const parameters = childSinature.parameters.reduce((acc, { name, type }, index) => (index === 0 ? `${name}: ${type.name}` : `${acc}, ${name}: ${type.name}`), ''); + + type += ` \t ${childSinature.name}(${parameters}): ${childSinature.type?.name}, // ${childSinature.comment?.summary[0]?.text}\n `; + } else { + if (child.type?.declaration?.signatures) { + let functionParameters = ''; + + child.type?.declaration?.signatures[0]?.parameters.map((param, index) => { + if (index !== 0) functionParameters += `, `; + functionParameters += `${param.name}: ${param.type?.name}`; + }); + + if (child.type?.declaration?.signatures[0]?.comment?.getTag('@deprecated')?.content[0]?.text) { + type += `\t ${child.name}: (${functionParameters}) ⇒ ${child.type?.declaration?.signatures[0]?.type?.name}, // ${child.type?.declaration?.signatures[0]?.comment.summary[0]?.text}\n`; + } else { + type += `\t ${child.name}: (${functionParameters}) ⇒ ${child.type?.declaration?.signatures[0]?.type?.name}, // ${child.type?.declaration?.signatures[0]?.comment.summary[0]?.text}\n`; + } + } else { + const childType = child.type.elementType ? child.type.elementType.name : child.type.name; + + type += ` \t ${child.name}: ${childType}, // ${child.comment?.summary[0]?.text}\n `; + } + } + }); + } + + type = `{\n ${type}}`; + } + + return { + name: param.name, + optional: param.flags.isOptional, + type: type, + description: param.comment && param.comment.summary.map((s) => parseText(s.text || '')).join(' ') + }; + }), + returnType: signature.type.toString(), + description: signature.comment && signature.comment.summary.map((s) => parseText(s.text || '')).join(' '), + deprecated: signature.comment && signature.comment.getTag('@deprecated') ? parseText(signature.comment.getTag('@deprecated').content[0]?.text) : undefined + }); + }); + } + + const signature = event.getAllSignatures(); + + if (signature && signature.length > 0) { + const parameter = signature[0].parameters[0]; + + props.push({ + name: `[${parameter.name}: ${parameter.type.toString()}]`, + optional: parameter.flags.isOptional, + readonly: parameter.flags.isReadonly, + type: signature[0].type.toString(), + //default: prop.comment && prop.comment.getTag('@defaultValue') ? prop.comment.getTag('@defaultValue').content[0].text : '', // TODO: Check + description: signature[0].comment && signature[0].comment.summary.map((s) => s.text || '').join(' ') + }); + } + + doc[name]['interfaces'].values[event.name] = { + description: event_props_description, + relatedProp: component_prop, + props, + methods, + extendedBy: event_extendedBy, + extendedTypes: event_extendedTypes + }; + + !doc[name]['tokens'] && + (doc[name]['tokens'] = { + description: staticMessages['tokens'], + values: {} + }); + + const tokens = []; + + const setTokens = (_declaration, _name) => { + if (_declaration?.groups) { + const event_props_group = _declaration.groups.find((g) => g.title === 'Properties'); + + event_props_group && + event_props_group.children.forEach((prop) => { + if (prop.type?.declaration) { + setTokens(prop.type?.declaration, prop.name); + } else if (prop.comment?.getTag('@designToken')) { + tokens.push({ + name: _name ? `${_name}.${prop.name}` : prop.name, + token: prop.comment.getTag('@designToken').content[0]?.text || '', + optional: prop.flags.isOptional, + readonly: prop.flags.isReadonly, + type: prop.type.toString(), + default: prop.comment && prop.comment.getTag('@defaultValue') ? prop.comment.getTag('@defaultValue').content[0]?.text || '' : '', // TODO: Check + description: + prop.comment && + prop.comment.summary + .map((s) => { + if (s.text.indexOf('[here]') > -1) { + return `${s.text.slice(0, s.text.indexOf('[here]'))} here ${s.text.slice(s.text.indexOf(')') + 1)}`; + } + + return s.text || ''; + }) + .join(' '), + deprecated: prop.comment && prop.comment.getTag('@deprecated') ? parseText(prop.comment.getTag('@deprecated').content[0]?.text) : undefined + }); + } + }); + } + }; + + setTokens(event); + + doc[name]['tokens'].values[event.name] = { + description: event_props_description, + props: tokens + }; + }); + + const module_enumerations_group = module.groups?.find((g) => g.title === 'Enumerations'); + + module_enumerations_group && + module_enumerations_group.children.forEach((event) => { + const event_props_description = event.comment && event.comment.summary.map((s) => s.text || '').join(' '); + + !doc[name]['enumerations'] && + (doc[name]['enumerations'] = { + description: staticMessages['enumerations'], + + values: {} + }); + + const members = []; + + if (event.groups) { + const event_members_group = event.groups.find((g) => g.title === 'Enumeration Members'); + + event_members_group && + event_members_group.children.forEach((prop) => { + members.push({ + name: prop.name, + optional: prop.flags.isOptional, + readonly: prop.flags.isReadonly, + value: prop.type.toString(), + description: + prop.comment && + prop.comment.summary + .map((s) => { + if (s.text.indexOf('[here]') > -1) { + return `${s.text.slice(0, s.text.indexOf('[here]'))} here ${s.text.slice(s.text.indexOf(')') + 1)}`; + } + + return s.text || ''; + }) + .join(' '), + deprecated: prop.comment && prop.comment.getTag('@deprecated') ? parseText(prop.comment.getTag('@deprecated').content[0]?.text) : undefined + }); + }); + } + + doc[name]['enumerations'].values[event.name] = { + description: event_props_description, + members + }; + }); + + const module_types_group = module.groups?.find((g) => g.title === 'Type Aliases'); + + module_types_group && + module_types_group.children.forEach((event) => { + const event_props_description = event.comment && event.comment.summary.map((s) => s.text || '').join(' '); + + !doc[name]['types'] && + (doc[name]['types'] = { + description: staticMessages['types'], + values: {} + }); + + let values = event.type.toString(); + + if (values.includes('Function') && event.type.types) { + values = ''; + + for (const [i, type] of event.type.types.entries()) { + if (type.declaration && type.declaration.signatures) { + const signature = type.declaration.signatures[0]; + const parameters = signature.parameters.reduce((acc, { name, type }, index) => (index === 0 ? `${name}: ${type.name}` : `${acc}, ${name}: ${type.name}`), ''); + + values += i === 0 ? `(${parameters}) => ${signature.type?.name}` : ` | (${parameters}) => ${signature.type?.name}`; + } else { + const typeName = type.name || type.value; + + values += i === 0 ? `${typeName}` : ` | ${typeName}`; + } + } + } + + const declaration = event.type.declaration; + + if (declaration) { + const groups = declaration.groups && declaration.groups.find((g) => g.title === 'Properties'); + + const map = {}; + + groups && + groups.children.forEach((prop) => { + const description = prop.comment && prop.comment.summary.map((s) => s.text || '').join(' '); + + map[`${prop.name}${prop.flags.isOptional ? '?' : ''}`] = `${prop.type.toString()}, ${description ? '// ' + description : ''}`; + }); + + values = JSON.stringify(map, null, 4); + } + + doc[name]['types'].values[event.name] = { + values, + description: event_props_description + }; + }); + + const module_namespaces_group = module.groups?.find((g) => g.title === 'Namespaces'); + + module_namespaces_group && + module_namespaces_group.children.forEach((pevent) => { + const module_interfaces_group = pevent?.groups?.find((g) => g.title === 'Interfaces'); + + module_interfaces_group && + module_interfaces_group.children.forEach((event) => { + const event_props_description = event.comment && event.comment.summary.map((s) => s.text || '').join(' '); + let component_prop = ''; + + if (event.comment && event.comment.getTag('@see')) { + const tag = event.comment.getTag('@see'); + const content = tag.content[0]; + + if (content.text.includes("['")) { + component_prop = `${content.target.name}${content.text}`; + } else { + component_prop = `${content.text === content.target?.name ? content.target.parent.name : content.target?.name}.${content.text}`; + } + } + + !doc[name]['tokens'] && + (doc[name]['tokens'] = { + description: staticMessages['tokens'], + values: {} + }); + + const props = []; + + const setProps = (_declaration, _name) => { + if (_declaration?.groups) { + const event_props_group = _declaration.groups.find((g) => g.title === 'Properties'); + + event_props_group && + event_props_group.children.forEach((prop) => { + if (prop.type?.declaration) { + setProps(prop.type?.declaration, prop.name); + } else if (prop.comment?.getTag('@designToken')) { + props.push({ + name: _name ? `${_name}.${prop.name}` : prop.name, + token: prop.comment.getTag('@designToken').content[0]?.text || '', + optional: prop.flags.isOptional, + readonly: prop.flags.isReadonly, + type: prop.type.toString(), + default: prop.comment && prop.comment.getTag('@defaultValue') ? prop.comment.getTag('@defaultValue').content[0]?.text || '' : '', // TODO: Check + description: + prop.comment && + prop.comment.summary + .map((s) => { + if (s.text.indexOf('[here]') > -1) { + return `${s.text.slice(0, s.text.indexOf('[here]'))} here ${s.text.slice( + s.text.indexOf(')') + 1 + )}`; + } + + return s.text || ''; + }) + .join(' '), + deprecated: prop.comment && prop.comment.getTag('@deprecated') ? parseText(prop.comment.getTag('@deprecated').content[0]?.text) : undefined + }); + } + }); + } + }; + + setProps(event); + + doc[name]['tokens'].values[event.name] = { + description: event_props_description, + props + }; + }); + }); + + const module_designtokens_group = module.groups?.find((g) => g.title === 'DesignTokens'); + + module_designtokens_group && + module_designtokens_group.children.forEach((event) => { + const event_props_description = event.comment && event.comment.summary.map((s) => s.text || '').join(' '); + let component_prop = ''; + + if (event.comment && event.comment.getTag('@see')) { + const tag = event.comment.getTag('@see'); + const content = tag.content[0]; + + if (content.text.includes("['")) { + component_prop = `${content.target.name}${content.text}`; + } else { + component_prop = `${content.text === content.target?.name ? content.target.parent.name : content.target?.name}.${content.text}`; + } + } + + !doc[name]['tokens'] && + (doc[name]['tokens'] = { + description: staticMessages['tokens'], + values: {} + }); + + const props = []; + + const setProps = (_declaration, _name) => { + if (_declaration?.groups) { + const event_props_group = _declaration.groups.find((g) => g.title === 'Properties'); + + event_props_group && + event_props_group.children.forEach((prop) => { + if (prop.type?.declaration) { + setProps(prop.type?.declaration, prop.name); + } else if (prop.comment?.getTag('@designToken')) { + props.push({ + name: _name ? `${_name}.${prop.name}` : prop.name, + token: prop.comment.getTag('@designToken').content[0]?.text || '', + optional: prop.flags.isOptional, + readonly: prop.flags.isReadonly, + type: prop.type.toString(), + default: prop.comment && prop.comment.getTag('@defaultValue') ? prop.comment.getTag('@defaultValue').content[0]?.text || '' : '', // TODO: Check + description: + prop.comment && + prop.comment.summary + .map((s) => { + if (s.text.indexOf('[here]') > -1) { + return `${s.text.slice(0, s.text.indexOf('[here]'))} here ${s.text.slice(s.text.indexOf(')') + 1)}`; + } + + return s.text || ''; + }) + .join(' '), + deprecated: prop.comment && prop.comment.getTag('@deprecated') ? parseText(prop.comment.getTag('@deprecated').content[0]?.text) : undefined + }); + } + }); + } + }; + + setProps(event); + + doc[name]['tokens'].values[event.name] = { + description: event_props_description, + props + }; + }); + + // app.generateJson(module, `./api-generator/module-typedoc.json`); + }); + + const typedocJSON = JSON.stringify(doc, null, 4); + + !fs.existsSync(outputPath) && fs.mkdirSync(outputPath); + fs.writeFileSync(path.resolve(outputPath, 'index.json'), typedocJSON); + + // app.generateJson(project, `./api-generator/typedoc.json`); +} diff --git a/apps/showcase/tsconfig.json b/apps/showcase/tsconfig.json new file mode 100644 index 000000000..e916b8667 --- /dev/null +++ b/apps/showcase/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": false, + "jsx": "preserve", + "incremental": true + }, + "include": ["../../packages/primevue/src/**/*.d.ts", "../../packages/primevue/src/**/style/*.d.ts", "../../packages/themes/types"], + "exclude": ["node_modules", "**/node_modules", "**/dist"] +} diff --git a/apps/showcase/typedoc.json b/apps/showcase/typedoc.json new file mode 100644 index 000000000..032d511bd --- /dev/null +++ b/apps/showcase/typedoc.json @@ -0,0 +1,5 @@ +{ + "$schema": "https://typedoc.org/schema.json", + "entryPoints": ["../../packages/primevue", "../../packages/themes"], + "sort": ["source-order"] +} diff --git a/package.json b/package.json index b17c89833..87b7cc5d9 100644 --- a/package.json +++ b/package.json @@ -28,11 +28,12 @@ "build:themes": "pnpm --filter themes build", "build:icons": "pnpm --filter icons build", "build:showcase": "pnpm --filter showcase build:prebuild", + "build:apidoc": "pnpm --filter showcase build:apidoc", "dev": "pnpm --filter showcase dev", "module:dev": "pnpm --filter @primevue/nuxt-module dev", "security:check": "pnpm audit --prod --audit-level high", - "format": "prettier --write \"**/*.{vue,js,mjs,ts,d.ts}\" \"!packages/themes/types/**/*.d.ts\" --cache", - "format:check": "prettier --check \"**/*.{vue,js,mjs,ts,d.ts}\" \"!packages/themes/types/**/*.d.ts\"", + "format": "prettier --write \"**/*.{vue,js,mjs,ts,d.ts}\" --cache", + "format:check": "prettier --check \"**/*.{vue,js,mjs,ts,d.ts}\"", "lint": "eslint --ext \".vue,.js,.mjs,.ts\" --ignore-path .gitignore . --cache", "lint:fix": "eslint --fix --ext \".vue,.js,.mjs,.ts\" --ignore-path .gitignore ." }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6897cf496..32ef523b7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -52,7 +52,7 @@ importers: version: 4.0.2(postcss@8.4.38) rollup-plugin-vue: specifier: ^6.0.0-beta.9 - version: 6.0.0(@vue/compiler-sfc@3.4.30) + version: 6.0.0(@vue/compiler-sfc@3.4.31) typescript: specifier: ^4.9.4 version: 4.9.5 @@ -67,7 +67,7 @@ importers: version: 0.6.3(magicast@0.3.4)(rollup@3.29.4) vee-validate: specifier: ^4.8.2 - version: 4.13.1(vue@3.4.30(typescript@5.5.2)) + version: 4.13.1(vue@3.4.31(typescript@5.5.2)) devDependencies: '@primevue/core': specifier: workspace:* @@ -83,7 +83,7 @@ importers: version: 1.10.0 '@vitejs/plugin-vue': specifier: 4.1.0 - version: 4.1.0(vite@4.2.3(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1))(vue@3.4.30(typescript@5.5.2)) + version: 4.1.0(vite@4.2.3(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1))(vue@3.4.31(typescript@5.5.2)) '@vitest/coverage-istanbul': specifier: ^0.29.8 version: 0.29.8(vitest@0.29.8(jsdom@19.0.0)(sass@1.77.6)(terser@5.31.1)) @@ -147,7 +147,7 @@ importers: version: 8.1.0(postcss@8.4.38)(typescript@5.5.2) unplugin-vue-components: specifier: ^0.27.0 - version: 0.27.0(@babel/parser@7.24.7)(@nuxt/kit@3.12.2(magicast@0.3.4)(rollup@4.18.0))(rollup@4.18.0)(vue@3.4.30(typescript@5.5.2)) + version: 0.27.0(@babel/parser@7.24.7)(@nuxt/kit@3.12.2(magicast@0.3.4)(rollup@4.18.0))(rollup@4.18.0)(vue@3.4.31(typescript@5.5.2)) publishDirectory: dist packages/core: @@ -160,7 +160,7 @@ importers: version: 0.0.5 vue: specifier: ^3.0.0 - version: 3.4.30(typescript@5.5.2) + version: 3.4.31(typescript@5.5.2) publishDirectory: dist packages/icons: @@ -193,7 +193,7 @@ importers: version: link:../primevue unplugin-vue-components: specifier: 0.27.0 - version: 0.27.0(@babel/parser@7.24.7)(@nuxt/kit@3.12.2(magicast@0.3.4)(rollup@4.18.0))(rollup@4.18.0)(vue@3.4.30(typescript@5.5.2)) + version: 0.27.0(@babel/parser@7.24.7)(@nuxt/kit@3.12.2(magicast@0.3.4)(rollup@4.18.0))(rollup@4.18.0)(vue@3.4.31(typescript@5.5.2)) devDependencies: '@nuxt/devtools': specifier: ^0.8.5 @@ -209,7 +209,7 @@ importers: version: 3.12.2(rollup@4.18.0) '@nuxt/test-utils': specifier: ^3.7.3 - version: 3.13.1(@vue/test-utils@2.4.6)(h3@1.12.0)(magicast@0.3.4)(nitropack@2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(rollup@4.18.0)(vitest@1.6.0(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1))(vue-router@4.4.0(vue@3.4.30(typescript@5.5.2)))(vue@3.4.30(typescript@5.5.2)) + version: 3.13.1(@vue/test-utils@2.4.6)(h3@1.12.0)(magicast@0.3.4)(nitropack@2.9.7(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(rollup@4.18.0)(vitest@1.6.0(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1))(vue-router@4.4.0(vue@3.4.31(typescript@5.5.2)))(vue@3.4.31(typescript@5.5.2)) '@primevue/themes': specifier: workspace:* version: link:../themes @@ -221,7 +221,7 @@ importers: version: 0.5.5(magicast@0.3.4) nitropack: specifier: ^2.6.3 - version: 2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4) + version: 2.9.7(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4) nuxt: specifier: 3.3.2 version: 3.3.2(@types/node@18.19.39)(encoding@0.1.13)(eslint@8.57.0)(ioredis@5.4.1)(magicast@0.3.4)(optionator@0.9.4)(rollup@4.18.0)(sass@1.77.6)(terser@5.31.1)(typescript@5.5.2) @@ -2601,37 +2601,37 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@vue/compiler-core@3.4.30': - resolution: {integrity: sha512-ZL8y4Xxdh8O6PSwfdZ1IpQ24PjTAieOz3jXb/MDTfDtANcKBMxg1KLm6OX2jofsaQGYfIVzd3BAG22i56/cF1w==} + '@vue/compiler-core@3.4.31': + resolution: {integrity: sha512-skOiodXWTV3DxfDhB4rOf3OGalpITLlgCeOwb+Y9GJpfQ8ErigdBUHomBzvG78JoVE8MJoQsb+qhZiHfKeNeEg==} - '@vue/compiler-dom@3.4.30': - resolution: {integrity: sha512-+16Sd8lYr5j/owCbr9dowcNfrHd+pz+w2/b5Lt26Oz/kB90C9yNbxQ3bYOvt7rI2bxk0nqda39hVcwDFw85c2Q==} + '@vue/compiler-dom@3.4.31': + resolution: {integrity: sha512-wK424WMXsG1IGMyDGyLqB+TbmEBFM78hIsOJ9QwUVLGrcSk0ak6zYty7Pj8ftm7nEtdU/DGQxAXp0/lM/2cEpQ==} - '@vue/compiler-sfc@3.4.30': - resolution: {integrity: sha512-8vElKklHn/UY8+FgUFlQrYAPbtiSB2zcgeRKW7HkpSRn/JjMRmZvuOtwDx036D1aqKNSTtXkWRfqx53Qb+HmMg==} + '@vue/compiler-sfc@3.4.31': + resolution: {integrity: sha512-einJxqEw8IIJxzmnxmJBuK2usI+lJonl53foq+9etB2HAzlPjAS/wa7r0uUpXw5ByX3/0uswVSrjNb17vJm1kQ==} - '@vue/compiler-ssr@3.4.30': - resolution: {integrity: sha512-ZJ56YZGXJDd6jky4mmM0rNaNP6kIbQu9LTKZDhcpddGe/3QIalB1WHHmZ6iZfFNyj5mSypTa4+qDJa5VIuxMSg==} + '@vue/compiler-ssr@3.4.31': + resolution: {integrity: sha512-RtefmITAje3fJ8FSg1gwgDhdKhZVntIVbwupdyZDSifZTRMiWxWehAOTCc8/KZDnBOcYQ4/9VWxsTbd3wT0hAA==} '@vue/devtools-api@6.6.3': resolution: {integrity: sha512-0MiMsFma/HqA6g3KLKn+AGpL1kgKhFWszC9U29NfpWK5LE7bjeXxySWJrOJ77hBz+TBrBQ7o4QJqbPbqbs8rJw==} - '@vue/reactivity@3.4.30': - resolution: {integrity: sha512-bVJurnCe3LS0JII8PPoAA63Zd2MBzcKrEzwdQl92eHCcxtIbxD2fhNwJpa+KkM3Y/A4T5FUnmdhgKwOf6BfbcA==} + '@vue/reactivity@3.4.31': + resolution: {integrity: sha512-VGkTani8SOoVkZNds1PfJ/T1SlAIOf8E58PGAhIOUDYPC4GAmFA2u/E14TDAFcf3vVDKunc4QqCe/SHr8xC65Q==} - '@vue/runtime-core@3.4.30': - resolution: {integrity: sha512-qaFEbnNpGz+tlnkaualomogzN8vBLkgzK55uuWjYXbYn039eOBZrWxyXWq/7qh9Bz2FPifZqGjVDl/FXiq9L2g==} + '@vue/runtime-core@3.4.31': + resolution: {integrity: sha512-LDkztxeUPazxG/p8c5JDDKPfkCDBkkiNLVNf7XZIUnJ+66GVGkP+TIh34+8LtPisZ+HMWl2zqhIw0xN5MwU1cw==} - '@vue/runtime-dom@3.4.30': - resolution: {integrity: sha512-tV6B4YiZRj5QsaJgw2THCy5C1H+2UeywO9tqgWEc21tn85qHEERndHN/CxlyXvSBFrpmlexCIdnqPuR9RM9thw==} + '@vue/runtime-dom@3.4.31': + resolution: {integrity: sha512-2Auws3mB7+lHhTFCg8E9ZWopA6Q6L455EcU7bzcQ4x6Dn4cCPuqj6S2oBZgN2a8vJRS/LSYYxwFFq2Hlx3Fsaw==} - '@vue/server-renderer@3.4.30': - resolution: {integrity: sha512-TBD3eqR1DeDc0cMrXS/vEs/PWzq1uXxnvjoqQuDGFIEHFIwuDTX/KWAQKIBjyMWLFHEeTDGYVsYci85z2UbTDg==} + '@vue/server-renderer@3.4.31': + resolution: {integrity: sha512-D5BLbdvrlR9PE3by9GaUp1gQXlCNadIZytMIb8H2h3FMWJd4oUfkUTEH2wAr3qxoRz25uxbTcbqd3WKlm9EHQA==} peerDependencies: - vue: 3.4.30 + vue: 3.4.31 - '@vue/shared@3.4.30': - resolution: {integrity: sha512-CLg+f8RQCHQnKvuHY9adMsMaQOcqclh6Z5V9TaoMgy0ut0tz848joZ7/CYFFyF/yZ5i2yaw7Fn498C+CNZVHIg==} + '@vue/shared@3.4.31': + resolution: {integrity: sha512-Yp3wtJk//8cO4NItOPpi3QkLExAr/aLBGZMmTtW9WpdwBCJpRM6zj9WgWktXAl8IDIozwNMByT45JP3tO3ACWA==} '@vue/test-utils@2.4.6': resolution: {integrity: sha512-FMxEjOpYNYiFe0GkaHsnJPXFHxQ6m4t8vI/ElPGpMWxZKpmRvQ33OIrvRXemy6yha03RxhOlQuy+gZMC3CQSow==} @@ -3495,8 +3495,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.4.812: - resolution: {integrity: sha512-7L8fC2Ey/b6SePDFKR2zHAy4mbdp1/38Yk5TsARO66W3hC5KEaeKMMHoxwtuH+jcu2AYLSn9QX04i95t6Fl1Hg==} + electron-to-chromium@1.4.814: + resolution: {integrity: sha512-GVulpHjFu1Y9ZvikvbArHmAhZXtm3wHlpjTMcXNGKl4IQ4jMQjlnz8yMQYYqdLHKi/jEL2+CBC2akWVCoIGUdw==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -4497,8 +4497,8 @@ packages: loupe@2.3.7: resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - lru-cache@10.2.2: - resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} + lru-cache@10.3.0: + resolution: {integrity: sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==} engines: {node: 14 || >=16.14} lru-cache@5.1.1: @@ -4729,8 +4729,8 @@ packages: engines: {node: ^14.16.0 || ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0} hasBin: true - nitropack@2.9.6: - resolution: {integrity: sha512-HP2PE0dREcDIBVkL8Zm6eVyrDd10/GI9hTL00PHvjUM8I9Y/2cv73wRDmxNyInfrx/CJKHATb2U/pQrqpzJyXA==} + nitropack@2.9.7: + resolution: {integrity: sha512-aKXvtNrWkOCMsQbsk4A0qQdBjrJ1ZcvwlTQevI/LAgLWLYc5L7Q/YiYxGLal4ITyNSlzir1Cm1D2ZxnYhmpMEw==} engines: {node: ^16.11.0 || >=17.0.0} hasBin: true peerDependencies: @@ -6556,8 +6556,8 @@ packages: terser: optional: true - vite@5.3.1: - resolution: {integrity: sha512-XBmSKRLXLxiaPYamLv3/hnP/KXDai1NDexN0FpkTaZXTfycHvkRHoenpgl/fvuK/kPbB6xAgoyiryAhQNxYmAQ==} + vite@5.3.2: + resolution: {integrity: sha512-6lA7OBHBlXUxiJxbO5aAY2fsHHzDr1q7DvXYnyZycRs2Dz+dXBWuhpWHvmljTRTpQC2uvGmUFFkSHF2vGo90MA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -6693,8 +6693,8 @@ packages: peerDependencies: vue: ^3.2.0 - vue@3.4.30: - resolution: {integrity: sha512-NcxtKCwkdf1zPsr7Y8+QlDBCGqxvjLXF2EX+yi76rV5rrz90Y6gK1cq0olIhdWGgrlhs9ElHuhi9t3+W5sG5Xw==} + vue@3.4.31: + resolution: {integrity: sha512-njqRrOy7W3YLAlVqSKpBebtZpDVg21FPoaq1I7f/+qqBThK9ChAIjkRWgeP6Eat+8C+iia4P3OYqpATP21BCoQ==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -8337,7 +8337,7 @@ snapshots: agent-base: 7.1.1 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.4 - lru-cache: 10.2.2 + lru-cache: 10.3.0 socks-proxy-agent: 8.0.3 transitivePeerDependencies: - supports-color @@ -8349,7 +8349,7 @@ snapshots: '@npmcli/git@5.0.7': dependencies: '@npmcli/promise-spawn': 7.0.2 - lru-cache: 10.2.2 + lru-cache: 10.3.0 npm-pick-manifest: 9.0.1 proc-log: 4.2.0 promise-inflight: 1.0.1 @@ -8723,7 +8723,7 @@ snapshots: - rollup - supports-color - '@nuxt/test-utils@3.13.1(@vue/test-utils@2.4.6)(h3@1.12.0)(magicast@0.3.4)(nitropack@2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(rollup@4.18.0)(vitest@1.6.0(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1))(vue-router@4.4.0(vue@3.4.30(typescript@5.5.2)))(vue@3.4.30(typescript@5.5.2))': + '@nuxt/test-utils@3.13.1(@vue/test-utils@2.4.6)(h3@1.12.0)(magicast@0.3.4)(nitropack@2.9.7(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(rollup@4.18.0)(vitest@1.6.0(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1))(vue-router@4.4.0(vue@3.4.31(typescript@5.5.2)))(vue@3.4.31(typescript@5.5.2))': dependencies: '@nuxt/kit': 3.12.2(magicast@0.3.4)(rollup@4.18.0) '@nuxt/schema': 3.12.2(rollup@4.18.0) @@ -8738,7 +8738,7 @@ snapshots: h3: 1.12.0 local-pkg: 0.5.0 magic-string: 0.30.10 - nitropack: 2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4) + nitropack: 2.9.7(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4) node-fetch-native: 1.6.4 ofetch: 1.3.4 pathe: 1.1.2 @@ -8749,9 +8749,9 @@ snapshots: ufo: 1.5.3 unenv: 1.9.0 unplugin: 1.10.1 - vitest-environment-nuxt: 1.0.0(@vue/test-utils@2.4.6)(h3@1.12.0)(magicast@0.3.4)(nitropack@2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(rollup@4.18.0)(vitest@1.6.0(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1))(vue-router@4.4.0(vue@3.4.30(typescript@5.5.2)))(vue@3.4.30(typescript@5.5.2)) - vue: 3.4.30(typescript@5.5.2) - vue-router: 4.4.0(vue@3.4.30(typescript@5.5.2)) + vitest-environment-nuxt: 1.0.0(@vue/test-utils@2.4.6)(h3@1.12.0)(magicast@0.3.4)(nitropack@2.9.7(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(rollup@4.18.0)(vitest@1.6.0(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1))(vue-router@4.4.0(vue@3.4.31(typescript@5.5.2)))(vue@3.4.31(typescript@5.5.2)) + vue: 3.4.31(typescript@5.5.2) + vue-router: 4.4.0(vue@3.4.31(typescript@5.5.2)) optionalDependencies: '@vue/test-utils': 2.4.6 vitest: 1.6.0(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1) @@ -8762,12 +8762,12 @@ snapshots: '@nuxt/ui-templates@1.3.4': {} - '@nuxt/vite-builder@3.3.2(@types/node@18.19.39)(eslint@8.57.0)(magicast@0.3.4)(optionator@0.9.4)(sass@1.77.6)(terser@5.31.1)(typescript@5.5.2)(vue@3.4.30(typescript@5.5.2))': + '@nuxt/vite-builder@3.3.2(@types/node@18.19.39)(eslint@8.57.0)(magicast@0.3.4)(optionator@0.9.4)(sass@1.77.6)(terser@5.31.1)(typescript@5.5.2)(vue@3.4.31(typescript@5.5.2))': dependencies: '@nuxt/kit': 3.3.2(magicast@0.3.4)(rollup@3.29.4) '@rollup/plugin-replace': 5.0.7(rollup@3.29.4) - '@vitejs/plugin-vue': 4.1.0(vite@4.2.3(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1))(vue@3.4.30(typescript@5.5.2)) - '@vitejs/plugin-vue-jsx': 3.1.0(vite@4.2.3(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1))(vue@3.4.30(typescript@5.5.2)) + '@vitejs/plugin-vue': 4.1.0(vite@4.2.3(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1))(vue@3.4.31(typescript@5.5.2)) + '@vitejs/plugin-vue-jsx': 3.1.0(vite@4.2.3(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1))(vue@3.4.31(typescript@5.5.2)) autoprefixer: 10.4.19(postcss@8.4.38) chokidar: 3.6.0 clear: 0.1.0 @@ -8799,7 +8799,7 @@ snapshots: vite: 4.2.3(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1) vite-node: 0.29.8(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1) vite-plugin-checker: 0.5.6(eslint@8.57.0)(optionator@0.9.4)(typescript@5.5.2)(vite@4.2.3(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1)) - vue: 3.4.30(typescript@5.5.2) + vue: 3.4.31(typescript@5.5.2) vue-bundle-renderer: 1.0.3 transitivePeerDependencies: - '@types/node' @@ -9484,13 +9484,13 @@ snapshots: '@unhead/schema': 1.9.14 '@unhead/shared': 1.9.14 - '@unhead/vue@1.9.14(vue@3.4.30(typescript@5.5.2))': + '@unhead/vue@1.9.14(vue@3.4.31(typescript@5.5.2))': dependencies: '@unhead/schema': 1.9.14 '@unhead/shared': 1.9.14 hookable: 5.5.3 unhead: 1.9.14 - vue: 3.4.30(typescript@5.5.2) + vue: 3.4.31(typescript@5.5.2) '@vercel/nft@0.22.6(encoding@0.1.13)': dependencies: @@ -9527,20 +9527,20 @@ snapshots: - encoding - supports-color - '@vitejs/plugin-vue-jsx@3.1.0(vite@4.2.3(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1))(vue@3.4.30(typescript@5.5.2))': + '@vitejs/plugin-vue-jsx@3.1.0(vite@4.2.3(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1))(vue@3.4.31(typescript@5.5.2))': dependencies: '@babel/core': 7.24.7 '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.24.7) '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.24.7) vite: 4.2.3(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1) - vue: 3.4.30(typescript@5.5.2) + vue: 3.4.31(typescript@5.5.2) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@4.1.0(vite@4.2.3(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1))(vue@3.4.30(typescript@5.5.2))': + '@vitejs/plugin-vue@4.1.0(vite@4.2.3(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1))(vue@3.4.31(typescript@5.5.2))': dependencies: vite: 4.2.3(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1) - vue: 3.4.30(typescript@5.5.2) + vue: 3.4.31(typescript@5.5.2) '@vitest/coverage-istanbul@0.29.8(vitest@0.29.8(jsdom@19.0.0)(sass@1.77.6)(terser@5.31.1))': dependencies: @@ -9633,63 +9633,63 @@ snapshots: '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.24.7 '@babel/parser': 7.24.7 - '@vue/compiler-sfc': 3.4.30 + '@vue/compiler-sfc': 3.4.31 - '@vue/compiler-core@3.4.30': + '@vue/compiler-core@3.4.31': dependencies: '@babel/parser': 7.24.7 - '@vue/shared': 3.4.30 + '@vue/shared': 3.4.31 entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.2.0 - '@vue/compiler-dom@3.4.30': + '@vue/compiler-dom@3.4.31': dependencies: - '@vue/compiler-core': 3.4.30 - '@vue/shared': 3.4.30 + '@vue/compiler-core': 3.4.31 + '@vue/shared': 3.4.31 - '@vue/compiler-sfc@3.4.30': + '@vue/compiler-sfc@3.4.31': dependencies: '@babel/parser': 7.24.7 - '@vue/compiler-core': 3.4.30 - '@vue/compiler-dom': 3.4.30 - '@vue/compiler-ssr': 3.4.30 - '@vue/shared': 3.4.30 + '@vue/compiler-core': 3.4.31 + '@vue/compiler-dom': 3.4.31 + '@vue/compiler-ssr': 3.4.31 + '@vue/shared': 3.4.31 estree-walker: 2.0.2 magic-string: 0.30.10 postcss: 8.4.38 source-map-js: 1.2.0 - '@vue/compiler-ssr@3.4.30': + '@vue/compiler-ssr@3.4.31': dependencies: - '@vue/compiler-dom': 3.4.30 - '@vue/shared': 3.4.30 + '@vue/compiler-dom': 3.4.31 + '@vue/shared': 3.4.31 '@vue/devtools-api@6.6.3': {} - '@vue/reactivity@3.4.30': + '@vue/reactivity@3.4.31': dependencies: - '@vue/shared': 3.4.30 + '@vue/shared': 3.4.31 - '@vue/runtime-core@3.4.30': + '@vue/runtime-core@3.4.31': dependencies: - '@vue/reactivity': 3.4.30 - '@vue/shared': 3.4.30 + '@vue/reactivity': 3.4.31 + '@vue/shared': 3.4.31 - '@vue/runtime-dom@3.4.30': + '@vue/runtime-dom@3.4.31': dependencies: - '@vue/reactivity': 3.4.30 - '@vue/runtime-core': 3.4.30 - '@vue/shared': 3.4.30 + '@vue/reactivity': 3.4.31 + '@vue/runtime-core': 3.4.31 + '@vue/shared': 3.4.31 csstype: 3.1.3 - '@vue/server-renderer@3.4.30(vue@3.4.30(typescript@5.5.2))': + '@vue/server-renderer@3.4.31(vue@3.4.31(typescript@5.5.2))': dependencies: - '@vue/compiler-ssr': 3.4.30 - '@vue/shared': 3.4.30 - vue: 3.4.30(typescript@5.5.2) + '@vue/compiler-ssr': 3.4.31 + '@vue/shared': 3.4.31 + vue: 3.4.31(typescript@5.5.2) - '@vue/shared@3.4.30': {} + '@vue/shared@3.4.31': {} '@vue/test-utils@2.4.6': dependencies: @@ -10054,7 +10054,7 @@ snapshots: browserslist@4.23.1: dependencies: caniuse-lite: 1.0.30001638 - electron-to-chromium: 1.4.812 + electron-to-chromium: 1.4.814 node-releases: 2.0.14 update-browserslist-db: 1.0.16(browserslist@4.23.1) @@ -10109,7 +10109,7 @@ snapshots: '@npmcli/fs': 3.1.1 fs-minipass: 3.0.3 glob: 10.4.2 - lru-cache: 10.2.2 + lru-cache: 10.3.0 minipass: 7.1.2 minipass-collect: 2.0.1 minipass-flush: 1.0.5 @@ -10665,7 +10665,7 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.4.812: {} + electron-to-chromium@1.4.814: {} emoji-regex@8.0.0: {} @@ -11318,7 +11318,7 @@ snapshots: hosted-git-info@7.0.2: dependencies: - lru-cache: 10.2.2 + lru-cache: 10.3.0 html-encoding-sniffer@3.0.0: dependencies: @@ -11826,7 +11826,7 @@ snapshots: dependencies: get-func-name: 2.0.2 - lru-cache@10.2.2: {} + lru-cache@10.3.0: {} lru-cache@5.1.1: dependencies: @@ -12119,7 +12119,7 @@ snapshots: - supports-color - uWebSockets.js - nitropack@2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4): + nitropack@2.9.7(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4): dependencies: '@cloudflare/kv-asset-handler': 0.3.4 '@netlify/functions': 2.8.0(@opentelemetry/api@1.9.0) @@ -12156,7 +12156,6 @@ snapshots: hookable: 5.5.3 httpxy: 0.1.5 ioredis: 5.4.1 - is-primitive: 3.0.1 jiti: 1.21.6 klona: 2.0.6 knitwork: 1.1.0 @@ -12342,11 +12341,11 @@ snapshots: '@nuxt/schema': 3.3.2(magicast@0.3.4)(rollup@4.18.0) '@nuxt/telemetry': 2.5.4(magicast@0.3.4)(rollup@4.18.0) '@nuxt/ui-templates': 1.3.4 - '@nuxt/vite-builder': 3.3.2(@types/node@18.19.39)(eslint@8.57.0)(magicast@0.3.4)(optionator@0.9.4)(sass@1.77.6)(terser@5.31.1)(typescript@5.5.2)(vue@3.4.30(typescript@5.5.2)) + '@nuxt/vite-builder': 3.3.2(@types/node@18.19.39)(eslint@8.57.0)(magicast@0.3.4)(optionator@0.9.4)(sass@1.77.6)(terser@5.31.1)(typescript@5.5.2)(vue@3.4.31(typescript@5.5.2)) '@unhead/ssr': 1.9.14 - '@unhead/vue': 1.9.14(vue@3.4.30(typescript@5.5.2)) - '@vue/reactivity': 3.4.30 - '@vue/shared': 3.4.30 + '@unhead/vue': 1.9.14(vue@3.4.31(typescript@5.5.2)) + '@vue/reactivity': 3.4.31 + '@vue/shared': 3.4.31 chokidar: 3.6.0 cookie-es: 0.5.0 defu: 6.1.4 @@ -12376,10 +12375,10 @@ snapshots: unimport: 3.7.2(rollup@4.18.0) unplugin: 1.10.1 untyped: 1.4.2 - vue: 3.4.30(typescript@5.5.2) + vue: 3.4.31(typescript@5.5.2) vue-bundle-renderer: 1.0.3 vue-devtools-stub: 0.1.0 - vue-router: 4.4.0(vue@3.4.30(typescript@5.5.2)) + vue-router: 4.4.0(vue@3.4.31(typescript@5.5.2)) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -12423,11 +12422,11 @@ snapshots: '@nuxt/schema': 3.3.2(magicast@0.3.4)(rollup@3.29.4) '@nuxt/telemetry': 2.5.4(magicast@0.3.4)(rollup@3.29.4) '@nuxt/ui-templates': 1.3.4 - '@nuxt/vite-builder': 3.3.2(@types/node@18.19.39)(eslint@8.57.0)(magicast@0.3.4)(optionator@0.9.4)(sass@1.77.6)(terser@5.31.1)(typescript@5.5.2)(vue@3.4.30(typescript@5.5.2)) + '@nuxt/vite-builder': 3.3.2(@types/node@18.19.39)(eslint@8.57.0)(magicast@0.3.4)(optionator@0.9.4)(sass@1.77.6)(terser@5.31.1)(typescript@5.5.2)(vue@3.4.31(typescript@5.5.2)) '@unhead/ssr': 1.9.14 - '@unhead/vue': 1.9.14(vue@3.4.30(typescript@5.5.2)) - '@vue/reactivity': 3.4.30 - '@vue/shared': 3.4.30 + '@unhead/vue': 1.9.14(vue@3.4.31(typescript@5.5.2)) + '@vue/reactivity': 3.4.31 + '@vue/shared': 3.4.31 chokidar: 3.6.0 cookie-es: 0.5.0 defu: 6.1.4 @@ -12457,10 +12456,10 @@ snapshots: unimport: 3.7.2(rollup@3.29.4) unplugin: 1.10.1 untyped: 1.4.2 - vue: 3.4.30(typescript@5.5.2) + vue: 3.4.31(typescript@5.5.2) vue-bundle-renderer: 1.0.3 vue-devtools-stub: 0.1.0 - vue-router: 4.4.0(vue@3.4.30(typescript@5.5.2)) + vue-router: 4.4.0(vue@3.4.31(typescript@5.5.2)) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -12665,7 +12664,7 @@ snapshots: path-scurry@1.11.1: dependencies: - lru-cache: 10.2.2 + lru-cache: 10.3.0 minipass: 7.1.2 path-type@4.0.0: {} @@ -13358,9 +13357,9 @@ snapshots: optionalDependencies: rollup: 4.18.0 - rollup-plugin-vue@6.0.0(@vue/compiler-sfc@3.4.30): + rollup-plugin-vue@6.0.0(@vue/compiler-sfc@3.4.31): dependencies: - '@vue/compiler-sfc': 3.4.30 + '@vue/compiler-sfc': 3.4.31 debug: 4.3.5 hash-sum: 2.0.0 rollup-pluginutils: 2.8.2 @@ -14087,7 +14086,7 @@ snapshots: universalify@2.0.1: {} - unplugin-vue-components@0.27.0(@babel/parser@7.24.7)(@nuxt/kit@3.12.2(magicast@0.3.4)(rollup@4.18.0))(rollup@4.18.0)(vue@3.4.30(typescript@5.5.2)): + unplugin-vue-components@0.27.0(@babel/parser@7.24.7)(@nuxt/kit@3.12.2(magicast@0.3.4)(rollup@4.18.0))(rollup@4.18.0)(vue@3.4.31(typescript@5.5.2)): dependencies: '@antfu/utils': 0.7.10 '@rollup/pluginutils': 5.1.0(rollup@4.18.0) @@ -14099,7 +14098,7 @@ snapshots: minimatch: 9.0.5 resolve: 1.22.8 unplugin: 1.10.1 - vue: 3.4.30(typescript@5.5.2) + vue: 3.4.31(typescript@5.5.2) optionalDependencies: '@babel/parser': 7.24.7 '@nuxt/kit': 3.12.2(magicast@0.3.4)(rollup@4.18.0) @@ -14121,7 +14120,7 @@ snapshots: destr: 2.0.3 h3: 1.12.0 listhen: 1.7.2 - lru-cache: 10.2.2 + lru-cache: 10.3.0 mri: 1.2.0 node-fetch-native: 1.6.4 ofetch: 1.3.4 @@ -14188,11 +14187,11 @@ snapshots: validate-npm-package-name@5.0.1: {} - vee-validate@4.13.1(vue@3.4.30(typescript@5.5.2)): + vee-validate@4.13.1(vue@3.4.31(typescript@5.5.2)): dependencies: '@vue/devtools-api': 6.6.3 type-fest: 4.20.1 - vue: 3.4.30(typescript@5.5.2) + vue: 3.4.31(typescript@5.5.2) vite-node@0.29.8(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1): dependencies: @@ -14218,7 +14217,7 @@ snapshots: debug: 4.3.5 pathe: 1.1.2 picocolors: 1.0.1 - vite: 5.3.1(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1) + vite: 5.3.2(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1) transitivePeerDependencies: - '@types/node' - less @@ -14277,7 +14276,7 @@ snapshots: '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.7) '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.24.7) '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.24.7) - '@vue/compiler-dom': 3.4.30 + '@vue/compiler-dom': 3.4.31 kolorist: 1.8.0 magic-string: 0.30.10 transitivePeerDependencies: @@ -14306,7 +14305,7 @@ snapshots: sass: 1.77.6 terser: 5.31.1 - vite@5.3.1(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1): + vite@5.3.2(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1): dependencies: esbuild: 0.21.5 postcss: 8.4.38 @@ -14317,9 +14316,9 @@ snapshots: sass: 1.77.6 terser: 5.31.1 - vitest-environment-nuxt@1.0.0(@vue/test-utils@2.4.6)(h3@1.12.0)(magicast@0.3.4)(nitropack@2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(rollup@4.18.0)(vitest@1.6.0(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1))(vue-router@4.4.0(vue@3.4.30(typescript@5.5.2)))(vue@3.4.30(typescript@5.5.2)): + vitest-environment-nuxt@1.0.0(@vue/test-utils@2.4.6)(h3@1.12.0)(magicast@0.3.4)(nitropack@2.9.7(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(rollup@4.18.0)(vitest@1.6.0(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1))(vue-router@4.4.0(vue@3.4.31(typescript@5.5.2)))(vue@3.4.31(typescript@5.5.2)): dependencies: - '@nuxt/test-utils': 3.13.1(@vue/test-utils@2.4.6)(h3@1.12.0)(magicast@0.3.4)(nitropack@2.9.6(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(rollup@4.18.0)(vitest@1.6.0(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1))(vue-router@4.4.0(vue@3.4.30(typescript@5.5.2)))(vue@3.4.30(typescript@5.5.2)) + '@nuxt/test-utils': 3.13.1(@vue/test-utils@2.4.6)(h3@1.12.0)(magicast@0.3.4)(nitropack@2.9.7(@opentelemetry/api@1.9.0)(encoding@0.1.13)(magicast@0.3.4))(rollup@4.18.0)(vitest@1.6.0(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1))(vue-router@4.4.0(vue@3.4.31(typescript@5.5.2)))(vue@3.4.31(typescript@5.5.2)) transitivePeerDependencies: - '@cucumber/cucumber' - '@jest/globals' @@ -14396,7 +14395,7 @@ snapshots: strip-literal: 2.1.0 tinybench: 2.8.0 tinypool: 0.8.4 - vite: 5.3.1(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1) + vite: 5.3.2(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1) vite-node: 1.6.0(@types/node@18.19.39)(sass@1.77.6)(terser@5.31.1) why-is-node-running: 2.2.2 optionalDependencies: @@ -14458,18 +14457,18 @@ snapshots: transitivePeerDependencies: - supports-color - vue-router@4.4.0(vue@3.4.30(typescript@5.5.2)): + vue-router@4.4.0(vue@3.4.31(typescript@5.5.2)): dependencies: '@vue/devtools-api': 6.6.3 - vue: 3.4.30(typescript@5.5.2) + vue: 3.4.31(typescript@5.5.2) - vue@3.4.30(typescript@5.5.2): + vue@3.4.31(typescript@5.5.2): dependencies: - '@vue/compiler-dom': 3.4.30 - '@vue/compiler-sfc': 3.4.30 - '@vue/runtime-dom': 3.4.30 - '@vue/server-renderer': 3.4.30(vue@3.4.30(typescript@5.5.2)) - '@vue/shared': 3.4.30 + '@vue/compiler-dom': 3.4.31 + '@vue/compiler-sfc': 3.4.31 + '@vue/runtime-dom': 3.4.31 + '@vue/server-renderer': 3.4.31(vue@3.4.31(typescript@5.5.2)) + '@vue/shared': 3.4.31 optionalDependencies: typescript: 5.5.2