diff --git a/frontend/.gitignore b/frontend/.gitignore
index 0a6c40f8c..29d17087c 100644
--- a/frontend/.gitignore
+++ b/frontend/.gitignore
@@ -36,4 +36,8 @@ robots.txt
# SSL
certs/
-certs/*
\ No newline at end of file
+certs/*
+
+# Claude
+CLAUDE.md
+.claude
diff --git a/frontend/app/components/modules/project/components/security/yaml/generate-yaml-modal.vue b/frontend/app/components/modules/project/components/security/yaml/generate-yaml-modal.vue
new file mode 100644
index 000000000..665743cff
--- /dev/null
+++ b/frontend/app/components/modules/project/components/security/yaml/generate-yaml-modal.vue
@@ -0,0 +1,241 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ Generate YAML security file
+
+
+
+
+
+
+
+ {{ config?.label }}
+
+
+
+ Step {{ step + 1 }}/{{ steps.length + 1 }} -
+ Choose YAML file template
+ {{ currentStep?.label }}
+ Preview & Download
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Previous
+
+
+
+
+
+ Next
+
+
+
+
+
+
+ Copy to clipboard
+
+
+
+ Download YAML file
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/components/security/yaml/generate-yaml-preview.vue b/frontend/app/components/modules/project/components/security/yaml/generate-yaml-preview.vue
new file mode 100644
index 000000000..622efcbe0
--- /dev/null
+++ b/frontend/app/components/modules/project/components/security/yaml/generate-yaml-preview.vue
@@ -0,0 +1,48 @@
+
+
+
+
YAML file preview
+
+ Review your generated YAML file before downloading. You can copy the content or download it as
+ a file.
+
+
+
+
+
+ Add the YAML file as security.yaml in your
+ repository root and commit to enable security assessments.
+
+
+
+
{{ yaml }}
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/components/security/yaml/generate-yaml-sidebar.vue b/frontend/app/components/modules/project/components/security/yaml/generate-yaml-sidebar.vue
new file mode 100644
index 000000000..3e761ac9a
--- /dev/null
+++ b/frontend/app/components/modules/project/components/security/yaml/generate-yaml-sidebar.vue
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+
+ Why generate a YAML file?
+
+
+
+
+
Purpose
+
+ YAML security file provides a standardised way to document, assess, and share a
+ project's security practices, ensuring consistency and alignment with the specification
+ across repositories.
+
+ Learn more
+
+
+
+
+
+
+
+
Requirements
+
+ Admin access
+
+
+
+ Repository owner or admin. You'll need write permissions to upload the generated file to
+ your GitHub repository.
+
+
+
+
+
+
+ Information collected
+
+
+ - Project details
+ - Repository details
+ - Administrator contacts
+ - Core team members
+ - License information
+ - Vulnerability reporting
+ - Security self-assessment
+
+
+
+
+
+
+
+
+
+
+ YAML security file specifications are optional, and we don't run strict
+ validation on them, but your project will still benefit from documenting
+ as many as possible.
+
+
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/components/security/yaml/generate-yaml-type.vue b/frontend/app/components/modules/project/components/security/yaml/generate-yaml-type.vue
new file mode 100644
index 000000000..d740096ca
--- /dev/null
+++ b/frontend/app/components/modules/project/components/security/yaml/generate-yaml-type.vue
@@ -0,0 +1,85 @@
+
+
+
+
Choose YAML file template
+
+ Please select the YAML template file that better aligns with your project repository and
+ security requirements.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ option.label }}
+
+
+ {{ option.description }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/basic/basic-yaml.config.ts b/frontend/app/components/modules/project/config/yaml-generation/basic/basic-yaml.config.ts
new file mode 100644
index 000000000..485070dde
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/basic/basic-yaml.config.ts
@@ -0,0 +1,123 @@
+// Copyright (c) 2025 The Linux Foundation and each contributor.
+// SPDX-License-Identifier: MIT
+import { DateTime } from 'luxon'
+import YamlBasicProject from './yaml-basic-project.vue'
+import YamlBasicProjectRepositories from './yaml-basic-project-repositories.vue'
+import YamlBasicProjectVulnerability from './yaml-basic-project-vulnerability.vue'
+import YamlBasicRepository from './yaml-basic-repository.vue'
+import YamlBasicRepositoryMembers from './yaml-basic-repository-members.vue'
+import YamlBasicRepositoryLicense from './yaml-basic-repository-license.vue'
+import YamlBasicRepositorySecurity from './yaml-basic-repository-security.vue'
+import type { YamlGenerationConfig } from
+ '~/components/modules/project/config/yaml-generation/yaml-generation.config'
+import YamlHeaderInformation from
+ '~/components/modules/project/config/yaml-generation/shared/yaml-header-information.vue'
+
+const basicYamlGenerationConfig: YamlGenerationConfig = {
+ label: 'Basic',
+ icon: 'file-circle-check',
+ description: 'Essential project security specifications',
+ features: [
+ 'Use as the master security insights file in your main repository.',
+ 'Use when you want to get up and running quickly.',
+ 'Best for projects just beginning to adopt the specification.',
+ 'Provides basic security insights coverage.',
+ ],
+ steps: [
+ {
+ label: 'Header information',
+ component: YamlHeaderInformation,
+ },
+ {
+ label: 'Project details',
+ component: YamlBasicProject,
+ },
+ {
+ label: 'Project details | Repositories',
+ component: YamlBasicProjectRepositories,
+ },
+ {
+ label: 'Project details | Vulnerability reporting',
+ component: YamlBasicProjectVulnerability,
+ },
+ {
+ label: 'Repository details',
+ component: YamlBasicRepository,
+ },
+ {
+ label: 'Repository details | Core team members',
+ component: YamlBasicRepositoryMembers,
+ },
+ {
+ label: 'Repository details | License information',
+ component: YamlBasicRepositoryLicense,
+ },
+ {
+ label: 'Repository details | Security self-assessment',
+ component: YamlBasicRepositorySecurity,
+ },
+ ],
+ template: {
+ header: {
+ 'schema-version': '2.0.0',
+ 'last-updated': DateTime.now().toISODate(),
+ 'last-reviewed': DateTime.now().toISODate(),
+ url: '',
+ comment:
+ 'This file contains the minimum information for both project and repository. ' +
+ 'It not required to include both a project and repository section if the project ' +
+ 'section is intended to be inherited by repositories via header.project-si-source',
+ },
+ project: {
+ name: '',
+ administrators: [
+ {
+ name: '',
+ affiliation: '',
+ email: '',
+ social: '',
+ primary: false,
+ },
+ ],
+ repositories: [
+ {
+ name: '',
+ url: '',
+ comment: '',
+ },
+ ],
+ 'vulnerability-reporting': {
+ 'reports-accepted': false,
+ 'bug-bounty-available': false,
+ },
+ },
+ repository: {
+ url: '',
+ status: '',
+ 'accepts-change-request': false,
+ 'accepts-automated-change-request': false,
+ 'core-team': [
+ {
+ name: '',
+ affiliation: '',
+ email: '',
+ social: '',
+ primary: false,
+ },
+ ],
+ license: {
+ url: '',
+ expression: '',
+ },
+ security: {
+ assessments: {
+ self: {
+ comment: '',
+ },
+ },
+ },
+ },
+ },
+}
+
+export default basicYamlGenerationConfig
diff --git a/frontend/app/components/modules/project/config/yaml-generation/basic/yaml-basic-project-repositories.vue b/frontend/app/components/modules/project/config/yaml-generation/basic/yaml-basic-project-repositories.vue
new file mode 100644
index 000000000..2199b996c
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/basic/yaml-basic-project-repositories.vue
@@ -0,0 +1,71 @@
+
+
+
+
Project details
+
Repositories
+
+ Details about your project repository and contribution policies.
+
+
+
+
+
+ Repository #{{ index + 1 }}
+
+
+
+
+
+
+
+
+
+ Add repository
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/basic/yaml-basic-project-vulnerability.vue b/frontend/app/components/modules/project/config/yaml-generation/basic/yaml-basic-project-vulnerability.vue
new file mode 100644
index 000000000..f0d76b9d2
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/basic/yaml-basic-project-vulnerability.vue
@@ -0,0 +1,71 @@
+
+
+
+
Project details
+
Vulnerability reporting
+
+ Configure how security vulnerabilities can be reported for your project.
+
+
+
+
+
+
+
Reports accepted
+
+ Your project accepts vulnerability reports from security researchers
+
+
+
+
+
+
+
Bug bounty available
+
+ Your project offers rewards for discovering and reporting security vulnerabilities
+
+
+
+
+
+
+
+
Best practice recommendation
+
+
+ Even if you don't offer a bug bounty program, accepting vulnerability reports shows that
+ your project takes security seriously and provides a clear channel for responsible
+ disclosure.
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/basic/yaml-basic-project.vue b/frontend/app/components/modules/project/config/yaml-generation/basic/yaml-basic-project.vue
new file mode 100644
index 000000000..3a3e7e9bd
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/basic/yaml-basic-project.vue
@@ -0,0 +1,100 @@
+
+
+
+
+
+
Project details
+
+ Basic project information and administrator contacts.
+
+
+
+
+
+
+
+
+
+
+
+
Administrators
+
+ People who have administrative access to the project. At least one administrator is
+ required.
+
+
+
+
+
+
+ Administrator #{{ index + 1 }}
+
+
+
+
+
+
+
+
+ Add administrator
+
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/basic/yaml-basic-repository-license.vue b/frontend/app/components/modules/project/config/yaml-generation/basic/yaml-basic-repository-license.vue
new file mode 100644
index 000000000..e175d8f30
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/basic/yaml-basic-repository-license.vue
@@ -0,0 +1,106 @@
+
+
+
+
+
Repository details
+
License information
+
+ Specify the license under which your project is distributed. This information helps users
+ understand how they can use, modify, and distribute your code.
+
+
+
+
+ URL to the full text of your project's license
+
+
+
+
+
+
+
+ SPDX license identifier (e.g., MIT, Apache-2.0, GPL-3.0, BSD-3-Clause)
+
+
+
+
+
+
+
+
Common license examples
+
+
+
+
+ MIT:
+ Permissive license with minimal restrictions
+
+
+ Apache-2.0:
+ Permissive license with patent protection
+
+
+ GPL-3.0:
+ Copyleft license requiring derivative works to be open source
+
+
+ BSD-3-Clause:
+ Permissive license similar to MIT with additional clause
+
+
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/basic/yaml-basic-repository-members.vue b/frontend/app/components/modules/project/config/yaml-generation/basic/yaml-basic-repository-members.vue
new file mode 100644
index 000000000..a60679543
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/basic/yaml-basic-repository-members.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
Repository details
+
Core team members
+
+ Active contributors and maintainers of the project. These are the people responsible for the
+ ongoing development and maintenance of the project.
+
+
+
+
+ Team member #{{ index + 1 }}
+
+
+
+
+
+
+
+ Add team member
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/basic/yaml-basic-repository-security.vue b/frontend/app/components/modules/project/config/yaml-generation/basic/yaml-basic-repository-security.vue
new file mode 100644
index 000000000..126d89af8
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/basic/yaml-basic-repository-security.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
+
Repository details
+
Security self-assessment
+
+ Provide additional context about your project's security posture and any self-assessment
+ comments.
+
+
+
+
+
+
+
Self-assessment comment
+
+ Describe your project's security practices, any security reviews conducted, known
+ limitation, or other relevant security information.
+
+
+
+
+
+
+
+
+
+
+
Self-assessment tips
+
+
+
+ - Mention any security audits or penetration testing performed;
+ - Describe your secure coding practices and review processes;
+ - Note any security-focused dependencies or tools used;
+ - Be transparent about known security limitations;
+ - Include information about your incident response process.
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/basic/yaml-basic-repository.vue b/frontend/app/components/modules/project/config/yaml-generation/basic/yaml-basic-repository.vue
new file mode 100644
index 000000000..e53f61e63
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/basic/yaml-basic-repository.vue
@@ -0,0 +1,81 @@
+
+
+
+
+
Repository details
+
+ Details about your project repository and contribution policies.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Accepts change requests
+
+
+ Accepts automated change requests
+
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/child-repository/child-repository-yaml.config.ts b/frontend/app/components/modules/project/config/yaml-generation/child-repository/child-repository-yaml.config.ts
new file mode 100644
index 000000000..8f32eb675
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/child-repository/child-repository-yaml.config.ts
@@ -0,0 +1,85 @@
+// Copyright (c) 2025 The Linux Foundation and each contributor.
+// SPDX-License-Identifier: MIT
+import { DateTime } from 'luxon'
+import type { YamlGenerationConfig } from
+ '~/components/modules/project/config/yaml-generation/yaml-generation.config'
+import YamlChildRepositoryHeader from
+ '~/components/modules/project/config/yaml-generation/child-repository/yaml-child-repository-header.vue'
+import YamlChildRepository from
+ '~/components/modules/project/config/yaml-generation/child-repository/yaml-child-repository.vue'
+import YamlChildRepositoryTeamMembers from
+ '~/components/modules/project/config/yaml-generation/child-repository/yaml-child-repository-team-members.vue'
+import YamlChildRepositoryLicence from
+ '~/components/modules/project/config/yaml-generation/child-repository/yaml-child-repository-licence.vue'
+import YamlChildRepositorySecurity from
+ '~/components/modules/project/config/yaml-generation/child-repository/yaml-child-repository-security.vue'
+
+const childRepositoryYamlGenerationConfig: YamlGenerationConfig = {
+ label: 'Child repository',
+ icon: 'book',
+ description: 'Individual repositories in a multi-repository project',
+ features: [
+ 'Use in secondary repositories to inherit configuration from a centralized parent repository',
+ 'Must include header.project-si-source URL that points to the parent configuration file',
+ 'Reduces configuration duplication while ensuring consistency across multiple repositories',
+ ],
+ steps: [
+ {
+ label: 'Header information',
+ component: YamlChildRepositoryHeader,
+ },
+ {
+ label: 'Repository details',
+ component: YamlChildRepository,
+ },
+ {
+ label: 'Repository details | Core team members',
+ component: YamlChildRepositoryTeamMembers,
+ },
+ {
+ label: 'Repository details | License information',
+ component: YamlChildRepositoryLicence,
+ },
+ {
+ label: 'Repository details | Security self-assessment',
+ component: YamlChildRepositorySecurity,
+ },
+ ],
+ template: {
+ header: {
+ 'schema-version': '2.0.0',
+ 'last-updated': DateTime.now().toISODate(),
+ 'last-reviewed': DateTime.now().toISODate(),
+ url: '',
+ 'project-si-source': '',
+ },
+ repository: {
+ url: '',
+ status: '',
+ 'accepts-change-request': false,
+ 'accepts-automated-change-request': false,
+ 'core-team': [
+ {
+ name: '',
+ affiliation: '',
+ email: '',
+ social: '',
+ primary: false,
+ },
+ ],
+ license: {
+ url: '',
+ expression: '',
+ },
+ security: {
+ assessments: {
+ self: {
+ comment: '',
+ },
+ },
+ },
+ },
+ },
+}
+
+export default childRepositoryYamlGenerationConfig
diff --git a/frontend/app/components/modules/project/config/yaml-generation/child-repository/yaml-child-repository-header.vue b/frontend/app/components/modules/project/config/yaml-generation/child-repository/yaml-child-repository-header.vue
new file mode 100644
index 000000000..89059b400
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/child-repository/yaml-child-repository-header.vue
@@ -0,0 +1,94 @@
+
+
+
+
+
+
Header Information
+
+ Basic information about your project that will appear at the top of the YAML file.
+
+
+
+
+
+
+
+
+ The main URL where your project can be found (typically GitHub repository URL)
+
+
+
+
+
+
+
+
+ Repository where the YAML security file is hosted
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/child-repository/yaml-child-repository-licence.vue b/frontend/app/components/modules/project/config/yaml-generation/child-repository/yaml-child-repository-licence.vue
new file mode 100644
index 000000000..875f906d7
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/child-repository/yaml-child-repository-licence.vue
@@ -0,0 +1,115 @@
+
+
+
+
+
+
Repository details
+
License information
+
+ Specify the license under which your project is distributed. This information helps users
+ understand how they can use, modify, and distribute your code.
+
+
+
+
+
+
+
+
+ URL to the full text of your project's license
+
+
+
+
+
+
+
+
+ SPDX license identifier (e.g., MIT, Apache-2.0, GPL-3.0, BSD-3-Clause)
+
+
+
+
+
+
+
+
+
Common license examples
+
+
+
+
+ MIT:
+ Permissive license with minimal restrictions
+
+
+ Apache-2.0:
+ Permissive license with patent protection
+
+
+ GPL-3.0:
+
+ Copyleft license requiring derivative works to be open source
+
+
+ BSD-3-Clause:
+
+ Permissive license similar to MIT with additional clause
+
+
+
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/child-repository/yaml-child-repository-security.vue b/frontend/app/components/modules/project/config/yaml-generation/child-repository/yaml-child-repository-security.vue
new file mode 100644
index 000000000..4b4fe170d
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/child-repository/yaml-child-repository-security.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
Repository details
+
Security self-assessment
+
+ Provide additional context about your project's security posture and any self-assessment
+ comments.
+
+
+
+
+
+
+
+
+ Describe your project's security practices, any security reviews conducted, known
+ limitation, or other relevant security information.
+
+
+
+
+
+
+
+
+
Self-assessment tips
+
+
+
+ - Mention any security audits or penetration testing performed;
+ - Describe your secure coding practices and review processes;
+ - Note any security-focused dependencies or tools used;
+ - Be transparent about known security limitations;
+ - Include information about your incident response process.
+
+
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/child-repository/yaml-child-repository-team-members.vue b/frontend/app/components/modules/project/config/yaml-generation/child-repository/yaml-child-repository-team-members.vue
new file mode 100644
index 000000000..a60679543
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/child-repository/yaml-child-repository-team-members.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
Repository details
+
Core team members
+
+ Active contributors and maintainers of the project. These are the people responsible for the
+ ongoing development and maintenance of the project.
+
+
+
+
+ Team member #{{ index + 1 }}
+
+
+
+
+
+
+
+ Add team member
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/child-repository/yaml-child-repository.vue b/frontend/app/components/modules/project/config/yaml-generation/child-repository/yaml-child-repository.vue
new file mode 100644
index 000000000..f1c870d43
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/child-repository/yaml-child-repository.vue
@@ -0,0 +1,89 @@
+
+
+
+
+
+
Repository details
+
+ Details about your project repository and contribution policies.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Accepts change requests
+
+
+ Accepts automated change requests
+
+
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/comprehensive/comprehensive-yaml.config.ts b/frontend/app/components/modules/project/config/yaml-generation/comprehensive/comprehensive-yaml.config.ts
new file mode 100644
index 000000000..3c15bff27
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/comprehensive/comprehensive-yaml.config.ts
@@ -0,0 +1,268 @@
+// Copyright (c) 2025 The Linux Foundation and each contributor.
+// SPDX-License-Identifier: MIT
+import { DateTime } from 'luxon'
+import YamlComprehensiveRepositoryRelease from './yaml-comprehensive-repository-release.vue'
+import YamlComprehensiveRepositorySecurity
+ from "./yaml-comprehensive-repository-security.vue";
+import YamlComprehensiveRepositorySecurityChampions
+ from "./yaml-comprehensive-repository-security-champions.vue";
+import YamlComprehensiveRepositorySecurityTools
+ from "./yaml-comprehensive-repository-security-tools.vue";
+import YamlComprehensiveProject
+ from "./yaml-comprehensive-project.vue";
+import YamlComprehensiveProjectSteward
+ from "./yaml-comprehensive-project-steward.vue";
+import YamlComprehensiveProjectAdministrators
+ from "./yaml-comprehensive-project-administrators.vue";
+import YamlComprehensiveProjectDocumentation
+ from "./yaml-comprehensive-project-documentation.vue";
+import YamlComprehensiveProjectRepositories
+ from "./yaml-comprehensive-project-repositories.vue";
+import YamlComprehensiveProjectVulnerability
+ from "./yaml-comprehensive-project-vulnerability.vue";
+import YamlComprehensiveRepository
+ from "./yaml-comprehensive-repository.vue";
+import YamlComprehensiveRepositoryMembers
+ from "./yaml-comprehensive-repository-members.vue";
+import YamlComprehensiveRepositoryDocumentation
+ from "./yaml-comprehensive-repository-documentation.vue";
+import YamlHeaderInformation
+ from "~/components/modules/project/config/yaml-generation/shared/yaml-header-information.vue";
+import type { YamlGenerationConfig } from '~/components/modules/project/config/yaml-generation/yaml-generation.config'
+
+const comprehensiveYamlGenerationConfig: YamlGenerationConfig = {
+ label: 'Comprehensive',
+ icon: 'file-shield',
+ description: 'Comprehensive security documentation and planning',
+ features: [
+ 'Use as a reference for all possible specification sections.',
+ 'Ideal for identifying areas for future improvement.',
+ 'Helps plan long-term security investments and prioritisation.',
+ ],
+ steps: [
+ {
+ label: 'Header information',
+ component: YamlHeaderInformation,
+ },
+ {
+ label: 'Project details',
+ component: YamlComprehensiveProject,
+ },
+ {
+ label: 'Project details | Steward',
+ component: YamlComprehensiveProjectSteward,
+ },
+ {
+ label: 'Project details | Administrators',
+ component: YamlComprehensiveProjectAdministrators,
+ },
+ {
+ label: 'Project details | Documentation',
+ component: YamlComprehensiveProjectDocumentation,
+ },
+ {
+ label: 'Project details | Repositories',
+ component: YamlComprehensiveProjectRepositories,
+ },
+ {
+ label: 'Project details | Vulnerability reporting',
+ component: YamlComprehensiveProjectVulnerability,
+ },
+ {
+ label: 'Repository details',
+ component: YamlComprehensiveRepository,
+ },
+ {
+ label: 'Repository details | Core team members',
+ component: YamlComprehensiveRepositoryMembers,
+ },
+ {
+ label: 'Repository details | Documentation',
+ component: YamlComprehensiveRepositoryDocumentation,
+ },
+ {
+ label: 'Repository details | Release information',
+ component: YamlComprehensiveRepositoryRelease,
+ },
+ {
+ label: 'Repository details | Security assessments',
+ component: YamlComprehensiveRepositorySecurity,
+ },
+ {
+ label: 'Repository details | Security champions',
+ component: YamlComprehensiveRepositorySecurityChampions,
+ },
+ {
+ label: 'Repository details | Security tools',
+ component: YamlComprehensiveRepositorySecurityTools,
+ },
+ ],
+ template: {
+ header: {
+ 'schema-version': '2.0.0',
+ 'last-updated': DateTime.now().toISODate(),
+ 'last-reviewed': DateTime.now().toISODate(),
+ url: '',
+ comment:
+ 'This file contains all possible information for both project and ' +
+ 'repository, though it is not required to include all of this ' +
+ 'information every time. Nor is it required to include both a project ' +
+ 'and repository section if the project section is intended to be ' +
+ 'inherited by repositories via header.project-si-source',
+ },
+ project: {
+ name: '',
+ homepage: '',
+ funding: '',
+ roadmap: '',
+ steward: {
+ uri: '',
+ comment: '',
+ },
+ administrators: [
+ {
+ name: '',
+ affiliation: '',
+ email: '',
+ social: '',
+ primary: false,
+ },
+ ],
+ documentation: {
+ 'quickstart-guide': '',
+ 'detailed-guide': '',
+ 'code-of-conduct': '',
+ 'release-process': '',
+ 'support-policy': '',
+ 'signature-verification': '',
+ },
+ repositories: [
+ {
+ name: '',
+ url: '',
+ comment: '',
+ },
+ ],
+ 'vulnerability-reporting': {
+ 'reports-accepted': false,
+ 'bug-bounty-available': false,
+ 'bug-bounty-program': '',
+ contact: {
+ name: '',
+ email: '',
+ primary: false,
+ },
+ 'security-policy': '',
+ 'in-scope': [''],
+ 'out-of-scope': [''],
+ 'pgp-key': '',
+ comment: '',
+ },
+ },
+ repository: {
+ url: '',
+ status: '',
+ 'bug-fixes-only': false,
+ 'accepts-change-request': false,
+ 'accepts-automated-change-request': false,
+ 'no-third-party-packages': false,
+ 'core-team': [
+ {
+ name: '',
+ affiliation: '',
+ email: '',
+ social: '',
+ primary: false,
+ },
+ ],
+ documentation: {
+ 'contributing-guide': '',
+ 'review-policy': '',
+ 'security-policy': '',
+ governance: '',
+ 'dependency-management-policy': '',
+ },
+ release: {
+ changelog: '',
+ 'automated-pipeline': false,
+ attestations: [
+ {
+ name: '',
+ 'predicate-uri': '',
+ location: '',
+ comment: '',
+ },
+ ],
+ 'distribution-points': [
+ {
+ uri: '',
+ comment: '',
+ },
+ ],
+ license: {
+ url: '',
+ expression: '',
+ },
+ },
+ security: {
+ assessments: {
+ self: {
+ evidence: '',
+ date: '',
+ comment: '',
+ },
+ 'third-party': [
+ {
+ evidence: '',
+ date: '',
+ comment: '',
+ },
+ ],
+ },
+ champions: [
+ {
+ name: '',
+ email: '',
+ primary: false,
+ },
+ ],
+ tools: [
+ {
+ name: '',
+ type: '',
+ version: '',
+ rulesets: [''],
+ results: {
+ adhoc: {
+ name: '',
+ 'predicate-uri': '',
+ location: '',
+ comment: '',
+ },
+ ci: {
+ name: '',
+ 'predicate-uri': '',
+ location: '',
+ comment: '',
+ },
+ release: {
+ name: '',
+ 'predicate-uri': '',
+ location: '',
+ comment: '',
+ },
+ },
+ integration: {
+ adhoc: false,
+ ci: false,
+ release: false,
+ },
+ comment: '',
+ },
+ ],
+ },
+ },
+ },
+}
+
+export default comprehensiveYamlGenerationConfig
diff --git a/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-project-administrators.vue b/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-project-administrators.vue
new file mode 100644
index 000000000..8e2ac3e85
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-project-administrators.vue
@@ -0,0 +1,78 @@
+
+
+
+
+
+
Project details
+
Administrators
+
+ People who have administrative access to the project.
+
+
+
+
+
+
+ Administrator #{{ index + 1 }}
+
+
+
+
+
+
+
+ Add administrator
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-project-documentation.vue b/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-project-documentation.vue
new file mode 100644
index 000000000..18fa4795f
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-project-documentation.vue
@@ -0,0 +1,178 @@
+
+
+
+
+
+
Project details
+
Documentation
+
+ Project resources regarding set up, policies, and processes that support proper usage and
+ contribution.
+
+
+
+
+
+
+ Beginner-friendly setup or installation guide
+
+
+
+
+
+
+
+ Full project documentation or reference manual
+
+
+
+
+
+
+
+ Rules on behavior and community participation
+
+
+
+
+
+
+
+ Releases planning, approval, and publishing processes
+
+
+
+
+
+
+
+ Project support guidelines and assistance
+
+
+
+
+
+
+
+ Instructions for verifying signed releases or artifacts
+
+
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-project-repositories.vue b/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-project-repositories.vue
new file mode 100644
index 000000000..03a82a210
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-project-repositories.vue
@@ -0,0 +1,75 @@
+
+
+
+
Project details
+
Repositories
+
+ List all the project's related repositories to ensure that security policies, reporting
+ processes, and documentation are applied consistently across the entire project.
+
+
+
+
+
+ Repository #{{ index + 1 }}
+
+
+
+
+
+
+
+
+
+ Add repository
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-project-steward.vue b/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-project-steward.vue
new file mode 100644
index 000000000..df646783a
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-project-steward.vue
@@ -0,0 +1,76 @@
+
+
+
+
+
Project details
+
Steward
+
+ Information about the individual responsible for overseeing the project, ensuring its proper
+ management.
+
+
+
+
+
+
+ Project’s primary steward or maintainer identifier (URL or contact reference)
+
+
+
+
+
+
+
+
+ Notes about the steward’s role or responsibilities
+
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-project-vulnerability.vue b/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-project-vulnerability.vue
new file mode 100644
index 000000000..d2d97c703
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-project-vulnerability.vue
@@ -0,0 +1,281 @@
+
+
+
+
+
+
Project details
+
Vulnerability reporting
+
+ Configure how security vulnerabilities can be reported for your project.
+
+
+
+
+
+
+
+
Reports accepted
+
+ Your project accepts vulnerability reports from security researchers
+
+
+
+
+
+
+
Bug bounty available
+
+ Your project offers rewards for discovering and reporting security vulnerabilities
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Best practice recommendation
+
+
+
+ Even if you don't offer a bug bounty program, accepting vulnerability reports shows that
+ your project takes security seriously and provides a clear channel for responsible
+ disclosure.
+
+
+
+
+
+
+
+
+
Contact
+
+ Contact person responsible for receiving and managing security vulnerability reports
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Primary contact
+
+
+
+
+
+
+ Project's security policy (e.g. SECURITY.md)
+
+
+
+
+
+
+
+
+ Types of issues acceptable for reports
+
+
+
+
+
+
+
+
+ Add vulnerability
+
+
+
+
+
+
+
+
+ Types of issues non-acceptable for reports
+
+
+
+
+
+
+
+
+ Add vulnerability
+
+
+
+
+
+
+
+
+
+ Public PGP key used for secure vulnerability disclosures
+
+
+
+
+
+
+
+
+ Notes or clarifications about the reporting process
+
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-project.vue b/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-project.vue
new file mode 100644
index 000000000..d5e8c4fc2
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-project.vue
@@ -0,0 +1,109 @@
+
+
+
+
+
+
Project details
+
+ Basic project information and online references on how it is supported and developed over
+ time.
+
+
+
+
+
+
+
+
+
+
+
+ Project or repository main website
+
+
+
+
+
+
+
+
+ Project sponsorship website
+
+
+
+
+
+
+
+
+
+ Website containing future plans, milestones, or feature goals.
+
+
+
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-repository-documentation.vue b/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-repository-documentation.vue
new file mode 100644
index 000000000..a2c1d6c8f
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-repository-documentation.vue
@@ -0,0 +1,158 @@
+
+
+
+
+
Repository details
+
Documentation
+
+ Repository resources regarding set up, policies, and processes that support proper usage and
+ contribution.
+
+
+
+
+
+
+ How new contributors can participate, submit changes, or follow project workflows.
+
+
+
+
+
+
+
+ Rules or processes for reviewing contributions, such as code reviews, approvals, or
+ quality checks.
+
+
+
+
+
+
+
+ Security practices, disclosure process, and reporting guidelines.
+
+
+
+
+
+
+
+ How decisions are made, who has authority in the project, and how leadership or roles are
+ structured.
+
+
+
+
+
+
+
+ How external dependencies are tracked, updated, and audited for security or stability.
+
+
+
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-repository-members.vue b/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-repository-members.vue
new file mode 100644
index 000000000..1682344e0
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-repository-members.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
Repository details
+
Core team members
+
+ Active contributors and maintainers of the project. These are the people responsible for the
+ ongoing development and maintenance of the project.
+
+
+
+
+ Team member #{{ index + 1 }}
+
+
+
+
+
+
+
+ Add team member
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-repository-release.vue b/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-repository-release.vue
new file mode 100644
index 000000000..06e493864
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-repository-release.vue
@@ -0,0 +1,256 @@
+
+
+
+
+
+
Repository details
+
Release information
+
+ Provide key details about the repository release process so contributors can verify,
+ understand, and safely use published versions.
+
+
+
+
+
+
+
+ Reference to the changelog location or template used to track release changes.
+
+
+
+
+
+
+
+ Automated pipeline
+
+
+
+
+
+
Attestations
+
+ Evidence or metadata (such as signed statements or provenance files) that verify how and
+ when a release was built.
+
+
+
+
+
+ Attestation #{{ index + 1 }}
+
+
+
+
+
+
+
+ Add attestation
+
+
+
+
+
+
+
+
Distribution points
+
+ Official sources where releases can be downloaded or accessed, such as package
+ registries, artifact repositories, or release pages.
+
+
+
+
+
+ Distribution point #{{ index + 1 }}
+
+
+
+
+
+
+
+ Add distribution point
+
+
+
+
+
+
+
+
Release license
+
+ Specify the license under which your repository is distributed. This information helps
+ users understand how they can use, modify, and distribute your code.
+
+
+
+
+
+
+ URL to the full text of your project's license
+
+
+
+
+
+
+
+
+ SPDX license identifier (e.g., MIT, Apache-2.0, GPL-3.0, BSD-3-Clause)
+
+
+
+
+
+
+
+
+
Common license examples
+
+
+
+ MIT: Permissive license with minimal restrictions
+
+
+ Apache-2.0: Permissive license with patent
+ protection
+
+
+ GPL-3.0: Copyleft license requiring derivative
+ works to be open source
+
+
+ BSD-3-Clause: Permissive license similar to MIT
+ with additional clause
+
+
+
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-repository-security-champions.vue b/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-repository-security-champions.vue
new file mode 100644
index 000000000..b5ea33895
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-repository-security-champions.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
Repository details
+
Security champions
+
+ Contributors or maintainers who take responsibility for promoting secure development
+ practices, assisting with vulnerability triage, and serving as a point of contact for
+ security-related matters in the repository.
+
+
+
+
+ Security champion #{{ index + 1 }}
+
+
+
+
+
+
+
+ Add security champion
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-repository-security-tools.vue b/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-repository-security-tools.vue
new file mode 100644
index 000000000..e2a5cde73
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-repository-security-tools.vue
@@ -0,0 +1,107 @@
+
+
+
+
+
+
Repository details
+
Security tools
+
+ Tools used to assess, monitor, or enforce security within the repository. This includes
+ static analysis, dependency scanning, vulnerability detection, and other automated or manual
+ security solutions.
+
+
+
+
+
+ Security tool #{{ index + 1 }}
+
+
+
+
+
+
+
+ Add security tool
+
+
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-repository-security.vue b/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-repository-security.vue
new file mode 100644
index 000000000..ba634afe6
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-repository-security.vue
@@ -0,0 +1,182 @@
+
+
+
+
+
+
Repository details
+
Security assessments
+
+ Provide additional context about your repository security posture, such as self-assessment
+ and third-party assessments.
+
+
+
+
+
+
+
+
Self-assessment
+
+ Describe your repository security practices, any security reviews conducted, known
+ limitation, or other relevant security information.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Self-assessment tips
+
+
+ - Mention any security audits or penetration testing performed;
+ - Describe your secure coding practices and review processes;
+ - Note any security-focused dependencies or tools used;
+ - Be transparent about known security limitations;
+ - Include information about your incident response process.
+
+
+
+
+
+
+
+
Third-party assessment
+
+ Provide information about independent security audits, code reviews, or certifications
+ performed by external parties.
+
+
+
+
+
+ Third-party assessment #{{ index + 1 }}
+
+
+
+
+
+
+
+ Add assessment
+
+
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-repository.vue b/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-repository.vue
new file mode 100644
index 000000000..2ca0b5b61
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/comprehensive/yaml-comprehensive-repository.vue
@@ -0,0 +1,93 @@
+
+
+
+
+
Repository details
+
+ Details about your project repository and contribution policies.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Bug fixes only
+
+
+ Accepts change requests
+
+
+ Accepts automated change requests
+
+
+ No third-party packages
+
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/shared/components/yaml-administrator-item.vue b/frontend/app/components/modules/project/config/yaml-generation/shared/components/yaml-administrator-item.vue
new file mode 100644
index 000000000..ea7ead41f
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/shared/components/yaml-administrator-item.vue
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Primary contact
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/shared/components/yaml-attestation-item.vue b/frontend/app/components/modules/project/config/yaml-generation/shared/components/yaml-attestation-item.vue
new file mode 100644
index 000000000..fc65e7af2
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/shared/components/yaml-attestation-item.vue
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/shared/components/yaml-core-member-item.vue b/frontend/app/components/modules/project/config/yaml-generation/shared/components/yaml-core-member-item.vue
new file mode 100644
index 000000000..ddf10e7e0
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/shared/components/yaml-core-member-item.vue
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Primary contact
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/shared/components/yaml-datepicker.vue b/frontend/app/components/modules/project/config/yaml-generation/shared/components/yaml-datepicker.vue
new file mode 100644
index 000000000..421ab17fb
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/shared/components/yaml-datepicker.vue
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/shared/components/yaml-distribution-point-item.vue b/frontend/app/components/modules/project/config/yaml-generation/shared/components/yaml-distribution-point-item.vue
new file mode 100644
index 000000000..57cdd57fb
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/shared/components/yaml-distribution-point-item.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/shared/components/yaml-repository-item.vue b/frontend/app/components/modules/project/config/yaml-generation/shared/components/yaml-repository-item.vue
new file mode 100644
index 000000000..f6c4c7634
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/shared/components/yaml-repository-item.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/shared/components/yaml-repository-status.vue b/frontend/app/components/modules/project/config/yaml-generation/shared/components/yaml-repository-status.vue
new file mode 100644
index 000000000..6bd2531b9
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/shared/components/yaml-repository-status.vue
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/shared/components/yaml-security-champion-item.vue b/frontend/app/components/modules/project/config/yaml-generation/shared/components/yaml-security-champion-item.vue
new file mode 100644
index 000000000..6b4f73c6a
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/shared/components/yaml-security-champion-item.vue
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+ Primary contact
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/shared/components/yaml-security-tool-item.vue b/frontend/app/components/modules/project/config/yaml-generation/shared/components/yaml-security-tool-item.vue
new file mode 100644
index 000000000..ff01ffc3d
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/shared/components/yaml-security-tool-item.vue
@@ -0,0 +1,405 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Rulesets
+
+ Specific rules, policies, or configurations applied by the tool
+
+
+
+
+
+
+
+ Add ruleset
+
+
+
+
+
+
+
+
+
+
+
+
Adhoc results
+
+ Findings from manual or one-off runs of the tool, typically executed outside of
+ automated workflows.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CI results
+
+ Security findings generated automatically during continuous integration builds or pull
+ request checks.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Release results
+
+ Results from checks performed as part of the release process, validating security
+ before publishing a new version.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Integration
+
+ How the security tool is incorporated into the project's workflow.
+
+
+
+
+
+ Adhoc enabled
+
+
+
+ CI enabled
+
+
+
+ Release enabled
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/shared/components/yaml-third-party-assessment-item.vue b/frontend/app/components/modules/project/config/yaml-generation/shared/components/yaml-third-party-assessment-item.vue
new file mode 100644
index 000000000..ec103fe22
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/shared/components/yaml-third-party-assessment-item.vue
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/shared/yaml-header-information.vue b/frontend/app/components/modules/project/config/yaml-generation/shared/yaml-header-information.vue
new file mode 100644
index 000000000..2fb8b2151
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/shared/yaml-header-information.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
Header Information
+
+ Basic information about your project that will appear at the top of the YAML file.
+
+
+
+
+
+
+ The main URL where your project can be found (typically GitHub repository URL)
+
+
+
+
+
+
+
+
+
diff --git a/frontend/app/components/modules/project/config/yaml-generation/yaml-generation.config.ts b/frontend/app/components/modules/project/config/yaml-generation/yaml-generation.config.ts
new file mode 100644
index 000000000..12051767a
--- /dev/null
+++ b/frontend/app/components/modules/project/config/yaml-generation/yaml-generation.config.ts
@@ -0,0 +1,25 @@
+// Copyright (c) 2025 The Linux Foundation and each contributor.
+// SPDX-License-Identifier: MIT
+import type { Component } from 'vue'
+import basic from './basic/basic-yaml.config'
+import comprehensive from './comprehensive/comprehensive-yaml.config'
+import childRepository from './child-repository/child-repository-yaml.config'
+
+export interface YamlGenerationStep {
+ label: string // Name of the step
+ component: Component // Component to show in the step
+}
+export interface YamlGenerationConfig {
+ label: string // Name of the configuration displayed in the first selector
+ icon: string // Icon to display for the yaml file type
+ description?: string // Description of the configuration
+ features?: string[] // List of features/benefits
+ steps: YamlGenerationStep[] // list of steps
+ template: object // starting template with all the defaults
+}
+
+export const yamlGenerationConfig: Record = {
+ basic,
+ comprehensive,
+ childRepository,
+}
diff --git a/frontend/app/components/modules/project/services/js-yaml.ts b/frontend/app/components/modules/project/services/js-yaml.ts
new file mode 100644
index 000000000..a24cda5b0
--- /dev/null
+++ b/frontend/app/components/modules/project/services/js-yaml.ts
@@ -0,0 +1,16 @@
+// Copyright (c) 2025 The Linux Foundation and each contributor.
+// SPDX-License-Identifier: MIT
+import {dump} from "js-yaml";
+
+export const getYaml = (data: object): string => {
+ let yaml = dump(data, {
+ indent: 2,
+ lineWidth: 80,
+ noRefs: true,
+ sortKeys: false,
+ noArrayIndent: false,
+ skipInvalid: true
+ })
+ yaml = yaml.replace(/\n\s*-\n\s+/g, '\n - ');
+ return yaml;
+}
diff --git a/frontend/app/components/modules/project/services/security.service.ts b/frontend/app/components/modules/project/services/security.service.ts
index 0e88b1d31..fc63c092d 100644
--- a/frontend/app/components/modules/project/services/security.service.ts
+++ b/frontend/app/components/modules/project/services/security.service.ts
@@ -2,7 +2,6 @@
// SPDX-License-Identifier: MIT
import {
type SecurityData,
- SecurityDataCategory,
SecurityDataResult,
type SecurityAssessmentData,
} from '~~/types/security/responses.types'
@@ -29,19 +28,6 @@ class ProjectSecurityService {
* @param data
* @returns
*/
- removeDocumentationAndVulnerability(data: SecurityData[]): SecurityData[] {
- if (!data || !Array.isArray(data) || data.length === 0) {
- return []
- }
-
- return this.removeUnavailableChecks(
- data.filter(
- (item) =>
- item.category !== SecurityDataCategory.DOCUMENTATION &&
- item.category !== SecurityDataCategory.VULNERABILITY_MANAGEMENT,
- ),
- )
- }
removeUnavailableChecks(data: SecurityData[]): SecurityData[] {
if (!data || !Array.isArray(data) || data.length === 0) {
@@ -53,6 +39,18 @@ class ProjectSecurityService {
return data.filter((item) => !filteredCheck.includes(item.controlId))
}
+
+ hasSecurityMdFile(data: SecurityData[]): boolean {
+ const vulnerabilityManagement: SecurityAssessmentData[] =
+ data.find((d) => d.controlId === 'OSPS-VM-02')?.assessments || [];
+ const securityMdFile: SecurityAssessmentData | undefined =
+ vulnerabilityManagement.find((d) => d.requirementId === 'OSPS-VM-02.01');
+ if(!securityMdFile){
+ return false;
+ }
+ return securityMdFile.result !== SecurityDataResult.FAILED;
+ }
+
/**
* Merge duplicate assessments - if there are multiple assessments for the same requirement, merge them
* There should be only one assessment for each requirement
diff --git a/frontend/app/components/modules/project/views/security.vue b/frontend/app/components/modules/project/views/security.vue
index 64628a56d..b21407828 100644
--- a/frontend/app/components/modules/project/views/security.vue
+++ b/frontend/app/components/modules/project/views/security.vue
@@ -31,21 +31,49 @@ SPDX-License-Identifier: MIT
>Learn more
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+ Generate YAML file
+
+
+
+
+
+ YAML Security specifications file
+
+
+ Generate a YAML security file, upload it to your repository,
+ and ensure we can run all security assessments for your project.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -147,6 +175,10 @@ SPDX-License-Identifier: MIT
/>
+
\ No newline at end of file
+
diff --git a/frontend/package.json b/frontend/package.json
index 5abc69a08..80b35b393 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -48,6 +48,7 @@
"html2canvas": "^1.4.1",
"isomorphic-dompurify": "^2.25.0",
"jose": "^6.0.12",
+ "js-yaml": "^4.1.0",
"jsonwebtoken": "^9.0.2",
"jwks-rsa": "^3.2.0",
"jwt-decode": "^4.0.0",
@@ -86,6 +87,7 @@
"@storybook/test": "8.4.7",
"@storybook/vue3": "8.3.3",
"@types/eslint__eslintrc": "^2.1.2",
+ "@types/js-yaml": "^4.0.9",
"@types/lodash": "^4.17.15",
"@types/lodash-es": "^4.17.12",
"@types/luxon": "^3.4.2",
diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml
index 49d13be12..ce6b06ec6 100644
--- a/frontend/pnpm-lock.yaml
+++ b/frontend/pnpm-lock.yaml
@@ -28,7 +28,7 @@ importers:
version: 1.18.1
'@nuxt/eslint':
specifier: ^0.7.5
- version: 0.7.6(@typescript-eslint/utils@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(@vue/compiler-sfc@3.5.21)(eslint-import-resolver-node@0.3.9)(eslint-webpack-plugin@4.2.0(eslint@9.36.0(jiti@2.6.0))(webpack@5.101.3(esbuild@0.25.10)))(eslint@9.36.0(jiti@2.6.0))(magicast@0.3.5)(typescript@5.9.2)(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))
+ version: 0.7.6(@typescript-eslint/utils@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(@vue/compiler-sfc@3.5.21)(eslint-import-resolver-node@0.3.9)(eslint-webpack-plugin@4.2.0(eslint@9.36.0(jiti@2.6.0))(webpack@5.101.3(esbuild@0.25.10)))(eslint@9.36.0(jiti@2.6.0))(magicast@0.3.5)(typescript@5.9.2)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))
'@nuxtjs/plausible':
specifier: ^1.2.0
version: 1.2.0(magicast@0.3.5)
@@ -37,7 +37,7 @@ importers:
version: 5.5.5(h3@1.15.4)(magicast@0.3.5)(vue@3.5.21(typescript@5.9.2))
'@nuxtjs/sitemap':
specifier: ^7.4.7
- version: 7.4.7(h3@1.15.4)(magicast@0.3.5)(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))(vue@3.5.21(typescript@5.9.2))
+ version: 7.4.7(h3@1.15.4)(magicast@0.3.5)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2))
'@pinia/nuxt':
specifier: ^0.10.1
version: 0.10.1(magicast@0.3.5)(pinia@3.0.3(typescript@5.9.2)(vue@3.5.21(typescript@5.9.2)))
@@ -80,6 +80,9 @@ importers:
jose:
specifier: ^6.0.12
version: 6.1.0
+ js-yaml:
+ specifier: ^4.1.0
+ version: 4.1.0
jsonwebtoken:
specifier: ^9.0.2
version: 9.0.2
@@ -97,7 +100,7 @@ importers:
version: 3.7.2
nuxt:
specifier: ^3.15.3
- version: 3.19.2(@parcel/watcher@2.5.1)(@types/node@24.5.2)(@vue/compiler-sfc@3.5.21)(aws4fetch@1.0.20)(db0@0.3.2)(eslint@9.36.0(jiti@2.6.0))(ioredis@5.8.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.52.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(typescript@5.9.2)(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))(yaml@2.8.1)
+ version: 3.19.2(@parcel/watcher@2.5.1)(@types/node@24.5.2)(@vue/compiler-sfc@3.5.21)(aws4fetch@1.0.20)(db0@0.3.2)(eslint@9.36.0(jiti@2.6.0))(ioredis@5.8.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.52.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(typescript@5.9.2)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))(yaml@2.8.1)
nuxt-gtag:
specifier: ^3.0.2
version: 3.0.3(magicast@0.3.5)
@@ -158,10 +161,10 @@ importers:
version: 12.1.0(@stylistic/eslint-plugin@3.1.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)(vue-eslint-parser@10.2.0(eslint@9.36.0(jiti@2.6.0)))
'@nuxtjs/eslint-module':
specifier: ^4.1.0
- version: 4.1.0(eslint@9.36.0(jiti@2.6.0))(magicast@0.3.5)(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))(webpack@5.101.3(esbuild@0.25.10))
+ version: 4.1.0(eslint@9.36.0(jiti@2.6.0))(magicast@0.3.5)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.10))
'@nuxtjs/storybook':
specifier: 8.3.3
- version: 8.3.3(@types/node@24.5.2)(eslint@9.36.0(jiti@2.6.0))(magicast@0.3.5)(nuxt@3.19.2(@parcel/watcher@2.5.1)(@types/node@24.5.2)(@vue/compiler-sfc@3.5.21)(aws4fetch@1.0.20)(db0@0.3.2)(eslint@9.36.0(jiti@2.6.0))(ioredis@5.8.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.52.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(typescript@5.9.2)(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))(yaml@2.8.1))(optionator@0.9.4)(prettier@3.6.2)(rollup@4.52.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(typescript@5.9.2)(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))(vue@3.5.21(typescript@5.9.2))(yaml@2.8.1)
+ version: 8.3.3(@types/node@24.5.2)(eslint@9.36.0(jiti@2.6.0))(magicast@0.3.5)(nuxt@3.19.2(@parcel/watcher@2.5.1)(@types/node@24.5.2)(@vue/compiler-sfc@3.5.21)(aws4fetch@1.0.20)(db0@0.3.2)(eslint@9.36.0(jiti@2.6.0))(ioredis@5.8.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.52.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(typescript@5.9.2)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))(yaml@2.8.1))(optionator@0.9.4)(prettier@3.6.2)(rollup@4.52.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(typescript@5.9.2)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2))(yaml@2.8.1)
'@nuxtjs/tailwindcss':
specifier: ^6.13.1
version: 6.14.0(magicast@0.3.5)
@@ -189,6 +192,9 @@ importers:
'@types/eslint__eslintrc':
specifier: ^2.1.2
version: 2.1.2
+ '@types/js-yaml':
+ specifier: ^4.0.9
+ version: 4.0.9
'@types/lodash':
specifier: ^4.17.15
version: 4.17.20
@@ -224,7 +230,7 @@ importers:
version: 10.1.8(eslint@9.36.0(jiti@2.6.0))
eslint-import-resolver-alias:
specifier: ^1.1.2
- version: 1.1.2(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.36.0(jiti@2.6.0)))
+ version: 1.1.2(eslint-plugin-import@2.32.0)
eslint-import-resolver-typescript:
specifier: ^4.4.3
version: 4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0)))(eslint-plugin-import@2.32.0)(eslint@9.36.0(jiti@2.6.0))
@@ -2609,6 +2615,9 @@ packages:
'@types/istanbul-reports@3.0.4':
resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==}
+ '@types/js-yaml@4.0.9':
+ resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==}
+
'@types/json-schema@7.0.15':
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
@@ -7998,8 +8007,8 @@ packages:
vue-component-type-helpers@2.2.12:
resolution: {integrity: sha512-YbGqHZ5/eW4SnkPNR44mKVc6ZKQoRs/Rux1sxC6rdwXb4qpbOSYfDr9DsTHolOTGmIKgM9j141mZbBeg05R1pw==}
- vue-component-type-helpers@3.0.8:
- resolution: {integrity: sha512-WyR30Eq15Y/+odrUUMax6FmPbZwAp/HnC7qgR1r3lVFAcqwQ4wUoV79Mbh4SxDy3NiqDa+G4TOKD5xXSgBHo5A==}
+ vue-component-type-helpers@3.1.1:
+ resolution: {integrity: sha512-B0kHv7qX6E7+kdc5nsaqjdGZ1KwNKSUQDWGy7XkTYT7wFsOpkEyaJ1Vq79TjwrrtuLRgizrTV7PPuC4rRQo+vw==}
vue-demi@0.13.11:
resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==}
@@ -9380,20 +9389,20 @@ snapshots:
'@nuxt/devalue@2.0.2': {}
- '@nuxt/devtools-kit@1.7.0(magicast@0.3.5)(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))':
+ '@nuxt/devtools-kit@1.7.0(magicast@0.3.5)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))':
dependencies:
'@nuxt/kit': 3.19.2(magicast@0.3.5)
'@nuxt/schema': 3.19.2
execa: 7.2.0
- vite: 5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)
+ vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1)
transitivePeerDependencies:
- magicast
- '@nuxt/devtools-kit@2.6.5(magicast@0.3.5)(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))':
+ '@nuxt/devtools-kit@2.6.5(magicast@0.3.5)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))':
dependencies:
'@nuxt/kit': 3.19.2(magicast@0.3.5)
execa: 8.0.1
- vite: 5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)
+ vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1)
transitivePeerDependencies:
- magicast
@@ -9408,12 +9417,12 @@ snapshots:
prompts: 2.4.2
semver: 7.7.2
- '@nuxt/devtools@2.6.5(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))(vue@3.5.21(typescript@5.9.2))':
+ '@nuxt/devtools@2.6.5(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2))':
dependencies:
- '@nuxt/devtools-kit': 2.6.5(magicast@0.3.5)(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))
+ '@nuxt/devtools-kit': 2.6.5(magicast@0.3.5)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))
'@nuxt/devtools-wizard': 2.6.5
'@nuxt/kit': 3.19.2(magicast@0.3.5)
- '@vue/devtools-core': 7.7.7(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))(vue@3.5.21(typescript@5.9.2))
+ '@vue/devtools-core': 7.7.7(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2))
'@vue/devtools-kit': 7.7.7
birpc: 2.6.1
consola: 3.4.2
@@ -9438,9 +9447,9 @@ snapshots:
sirv: 3.0.2
structured-clone-es: 1.0.0
tinyglobby: 0.2.15
- vite: 5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)
- vite-plugin-inspect: 11.3.3(@nuxt/kit@3.19.2(magicast@0.3.5))(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))
- vite-plugin-vue-tracer: 1.0.1(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))(vue@3.5.21(typescript@5.9.2))
+ vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1)
+ vite-plugin-inspect: 11.3.3(@nuxt/kit@3.19.2(magicast@0.3.5))(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))
+ vite-plugin-vue-tracer: 1.0.1(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2))
which: 5.0.0
ws: 8.18.3
transitivePeerDependencies:
@@ -9488,10 +9497,10 @@ snapshots:
- supports-color
- typescript
- '@nuxt/eslint@0.7.6(@typescript-eslint/utils@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(@vue/compiler-sfc@3.5.21)(eslint-import-resolver-node@0.3.9)(eslint-webpack-plugin@4.2.0(eslint@9.36.0(jiti@2.6.0))(webpack@5.101.3(esbuild@0.25.10)))(eslint@9.36.0(jiti@2.6.0))(magicast@0.3.5)(typescript@5.9.2)(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))':
+ '@nuxt/eslint@0.7.6(@typescript-eslint/utils@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(@vue/compiler-sfc@3.5.21)(eslint-import-resolver-node@0.3.9)(eslint-webpack-plugin@4.2.0(eslint@9.36.0(jiti@2.6.0))(webpack@5.101.3(esbuild@0.25.10)))(eslint@9.36.0(jiti@2.6.0))(magicast@0.3.5)(typescript@5.9.2)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))':
dependencies:
'@eslint/config-inspector': 1.3.0(eslint@9.36.0(jiti@2.6.0))
- '@nuxt/devtools-kit': 1.7.0(magicast@0.3.5)(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))
+ '@nuxt/devtools-kit': 1.7.0(magicast@0.3.5)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))
'@nuxt/eslint-config': 0.7.6(@typescript-eslint/utils@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(@vue/compiler-sfc@3.5.21)(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)
'@nuxt/eslint-plugin': 0.7.6(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)
'@nuxt/kit': 3.19.2(magicast@0.3.5)
@@ -9696,7 +9705,7 @@ snapshots:
'@nuxtjs/eslint-config-typescript@12.1.0(@stylistic/eslint-plugin@3.1.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)(vue-eslint-parser@10.2.0(eslint@9.36.0(jiti@2.6.0)))':
dependencies:
- '@nuxtjs/eslint-config': 12.0.0(@stylistic/eslint-plugin@3.1.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(@typescript-eslint/parser@6.21.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0)))(eslint-plugin-import@2.32.0)(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0))(vue-eslint-parser@10.2.0(eslint@9.36.0(jiti@2.6.0)))
+ '@nuxtjs/eslint-config': 12.0.0(@stylistic/eslint-plugin@3.1.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(@typescript-eslint/parser@6.21.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.6.0))(vue-eslint-parser@10.2.0(eslint@9.36.0(jiti@2.6.0)))
'@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)
'@typescript-eslint/parser': 6.21.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)
eslint: 9.36.0(jiti@2.6.0)
@@ -9711,10 +9720,10 @@ snapshots:
- typescript
- vue-eslint-parser
- '@nuxtjs/eslint-config@12.0.0(@stylistic/eslint-plugin@3.1.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(@typescript-eslint/parser@6.21.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0)))(eslint-plugin-import@2.32.0)(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0))(vue-eslint-parser@10.2.0(eslint@9.36.0(jiti@2.6.0)))':
+ '@nuxtjs/eslint-config@12.0.0(@stylistic/eslint-plugin@3.1.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(@typescript-eslint/parser@6.21.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.6.0))(vue-eslint-parser@10.2.0(eslint@9.36.0(jiti@2.6.0)))':
dependencies:
eslint: 9.36.0(jiti@2.6.0)
- eslint-config-standard: 17.1.0(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.6.0)))(eslint-plugin-n@15.7.0(eslint@9.36.0(jiti@2.6.0)))(eslint-plugin-promise@6.6.0(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0))
+ eslint-config-standard: 17.1.0(eslint-plugin-import@2.32.0)(eslint-plugin-n@15.7.0(eslint@9.36.0(jiti@2.6.0)))(eslint-plugin-promise@6.6.0(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0))
eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.6.0))
eslint-plugin-n: 15.7.0(eslint@9.36.0(jiti@2.6.0))
eslint-plugin-node: 11.1.0(eslint@9.36.0(jiti@2.6.0))
@@ -9730,14 +9739,14 @@ snapshots:
- supports-color
- vue-eslint-parser
- '@nuxtjs/eslint-module@4.1.0(eslint@9.36.0(jiti@2.6.0))(magicast@0.3.5)(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))(webpack@5.101.3(esbuild@0.25.10))':
+ '@nuxtjs/eslint-module@4.1.0(eslint@9.36.0(jiti@2.6.0))(magicast@0.3.5)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.10))':
dependencies:
'@nuxt/kit': 3.19.2(magicast@0.3.5)
chokidar: 3.6.0
eslint: 9.36.0(jiti@2.6.0)
eslint-webpack-plugin: 4.2.0(eslint@9.36.0(jiti@2.6.0))(webpack@5.101.3(esbuild@0.25.10))
pathe: 1.1.2
- vite-plugin-eslint: 1.8.1(eslint@9.36.0(jiti@2.6.0))(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))
+ vite-plugin-eslint: 1.8.1(eslint@9.36.0(jiti@2.6.0))(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))
transitivePeerDependencies:
- magicast
- vite
@@ -9769,9 +9778,9 @@ snapshots:
- magicast
- vue
- '@nuxtjs/sitemap@7.4.7(h3@1.15.4)(magicast@0.3.5)(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))(vue@3.5.21(typescript@5.9.2))':
+ '@nuxtjs/sitemap@7.4.7(h3@1.15.4)(magicast@0.3.5)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2))':
dependencies:
- '@nuxt/devtools-kit': 2.6.5(magicast@0.3.5)(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))
+ '@nuxt/devtools-kit': 2.6.5(magicast@0.3.5)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))
'@nuxt/kit': 4.1.2(magicast@0.3.5)
chalk: 5.6.2
defu: 6.1.4
@@ -9793,11 +9802,11 @@ snapshots:
- vite
- vue
- '@nuxtjs/storybook@8.3.3(@types/node@24.5.2)(eslint@9.36.0(jiti@2.6.0))(magicast@0.3.5)(nuxt@3.19.2(@parcel/watcher@2.5.1)(@types/node@24.5.2)(@vue/compiler-sfc@3.5.21)(aws4fetch@1.0.20)(db0@0.3.2)(eslint@9.36.0(jiti@2.6.0))(ioredis@5.8.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.52.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(typescript@5.9.2)(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))(yaml@2.8.1))(optionator@0.9.4)(prettier@3.6.2)(rollup@4.52.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(typescript@5.9.2)(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))(vue@3.5.21(typescript@5.9.2))(yaml@2.8.1)':
+ '@nuxtjs/storybook@8.3.3(@types/node@24.5.2)(eslint@9.36.0(jiti@2.6.0))(magicast@0.3.5)(nuxt@3.19.2(@parcel/watcher@2.5.1)(@types/node@24.5.2)(@vue/compiler-sfc@3.5.21)(aws4fetch@1.0.20)(db0@0.3.2)(eslint@9.36.0(jiti@2.6.0))(ioredis@5.8.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.52.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(typescript@5.9.2)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))(yaml@2.8.1))(optionator@0.9.4)(prettier@3.6.2)(rollup@4.52.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(typescript@5.9.2)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2))(yaml@2.8.1)':
dependencies:
- '@nuxt/devtools-kit': 1.7.0(magicast@0.3.5)(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))
+ '@nuxt/devtools-kit': 1.7.0(magicast@0.3.5)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))
'@nuxt/kit': 3.19.2(magicast@0.3.5)
- '@storybook-vue/nuxt': 8.3.3(@types/node@24.5.2)(eslint@9.36.0(jiti@2.6.0))(magicast@0.3.5)(nuxt@3.19.2(@parcel/watcher@2.5.1)(@types/node@24.5.2)(@vue/compiler-sfc@3.5.21)(aws4fetch@1.0.20)(db0@0.3.2)(eslint@9.36.0(jiti@2.6.0))(ioredis@5.8.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.52.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(typescript@5.9.2)(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))(yaml@2.8.1))(optionator@0.9.4)(rollup@4.52.2)(sass-embedded@1.93.2)(sass@1.93.2)(storybook@8.4.7(prettier@3.6.2))(terser@5.44.0)(typescript@5.9.2)(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))(vue@3.5.21(typescript@5.9.2))(yaml@2.8.1)
+ '@storybook-vue/nuxt': 8.3.3(@types/node@24.5.2)(eslint@9.36.0(jiti@2.6.0))(magicast@0.3.5)(nuxt@3.19.2(@parcel/watcher@2.5.1)(@types/node@24.5.2)(@vue/compiler-sfc@3.5.21)(aws4fetch@1.0.20)(db0@0.3.2)(eslint@9.36.0(jiti@2.6.0))(ioredis@5.8.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.52.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(typescript@5.9.2)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))(yaml@2.8.1))(optionator@0.9.4)(rollup@4.52.2)(sass-embedded@1.93.2)(sass@1.93.2)(storybook@8.4.7(prettier@3.6.2))(terser@5.44.0)(typescript@5.9.2)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2))(yaml@2.8.1)
'@storybook/core-common': 8.4.7(storybook@8.4.7(prettier@3.6.2))
'@storybook/core-server': 8.4.7(storybook@8.4.7(prettier@3.6.2))
chalk: 5.6.2
@@ -10402,22 +10411,22 @@ snapshots:
'@standard-schema/spec@1.0.0': {}
- '@storybook-vue/nuxt@8.3.3(@types/node@24.5.2)(eslint@9.36.0(jiti@2.6.0))(magicast@0.3.5)(nuxt@3.19.2(@parcel/watcher@2.5.1)(@types/node@24.5.2)(@vue/compiler-sfc@3.5.21)(aws4fetch@1.0.20)(db0@0.3.2)(eslint@9.36.0(jiti@2.6.0))(ioredis@5.8.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.52.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(typescript@5.9.2)(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))(yaml@2.8.1))(optionator@0.9.4)(rollup@4.52.2)(sass-embedded@1.93.2)(sass@1.93.2)(storybook@8.4.7(prettier@3.6.2))(terser@5.44.0)(typescript@5.9.2)(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))(vue@3.5.21(typescript@5.9.2))(yaml@2.8.1)':
+ '@storybook-vue/nuxt@8.3.3(@types/node@24.5.2)(eslint@9.36.0(jiti@2.6.0))(magicast@0.3.5)(nuxt@3.19.2(@parcel/watcher@2.5.1)(@types/node@24.5.2)(@vue/compiler-sfc@3.5.21)(aws4fetch@1.0.20)(db0@0.3.2)(eslint@9.36.0(jiti@2.6.0))(ioredis@5.8.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.52.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(typescript@5.9.2)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))(yaml@2.8.1))(optionator@0.9.4)(rollup@4.52.2)(sass-embedded@1.93.2)(sass@1.93.2)(storybook@8.4.7(prettier@3.6.2))(terser@5.44.0)(typescript@5.9.2)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2))(yaml@2.8.1)':
dependencies:
'@nuxt/kit': 3.19.2(magicast@0.3.5)
'@nuxt/schema': 3.19.2
'@nuxt/vite-builder': 3.19.2(@types/node@24.5.2)(eslint@9.36.0(jiti@2.6.0))(magicast@0.3.5)(optionator@0.9.4)(rollup@4.52.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(typescript@5.9.2)(vue@3.5.21(typescript@5.9.2))(yaml@2.8.1)
'@rollup/plugin-replace': 6.0.2(rollup@4.52.2)
- '@storybook/builder-vite': 8.4.7(storybook@8.4.7(prettier@3.6.2))(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))
+ '@storybook/builder-vite': 8.4.7(storybook@8.4.7(prettier@3.6.2))(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))
'@storybook/vue3': 8.4.7(storybook@8.4.7(prettier@3.6.2))(vue@3.5.21(typescript@5.9.2))
- '@storybook/vue3-vite': 8.4.7(storybook@8.4.7(prettier@3.6.2))(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))(vue@3.5.21(typescript@5.9.2))
+ '@storybook/vue3-vite': 8.4.7(storybook@8.4.7(prettier@3.6.2))(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2))
json-stable-stringify: 1.3.0
mlly: 1.8.0
- nuxt: 3.19.2(@parcel/watcher@2.5.1)(@types/node@24.5.2)(@vue/compiler-sfc@3.5.21)(aws4fetch@1.0.20)(db0@0.3.2)(eslint@9.36.0(jiti@2.6.0))(ioredis@5.8.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.52.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(typescript@5.9.2)(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))(yaml@2.8.1)
+ nuxt: 3.19.2(@parcel/watcher@2.5.1)(@types/node@24.5.2)(@vue/compiler-sfc@3.5.21)(aws4fetch@1.0.20)(db0@0.3.2)(eslint@9.36.0(jiti@2.6.0))(ioredis@5.8.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.52.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(typescript@5.9.2)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))(yaml@2.8.1)
ofetch: 1.4.1
pathe: 1.1.2
unctx: 2.4.1
- vite: 5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)
+ vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1)
vue: 3.5.21(typescript@5.9.2)
vue-router: 4.5.1(vue@3.5.21(typescript@5.9.2))
transitivePeerDependencies:
@@ -10564,13 +10573,13 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@storybook/builder-vite@8.4.7(storybook@8.4.7(prettier@3.6.2))(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))':
+ '@storybook/builder-vite@8.4.7(storybook@8.4.7(prettier@3.6.2))(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))':
dependencies:
'@storybook/csf-plugin': 8.4.7(storybook@8.4.7(prettier@3.6.2))
browser-assert: 1.2.1
storybook: 8.4.7(prettier@3.6.2)
ts-dedent: 2.2.0
- vite: 5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)
+ vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1)
'@storybook/components@8.4.7(storybook@8.4.7(prettier@3.6.2))':
dependencies:
@@ -10672,15 +10681,15 @@ snapshots:
dependencies:
storybook: 8.4.7(prettier@3.6.2)
- '@storybook/vue3-vite@8.4.7(storybook@8.4.7(prettier@3.6.2))(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))(vue@3.5.21(typescript@5.9.2))':
+ '@storybook/vue3-vite@8.4.7(storybook@8.4.7(prettier@3.6.2))(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2))':
dependencies:
- '@storybook/builder-vite': 8.4.7(storybook@8.4.7(prettier@3.6.2))(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))
+ '@storybook/builder-vite': 8.4.7(storybook@8.4.7(prettier@3.6.2))(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))
'@storybook/vue3': 8.4.7(storybook@8.4.7(prettier@3.6.2))(vue@3.5.21(typescript@5.9.2))
find-package-json: 1.2.0
magic-string: 0.30.19
storybook: 8.4.7(prettier@3.6.2)
typescript: 5.9.2
- vite: 5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)
+ vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1)
vue-component-meta: 2.2.12(typescript@5.9.2)
vue-docgen-api: 4.79.2(vue@3.5.21(typescript@5.9.2))
transitivePeerDependencies:
@@ -10698,7 +10707,7 @@ snapshots:
ts-dedent: 2.2.0
type-fest: 2.19.0
vue: 3.5.21(typescript@5.9.2)
- vue-component-type-helpers: 3.0.8
+ vue-component-type-helpers: 3.1.1
'@storybook/vue3@8.4.7(storybook@8.4.7(prettier@3.6.2))(vue@3.5.21(typescript@5.9.2))':
dependencies:
@@ -10712,7 +10721,7 @@ snapshots:
ts-dedent: 2.2.0
type-fest: 2.19.0
vue: 3.5.21(typescript@5.9.2)
- vue-component-type-helpers: 3.0.8
+ vue-component-type-helpers: 3.1.1
'@stylistic/eslint-plugin@3.1.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2)':
dependencies:
@@ -10840,6 +10849,8 @@ snapshots:
dependencies:
'@types/istanbul-lib-report': 3.0.3
+ '@types/js-yaml@4.0.9': {}
+
'@types/json-schema@7.0.15': {}
'@types/json5@0.0.29': {}
@@ -11395,14 +11406,14 @@ snapshots:
dependencies:
'@vue/devtools-kit': 7.7.7
- '@vue/devtools-core@7.7.7(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))(vue@3.5.21(typescript@5.9.2))':
+ '@vue/devtools-core@7.7.7(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2))':
dependencies:
'@vue/devtools-kit': 7.7.7
'@vue/devtools-shared': 7.7.7
mitt: 3.0.1
nanoid: 5.1.6
pathe: 2.0.3
- vite-hot-client: 2.1.0(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))
+ vite-hot-client: 2.1.0(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))
vue: 3.5.21(typescript@5.9.2)
transitivePeerDependencies:
- vite
@@ -12720,10 +12731,10 @@ snapshots:
dependencies:
eslint: 9.36.0(jiti@2.6.0)
- eslint-config-standard@17.1.0(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.6.0)))(eslint-plugin-n@15.7.0(eslint@9.36.0(jiti@2.6.0)))(eslint-plugin-promise@6.6.0(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0)):
+ eslint-config-standard@17.1.0(eslint-plugin-import@2.32.0)(eslint-plugin-n@15.7.0(eslint@9.36.0(jiti@2.6.0)))(eslint-plugin-promise@6.6.0(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0)):
dependencies:
eslint: 9.36.0(jiti@2.6.0)
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.6.0))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.36.0(jiti@2.6.0))
eslint-plugin-n: 15.7.0(eslint@9.36.0(jiti@2.6.0))
eslint-plugin-promise: 6.6.0(eslint@9.36.0(jiti@2.6.0))
@@ -12738,7 +12749,7 @@ snapshots:
optionalDependencies:
unrs-resolver: 1.11.1
- eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.36.0(jiti@2.6.0))):
+ eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.32.0):
dependencies:
eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.36.0(jiti@2.6.0))
@@ -12761,7 +12772,7 @@ snapshots:
tinyglobby: 0.2.15
unrs-resolver: 1.11.1
optionalDependencies:
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.6.0))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.36.0(jiti@2.6.0))
eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0))
transitivePeerDependencies:
- supports-color
@@ -12786,7 +12797,7 @@ snapshots:
dependencies:
eslint: 9.36.0(jiti@2.6.0)
- eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0)))(eslint-plugin-import@2.32.0)(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0)):
+ eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.6.0)):
dependencies:
debug: 3.2.7
optionalDependencies:
@@ -12797,7 +12808,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-module-utils@2.12.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0)))(eslint-plugin-import@2.32.0)(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0)):
+ eslint-module-utils@2.12.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.36.0(jiti@2.6.0)):
dependencies:
debug: 3.2.7
optionalDependencies:
@@ -12849,7 +12860,7 @@ snapshots:
doctrine: 2.1.0
eslint: 9.36.0(jiti@2.6.0)
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0)))(eslint-plugin-import@2.32.0)(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.6.0))
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -12878,7 +12889,7 @@ snapshots:
doctrine: 2.1.0
eslint: 9.36.0(jiti@2.6.0)
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.36.0(jiti@2.6.0)))(eslint-plugin-import@2.32.0)(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.36.0(jiti@2.6.0))
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -14724,11 +14735,11 @@ snapshots:
- magicast
- vue
- nuxt@3.19.2(@parcel/watcher@2.5.1)(@types/node@24.5.2)(@vue/compiler-sfc@3.5.21)(aws4fetch@1.0.20)(db0@0.3.2)(eslint@9.36.0(jiti@2.6.0))(ioredis@5.8.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.52.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(typescript@5.9.2)(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))(yaml@2.8.1):
+ nuxt@3.19.2(@parcel/watcher@2.5.1)(@types/node@24.5.2)(@vue/compiler-sfc@3.5.21)(aws4fetch@1.0.20)(db0@0.3.2)(eslint@9.36.0(jiti@2.6.0))(ioredis@5.8.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.52.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(typescript@5.9.2)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))(yaml@2.8.1):
dependencies:
'@nuxt/cli': 3.28.0(magicast@0.3.5)
'@nuxt/devalue': 2.0.2
- '@nuxt/devtools': 2.6.5(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))(vue@3.5.21(typescript@5.9.2))
+ '@nuxt/devtools': 2.6.5(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2))
'@nuxt/kit': 3.19.2(magicast@0.3.5)
'@nuxt/schema': 3.19.2
'@nuxt/telemetry': 2.6.6(magicast@0.3.5)
@@ -16908,15 +16919,15 @@ snapshots:
'@types/unist': 3.0.3
vfile-message: 4.0.3
- vite-dev-rpc@1.1.0(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)):
+ vite-dev-rpc@1.1.0(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1)):
dependencies:
birpc: 2.6.1
- vite: 5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)
- vite-hot-client: 2.1.0(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))
+ vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1)
+ vite-hot-client: 2.1.0(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))
- vite-hot-client@2.1.0(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)):
+ vite-hot-client@2.1.0(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1)):
dependencies:
- vite: 5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)
+ vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1)
vite-node@3.2.4(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1):
dependencies:
@@ -16956,15 +16967,15 @@ snapshots:
optionator: 0.9.4
typescript: 5.9.2
- vite-plugin-eslint@1.8.1(eslint@9.36.0(jiti@2.6.0))(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)):
+ vite-plugin-eslint@1.8.1(eslint@9.36.0(jiti@2.6.0))(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1)):
dependencies:
'@rollup/pluginutils': 4.2.1
'@types/eslint': 8.56.12
eslint: 9.36.0(jiti@2.6.0)
rollup: 2.79.2
- vite: 5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)
+ vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1)
- vite-plugin-inspect@11.3.3(@nuxt/kit@3.19.2(magicast@0.3.5))(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)):
+ vite-plugin-inspect@11.3.3(@nuxt/kit@3.19.2(magicast@0.3.5))(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1)):
dependencies:
ansis: 4.1.0
debug: 4.4.3
@@ -16974,21 +16985,21 @@ snapshots:
perfect-debounce: 2.0.0
sirv: 3.0.2
unplugin-utils: 0.3.0
- vite: 5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)
- vite-dev-rpc: 1.1.0(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))
+ vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1)
+ vite-dev-rpc: 1.1.0(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))
optionalDependencies:
'@nuxt/kit': 3.19.2(magicast@0.3.5)
transitivePeerDependencies:
- supports-color
- vite-plugin-vue-tracer@1.0.1(vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))(vue@3.5.21(typescript@5.9.2)):
+ vite-plugin-vue-tracer@1.0.1(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.21(typescript@5.9.2)):
dependencies:
estree-walker: 3.0.3
exsolve: 1.0.7
magic-string: 0.30.19
pathe: 2.0.3
source-map-js: 1.2.1
- vite: 5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)
+ vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.0)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)(yaml@2.8.1)
vue: 3.5.21(typescript@5.9.2)
vite@5.4.20(@types/node@24.5.2)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0):
@@ -17147,7 +17158,7 @@ snapshots:
vue-component-type-helpers@2.2.12: {}
- vue-component-type-helpers@3.0.8: {}
+ vue-component-type-helpers@3.1.1: {}
vue-demi@0.13.11(vue@3.5.21(typescript@5.9.2)):
dependencies:
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index eace3c200..cc4cb7537 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -93,6 +93,9 @@ importers:
jose:
specifier: ^6.0.12
version: 6.0.12
+ js-yaml:
+ specifier: ^4.1.0
+ version: 4.1.0
jsonwebtoken:
specifier: ^9.0.2
version: 9.0.2
@@ -202,6 +205,9 @@ importers:
'@types/eslint__eslintrc':
specifier: ^2.1.2
version: 2.1.2
+ '@types/js-yaml':
+ specifier: ^4.0.9
+ version: 4.0.9
'@types/lodash':
specifier: ^4.17.15
version: 4.17.17
@@ -4168,6 +4174,9 @@ packages:
'@types/istanbul-reports@3.0.4':
resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==}
+ '@types/js-yaml@4.0.9':
+ resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==}
+
'@types/json-schema@7.0.15':
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
@@ -15300,6 +15309,8 @@ snapshots:
dependencies:
'@types/istanbul-lib-report': 3.0.3
+ '@types/js-yaml@4.0.9': {}
+
'@types/json-schema@7.0.15': {}
'@types/json5@0.0.29': {}