@ykdz/template 0.0.33 → 0.0.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/dist/application.d.ts +2 -1
  2. package/dist/application.js +64 -75
  3. package/dist/main.js +6 -2
  4. package/node_modules/@ykdz/template-builtin-presets/dist/src/foundation.d.ts +50 -36
  5. package/node_modules/@ykdz/template-builtin-presets/dist/src/foundation.js +970 -365
  6. package/node_modules/@ykdz/template-builtin-presets/dist/src/generation-record.d.ts +24 -0
  7. package/node_modules/@ykdz/template-builtin-presets/dist/src/generation-record.js +154 -0
  8. package/node_modules/@ykdz/template-builtin-presets/dist/src/index.d.ts +2 -2
  9. package/node_modules/@ykdz/template-builtin-presets/dist/src/index.js +1 -1
  10. package/node_modules/@ykdz/template-builtin-presets/dist/src/rust-bin/definition.d.ts +31 -2
  11. package/node_modules/@ykdz/template-builtin-presets/dist/src/rust-bin/definition.js +29 -33
  12. package/node_modules/@ykdz/template-builtin-presets/dist/src/shared/development-container.d.ts +1 -0
  13. package/node_modules/@ykdz/template-builtin-presets/dist/src/shared/development-container.js +17 -0
  14. package/node_modules/@ykdz/template-builtin-presets/dist/src/shared/typescript.d.ts +4 -3
  15. package/node_modules/@ykdz/template-builtin-presets/dist/src/shared/typescript.js +9 -5
  16. package/node_modules/@ykdz/template-builtin-presets/dist/src/shared/vue.d.ts +1 -1
  17. package/node_modules/@ykdz/template-builtin-presets/dist/src/shared/vue.js +1 -2
  18. package/node_modules/@ykdz/template-builtin-presets/dist/src/ts-cli/definition.d.ts +31 -2
  19. package/node_modules/@ykdz/template-builtin-presets/dist/src/ts-cli/definition.js +79 -58
  20. package/node_modules/@ykdz/template-builtin-presets/dist/src/ts-lib/definition.d.ts +31 -2
  21. package/node_modules/@ykdz/template-builtin-presets/dist/src/ts-lib/definition.js +31 -23
  22. package/node_modules/@ykdz/template-builtin-presets/dist/src/vike-app/definition.d.ts +22 -2
  23. package/node_modules/@ykdz/template-builtin-presets/dist/src/vike-app/definition.js +61 -35
  24. package/node_modules/@ykdz/template-builtin-presets/dist/src/vue-app/definition.d.ts +26 -2
  25. package/node_modules/@ykdz/template-builtin-presets/dist/src/vue-app/definition.js +19 -8
  26. package/node_modules/@ykdz/template-builtin-presets/dist/src/vue-hono-app/definition.d.ts +22 -2
  27. package/node_modules/@ykdz/template-builtin-presets/dist/src/vue-hono-app/definition.js +31 -21
  28. package/node_modules/@ykdz/template-builtin-presets/package.json +12 -11
  29. package/node_modules/@ykdz/template-builtin-presets/templates/foundation/.github/workflows/check-deployment-diagnostics.yml +1 -1
  30. package/node_modules/@ykdz/template-builtin-presets/templates/foundation/.github/workflows/check-deployment.yml +1 -1
  31. package/node_modules/@ykdz/template-builtin-presets/templates/foundation/.pnpmfile.mjs +19 -0
  32. package/node_modules/@ykdz/template-builtin-presets/templates/foundation/gitignore +1 -0
  33. package/node_modules/@ykdz/template-builtin-presets/templates/foundation/tsconfig.packing-hook.json +8 -0
  34. package/node_modules/@ykdz/template-builtin-presets/templates/shared/devcontainer/github-cli.Dockerfile +9 -0
  35. package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/publication/CHANGELOG.md.template +17 -0
  36. package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/publication/RELEASING.md +17 -0
  37. package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/publication/artifact.ts +1271 -0
  38. package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/publication/changelog.ts +283 -0
  39. package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/publication/check-artifact.ts +99 -0
  40. package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/publication/check-readiness.ts +66 -0
  41. package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/publication/cli-command-identity.ts +4 -0
  42. package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/publication/handoff.ts +450 -0
  43. package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/publication/publish.ts +483 -0
  44. package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/publication/readiness.ts +1125 -0
  45. package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/publication/release.ts +819 -0
  46. package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/publication/release.yml +119 -0
  47. package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/publication/root-tsconfig.json +13 -0
  48. package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/publication/tsconfig.json +4 -0
  49. package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/publication/turbo.json +6 -0
  50. package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/publication-setup/README.md +48 -0
  51. package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/publication-setup/assets/CHANGELOG.md.template +17 -0
  52. package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/publication-setup/assets/LICENSE-APACHE-2.0.txt +202 -0
  53. package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/publication-setup/assets/LICENSE-MIT.txt +21 -0
  54. package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/publication-setup/assets/README.md.template +5 -0
  55. package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/publication-setup/bridge.ts +3336 -0
  56. package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/publication-setup/setup.sh +221 -0
  57. package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/src/cli-command-identity.ts +133 -0
  58. package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/src/cli.ts +4 -3
  59. package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/src/main.ts +5 -4
  60. package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/test/integration/command.test.ts +14 -13
  61. package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/test/unit/cli-command-identity.test.ts +76 -0
  62. package/node_modules/@ykdz/template-builtin-presets/templates/ts-cli/tsconfig.build.json +2 -0
  63. package/node_modules/@ykdz/template-builtin-presets/templates/vike-app/db/src/readiness.ts +1 -1
  64. package/node_modules/@ykdz/template-builtin-presets/templates/vike-app/db/test/global-setup.ts +21 -0
  65. package/node_modules/@ykdz/template-builtin-presets/templates/vike-app/db/tsconfig.json +6 -1
  66. package/node_modules/@ykdz/template-builtin-presets/templates/vike-app/db/vitest.config.ts +7 -0
  67. package/node_modules/@ykdz/template-builtin-presets/templates/vike-app/db-migrations/drizzle.config.ts +5 -1
  68. package/node_modules/@ykdz/template-builtin-presets/templates/vike-app/web/playwright.config.ts +102 -22
  69. package/node_modules/@ykdz/template-builtin-presets/templates/vike-app/web/test/playwright-teardown.ts +12 -0
  70. package/node_modules/@ykdz/template-builtin-presets/templates/vike-app/web/vite.config.ts +39 -1
  71. package/node_modules/@ykdz/template-builtin-presets/templates/vue-app/playwright.config.ts +48 -7
  72. package/node_modules/@ykdz/template-builtin-presets/templates/vue-hono-app/web/playwright.config.ts +59 -8
  73. package/node_modules/@ykdz/template-core/dist/module-graph.d.ts +15 -53
  74. package/node_modules/@ykdz/template-core/dist/module-graph.js +134 -101
  75. package/node_modules/@ykdz/template-core/dist/package-contribution.d.ts +13 -1
  76. package/node_modules/@ykdz/template-core/dist/package-contribution.js +92 -0
  77. package/node_modules/@ykdz/template-core/dist/pnpm-workspace.yaml +14 -10
  78. package/node_modules/@ykdz/template-core/dist/preset-definition.d.ts +71 -13
  79. package/node_modules/@ykdz/template-core/dist/preset-definition.js +16 -1
  80. package/node_modules/@ykdz/template-core/dist/project-blueprint.d.ts +56 -0
  81. package/node_modules/@ykdz/template-core/dist/project-blueprint.js +271 -0
  82. package/node_modules/@ykdz/template-core/dist/project-linking-v2.d.ts +2 -2
  83. package/node_modules/@ykdz/template-core/dist/project-linking-v2.js +2 -2
  84. package/node_modules/@ykdz/template-core/dist/project-projection.d.ts +2 -1
  85. package/node_modules/@ykdz/template-core/dist/project-projection.js +107 -20
  86. package/node_modules/@ykdz/template-core/dist/renderer.d.ts +0 -2
  87. package/node_modules/@ykdz/template-core/dist/renderer.js +17 -38
  88. package/node_modules/@ykdz/template-core/dist/template-boundary-check.d.ts +2 -2
  89. package/node_modules/@ykdz/template-core/dist/template-boundary-check.js +6 -0
  90. package/node_modules/@ykdz/template-core/dist/toolchain-resolution.d.ts +2 -0
  91. package/node_modules/@ykdz/template-core/dist/toolchain-resolution.js +9 -3
  92. package/package.json +3 -3
  93. package/node_modules/@ykdz/template-builtin-presets/templates/vike-app/db-migrations/scripts/prepare-database.ts +0 -45
  94. package/node_modules/@ykdz/template-builtin-presets/templates/vike-app/web/scripts/run-playwright.ts +0 -151
  95. package/node_modules/@ykdz/template-builtin-presets/templates/vue-app/scripts/run-playwright.ts +0 -62
  96. package/node_modules/@ykdz/template-builtin-presets/templates/vue-hono-app/web/scripts/run-playwright.ts +0 -103
  97. package/node_modules/@ykdz/template-core/dist/project-blueprint-v2.d.ts +0 -33
  98. package/node_modules/@ykdz/template-core/dist/project-blueprint-v2.js +0 -182
@@ -1,3 +1,4 @@
1
+ import { definePackageContributionReplayAdapter, } from "#template-core/preset-definition";
1
2
  import { sharedVueSourceOperations, vueApplicationDevelopmentContainerToolLayers, vueApplicationEnvironmentNeeds, vueApplicationExposure, vueApplicationManifest, vueApplicationScripts, } from "../shared/vue.js";
2
3
  import { templateSources } from "../template-sources.js";
3
4
  function packageScripts() {
@@ -7,8 +8,8 @@ function packageScripts() {
7
8
  };
8
9
  }
9
10
  function appContribution(options) {
10
- const definition = {
11
- name: `@${options.context.scope}/${options.packageLeafName}`,
11
+ const definition = options.packageDefinition ?? {
12
+ name: `@${options.context.defaultPackageScope}/${options.packageLeafName}`,
12
13
  path: options.packagePath,
13
14
  role: "runtime-service",
14
15
  };
@@ -20,7 +21,6 @@ function appContribution(options) {
20
21
  "vite.config.ts",
21
22
  "vitest.config.ts",
22
23
  "turbo.json",
23
- "scripts/run-playwright.ts",
24
24
  "src/App.vue",
25
25
  "test/e2e/app.spec.ts",
26
26
  ];
@@ -53,15 +53,25 @@ function appContribution(options) {
53
53
  foundation: {
54
54
  toolchains: {},
55
55
  editorCapabilities: ["oxc-format-lint", "vue", "tailwind", "vitest"],
56
+ typescriptConfigurationPackage: { dependency: "required" },
56
57
  dependencyMaintenance: {
57
58
  ecosystems: ["npm", "github-actions", "docker"],
58
59
  interval: "weekly",
59
60
  },
60
- workspacePackageGlobs: [`${options.packagePath.split("/")[0]}/*`],
61
+ workspacePackageGlobs: [`${definition.path.split("/")[0]}/*`],
61
62
  developmentContainerToolLayers: vueApplicationDevelopmentContainerToolLayers(),
62
63
  },
63
64
  };
64
65
  }
66
+ const appReplayAdapter = definePackageContributionReplayAdapter({
67
+ identity: "app",
68
+ replay: ({ context, packageDefinition, packageLeafName }) => appContribution({
69
+ context,
70
+ packageLeafName,
71
+ packagePath: packageDefinition.path,
72
+ packageDefinition,
73
+ }),
74
+ });
65
75
  export const vueAppDefinition = {
66
76
  metadata: {
67
77
  name: "vue-app",
@@ -70,9 +80,10 @@ export const vueAppDefinition = {
70
80
  },
71
81
  source: templateSources.vueApp,
72
82
  plannerSourceFile: fileURLToPath(import.meta.url),
83
+ packageContributionReplayAdapters: [appReplayAdapter],
73
84
  blueprint(context) {
74
85
  return {
75
- schemaVersion: 2,
86
+ schemaVersion: 3,
76
87
  packages: [
77
88
  appContribution({
78
89
  context,
@@ -83,17 +94,17 @@ export const vueAppDefinition = {
83
94
  };
84
95
  },
85
96
  planInitialization(context) {
86
- return appContribution({
97
+ return appReplayAdapter.identify(appContribution({
87
98
  context,
88
99
  packageLeafName: "web",
89
100
  packagePath: "apps/web",
90
- });
101
+ }));
91
102
  },
92
103
  defaultPackagePath({ packageLeafName }) {
93
104
  return `apps/${packageLeafName}`;
94
105
  },
95
106
  planPackageAddition({ context, packageLeafName, packagePath }) {
96
- return appContribution({ context, packageLeafName, packagePath });
107
+ return appReplayAdapter.identify(appContribution({ context, packageLeafName, packagePath }));
97
108
  },
98
109
  };
99
110
  import { fileURLToPath } from "node:url";
@@ -1,2 +1,22 @@
1
- import type { BuiltInPresetDefinition } from "#template-core/preset-definition";
2
- export declare const vueHonoAppDefinition: BuiltInPresetDefinition;
1
+ import { type GenerationContext } from "#template-core/preset-definition";
2
+ import type { PackageDefinition } from "#template-core/project-blueprint";
3
+ export declare const vueHonoAppDefinition: {
4
+ metadata: {
5
+ name: string;
6
+ title: string;
7
+ description: string;
8
+ };
9
+ source: import("@ykdz/template-core/renderer").TemplateSourceHandle;
10
+ plannerSourceFile: string;
11
+ packageContributionReplayAdapters: import("@ykdz/template-core/preset-definition").PackageContributionReplayAdapter[];
12
+ blueprint(context: GenerationContext): {
13
+ schemaVersion: 3;
14
+ packages: PackageDefinition[];
15
+ packageLinkIntents: {
16
+ consumerPackagePath: string;
17
+ providerPackagePath: string;
18
+ }[];
19
+ };
20
+ planInitialization(context: GenerationContext): import("@ykdz/template-core/preset-definition").PlannedPackageContribution;
21
+ planInitializationContributions(context: GenerationContext): import("@ykdz/template-core/preset-definition").PlannedPackageContribution[];
22
+ };
@@ -1,3 +1,4 @@
1
+ import { definePackageContributionReplayAdapter, } from "#template-core/preset-definition";
1
2
  import { typescriptConfigSourceOperation } from "../shared/typescript.js";
2
3
  import { sharedVueSourceOperations, vueApplicationDevelopmentContainerToolLayers, vueApplicationEnvironmentNeeds, vueApplicationExposure, vueApplicationManifest, vueApplicationScripts, } from "../shared/vue.js";
3
4
  import { templateSources } from "../template-sources.js";
@@ -20,23 +21,23 @@ function webScripts() {
20
21
  typecheck: "node --conditions=source scripts/run-vue-tsc.ts --build --noEmit --pretty false",
21
22
  };
22
23
  }
23
- function packageFoundation() {
24
+ function packageFoundation(packagePath) {
24
25
  return {
25
26
  toolchains: {},
26
27
  editorCapabilities: ["oxc-format-lint", "vue", "tailwind", "vitest"],
28
+ typescriptConfigurationPackage: { dependency: "required" },
27
29
  dependencyMaintenance: {
28
30
  ecosystems: ["npm", "github-actions", "docker"],
29
31
  interval: "weekly",
30
32
  },
31
- workspacePackageGlobs: ["apps/*"],
33
+ workspacePackageGlobs: [`${packagePath.split("/")[0]}/*`],
32
34
  };
33
35
  }
34
- function apiContribution(context) {
35
- const definition = {
36
- name: `@${context.scope}/api`,
37
- path: "apps/api",
38
- role: "runtime-service",
39
- };
36
+ function apiContribution(context, definition = {
37
+ name: `@${context.defaultPackageScope}/api`,
38
+ path: "apps/api",
39
+ role: "runtime-service",
40
+ }) {
40
41
  const exposure = {
41
42
  exports: {
42
43
  ".": { default: "./dist/index.js", types: "./dist/index.d.ts" },
@@ -80,7 +81,6 @@ function apiContribution(context) {
80
81
  exposure,
81
82
  manifest: {
82
83
  name: definition.name,
83
- version: "0.0.0",
84
84
  private: true,
85
85
  type: "module",
86
86
  ...exposure,
@@ -98,15 +98,14 @@ function apiContribution(context) {
98
98
  },
99
99
  operations,
100
100
  environmentNeeds: [],
101
- foundation: packageFoundation(),
101
+ foundation: packageFoundation(definition.path),
102
102
  };
103
103
  }
104
- function webContribution(context) {
105
- const definition = {
106
- name: `@${context.scope}/web`,
107
- path: "apps/web",
108
- role: "runtime-service",
109
- };
104
+ function webContribution(context, definition = {
105
+ name: `@${context.defaultPackageScope}/web`,
106
+ path: "apps/web",
107
+ role: "runtime-service",
108
+ }) {
110
109
  const exposure = vueApplicationExposure;
111
110
  const localSourceFiles = [
112
111
  "env.d.ts",
@@ -115,7 +114,6 @@ function webContribution(context) {
115
114
  "vite.config.ts",
116
115
  "vitest.config.ts",
117
116
  "turbo.json",
118
- "scripts/run-playwright.ts",
119
117
  "src/api.ts",
120
118
  "src/App.vue",
121
119
  "test/e2e/app.spec.ts",
@@ -147,11 +145,19 @@ function webContribution(context) {
147
145
  },
148
146
  ],
149
147
  foundation: {
150
- ...packageFoundation(),
148
+ ...packageFoundation(definition.path),
151
149
  developmentContainerToolLayers: vueApplicationDevelopmentContainerToolLayers(),
152
150
  },
153
151
  };
154
152
  }
153
+ const apiReplayAdapter = definePackageContributionReplayAdapter({
154
+ identity: "api",
155
+ replay: ({ context, packageDefinition }) => apiContribution(context, packageDefinition),
156
+ });
157
+ const webReplayAdapter = definePackageContributionReplayAdapter({
158
+ identity: "web",
159
+ replay: ({ context, packageDefinition }) => webContribution(context, packageDefinition),
160
+ });
155
161
  export const vueHonoAppDefinition = {
156
162
  metadata: {
157
163
  name: "vue-hono-app",
@@ -160,11 +166,12 @@ export const vueHonoAppDefinition = {
160
166
  },
161
167
  source: templateSources.vueHonoApp,
162
168
  plannerSourceFile: fileURLToPath(import.meta.url),
169
+ packageContributionReplayAdapters: [apiReplayAdapter, webReplayAdapter],
163
170
  blueprint(context) {
164
171
  const api = apiContribution(context);
165
172
  const web = webContribution(context);
166
173
  return {
167
- schemaVersion: 2,
174
+ schemaVersion: 3,
168
175
  packages: [api.definition, web.definition],
169
176
  packageLinkIntents: [
170
177
  {
@@ -175,10 +182,13 @@ export const vueHonoAppDefinition = {
175
182
  };
176
183
  },
177
184
  planInitialization(context) {
178
- return apiContribution(context);
185
+ return apiReplayAdapter.identify(apiContribution(context));
179
186
  },
180
187
  planInitializationContributions(context) {
181
- return [apiContribution(context), webContribution(context)];
188
+ return [
189
+ apiReplayAdapter.identify(apiContribution(context)),
190
+ webReplayAdapter.identify(webContribution(context)),
191
+ ];
182
192
  },
183
193
  };
184
194
  import { fileURLToPath } from "node:url";
@@ -4,11 +4,7 @@
4
4
  "private": true,
5
5
  "files": [
6
6
  "dist",
7
- "templates",
8
- "!dist/src/check-*.js",
9
- "!dist/src/check-*.d.ts",
10
- "!dist/src/registry-checks.js",
11
- "!dist/src/registry-checks.d.ts"
7
+ "templates"
12
8
  ],
13
9
  "type": "module",
14
10
  "imports": {
@@ -16,7 +12,8 @@
16
12
  "source": "@ykdz/template-core-source/*",
17
13
  "types": "@ykdz/template-core/*",
18
14
  "default": "@ykdz/template-core/*"
19
- }
15
+ },
16
+ "#npm-publication/*": "./templates/ts-cli/publication/*.ts"
20
17
  },
21
18
  "exports": {
22
19
  ".": {
@@ -27,12 +24,10 @@
27
24
  },
28
25
  "scripts": {
29
26
  "build": "rm -rf dist && tsc -p tsconfig.build.json",
30
- "check:templates": "node --conditions=source src/check-template-source.ts && node --conditions=source src/check-registry-contract.ts && node --conditions=source src/check-publication-source.ts",
31
- "check:templates:boundary": "node --conditions=source src/check-template-boundary.ts",
32
27
  "format:check": "oxfmt --list-different --config ../../oxfmt.config.ts .",
33
28
  "format:write": "oxfmt --write --config ../../oxfmt.config.ts .",
34
- "lint": "oxlint --quiet --format=unix --config ../../oxlint.config.ts --ignore-pattern dist --ignore-pattern templates .",
35
- "lint:fix": "oxlint --format=unix --config ../../oxlint.config.ts --ignore-pattern dist --ignore-pattern templates . --fix",
29
+ "lint": "oxlint --quiet --format=unix --config ../../oxlint.config.ts --ignore-pattern dist --ignore-pattern templates . && oxlint --quiet --format=unix --config ../../oxlint.config.ts templates/ts-cli/publication-setup/bridge.ts",
30
+ "lint:fix": "oxlint --format=unix --config ../../oxlint.config.ts --ignore-pattern dist --ignore-pattern templates . --fix && oxlint --format=unix --config ../../oxlint.config.ts templates/ts-cli/publication-setup/bridge.ts --fix",
36
31
  "test": "vitest run --config vitest.config.ts --reporter=agent --silent=passed-only --maxWorkers=1",
37
32
  "typecheck": "tsc -p tsconfig.json --noEmit --pretty false"
38
33
  },
@@ -45,6 +40,8 @@
45
40
  "@playwright/test": "catalog:",
46
41
  "@tailwindcss/vite": "catalog:",
47
42
  "@types/node": "catalog:",
43
+ "@types/semver": "catalog:",
44
+ "@types/spdx-expression-parse": "catalog:",
48
45
  "@types/web-bluetooth": "catalog:",
49
46
  "@vikejs/hono": "catalog:",
50
47
  "@vitejs/plugin-vue": "catalog:",
@@ -60,7 +57,10 @@
60
57
  "oxlint": "catalog:",
61
58
  "oxlint-tsgolint": "catalog:",
62
59
  "pinia": "catalog:",
60
+ "semver": "catalog:",
61
+ "spdx-expression-parse": "catalog:",
63
62
  "tailwindcss": "catalog:",
63
+ "tar": "catalog:",
64
64
  "telefunc": "catalog:",
65
65
  "typescript": "catalog:",
66
66
  "typescript-7": "catalog:",
@@ -69,7 +69,8 @@
69
69
  "vite": "catalog:",
70
70
  "vitest": "catalog:",
71
71
  "vue": "catalog:",
72
- "vue-tsc": "catalog:"
72
+ "vue-tsc": "catalog:",
73
+ "yaml": "catalog:"
73
74
  },
74
75
  "turbo": {
75
76
  "tags": [
@@ -47,7 +47,7 @@ jobs:
47
47
  with:
48
48
  cache: true
49
49
  - name: Set up Docker Buildx
50
- uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3
50
+ uses: docker/setup-buildx-action@bb05f3f5519dd87d3ba754cc423b652a5edd6d2c # v4.2.0
51
51
  if: matrix.requires_docker
52
52
  - name: Install dependencies
53
53
  run: pnpm install --frozen-lockfile
@@ -47,7 +47,7 @@ jobs:
47
47
  with:
48
48
  cache: true
49
49
  - name: Set up Docker Buildx
50
- uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3
50
+ uses: docker/setup-buildx-action@bb05f3f5519dd87d3ba754cc423b652a5edd6d2c # v4.2.0
51
51
  if: matrix.requires_docker
52
52
  - name: Install dependencies
53
53
  run: pnpm install --frozen-lockfile
@@ -0,0 +1,19 @@
1
+ // @ts-check
2
+
3
+ /**
4
+ * @typedef {object} ProjectManifest
5
+ * @property {Record<string, string>} [devDependencies]
6
+ * @property {Record<string, string>} [scripts]
7
+ */
8
+
9
+ export const hooks = {
10
+ /**
11
+ * @param {ProjectManifest} pkg
12
+ * @returns {ProjectManifest}
13
+ */
14
+ beforePacking(pkg) {
15
+ delete pkg.devDependencies;
16
+ delete pkg.scripts;
17
+ return pkg;
18
+ },
19
+ };
@@ -6,5 +6,6 @@ target/
6
6
  coverage/
7
7
  .env
8
8
  .template/
9
+ data/
9
10
  playwright-report/
10
11
  test-results/
@@ -0,0 +1,8 @@
1
+ {
2
+ "compilerOptions": {
3
+ "allowJs": true,
4
+ "checkJs": true,
5
+ "noEmit": true
6
+ },
7
+ "include": [".pnpmfile.mjs"]
8
+ }
@@ -0,0 +1,9 @@
1
+ RUN apt-get update \
2
+ && apt-get install -y --no-install-recommends curl \
3
+ && install -m 0755 -d /etc/apt/keyrings \
4
+ && curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg -o /etc/apt/keyrings/githubcli-archive-keyring.gpg \
5
+ && chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
6
+ && echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" > /etc/apt/sources.list.d/github-cli.list \
7
+ && apt-get update \
8
+ && apt-get install -y --no-install-recommends gh \
9
+ && rm -rf /var/lib/apt/lists/*
@@ -0,0 +1,17 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/2.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [{{PACKAGE_VERSION}}] - {{RELEASE_DATE}}
11
+
12
+ ### Added
13
+
14
+ - Publish the first stable release.
15
+
16
+ [Unreleased]: {{REPOSITORY_URL}}/compare/v{{PACKAGE_VERSION}}...HEAD
17
+ [{{PACKAGE_VERSION}}]: {{REPOSITORY_URL}}/releases/tag/v{{PACKAGE_VERSION}}
@@ -0,0 +1,17 @@
1
+ # Releasing
2
+
3
+ Prepare a normal pull request that changes the public package version and its
4
+ curated `CHANGELOG.md` entry. After that PR is reviewed and merged to the
5
+ protected default branch, run the `release.yml` workflow manually without
6
+ inputs. The workflow verifies and publishes the accepted artifact, then creates
7
+ the matching GitHub Release.
8
+
9
+ If a release stops after an external write, preserve the observed npm, tag, and
10
+ GitHub Release facts. Use GitHub's failed-job rerun only when it retains the
11
+ accepted artifact; otherwise stop and investigate the incident rather than
12
+ repacking, overwriting, or repairing remote release state.
13
+
14
+ After the first successful natural OIDC release, open npm account security and
15
+ enable **Require 2FA and disallow tokens**. Revoke each no-longer-needed write
16
+ token individually. This is an account-hardening action; it is not part of the
17
+ daily workflow and should not block ordinary release preparation.