@ykdz/template 0.0.18 → 0.0.20

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 (77) hide show
  1. package/dist/cli.js +61 -24
  2. package/node_modules/@ykdz/template-builtin-source/dist/templates/registry.js +0 -2
  3. package/node_modules/@ykdz/template-builtin-source/dist/templates/vike-app/projection.js +13 -2
  4. package/node_modules/@ykdz/template-builtin-source/dist/templates/vue-app/projection.js +5 -73
  5. package/node_modules/@ykdz/template-builtin-source/dist/templates/vue-hono-app/projection.js +3 -2
  6. package/node_modules/@ykdz/template-builtin-source/package.json +36 -3
  7. package/node_modules/@ykdz/template-builtin-source/templates/preset-source.json +69 -282
  8. package/node_modules/@ykdz/template-builtin-source/templates/rust-bin/src/main.rs +5 -2
  9. package/node_modules/@ykdz/template-builtin-source/templates/rust-bin/turbo.json +2 -1
  10. package/node_modules/@ykdz/template-builtin-source/templates/ts-lib/turbo.json +2 -1
  11. package/node_modules/@ykdz/template-builtin-source/templates/vike-app/{drizzle.config.ts → db/drizzle.config.ts} +2 -2
  12. package/node_modules/@ykdz/template-builtin-source/templates/vike-app/{database → db/src}/db.ts +1 -1
  13. package/node_modules/@ykdz/template-builtin-source/templates/vike-app/db/src/index.ts +1 -0
  14. package/node_modules/@ykdz/template-builtin-source/templates/vike-app/{database → db/src}/queries/todos.ts +4 -8
  15. package/node_modules/@ykdz/template-builtin-source/templates/vike-app/{test → db/test}/todos.test.ts +2 -2
  16. package/node_modules/@ykdz/template-builtin-source/templates/{hono-api → vike-app/db}/turbo.json +2 -1
  17. package/node_modules/@ykdz/template-builtin-source/templates/vike-app/{pages → web/pages}/index/+Page.telefunc.ts +3 -1
  18. package/node_modules/@ykdz/template-builtin-source/templates/vike-app/{pages → web/pages}/index/+Page.vue +1 -2
  19. package/node_modules/@ykdz/template-builtin-source/templates/vike-app/web/playwright.config.ts +43 -0
  20. package/node_modules/@ykdz/template-builtin-source/templates/vike-app/web/scripts/run-playwright.ts +62 -0
  21. package/node_modules/@ykdz/template-builtin-source/templates/vike-app/{server → web/server}/app.ts +1 -1
  22. package/node_modules/@ykdz/template-builtin-source/templates/vike-app/{test → web/test}/e2e/app.spec.ts +1 -1
  23. package/node_modules/@ykdz/template-builtin-source/templates/vike-app/web/turbo.json +12 -0
  24. package/node_modules/@ykdz/template-builtin-source/templates/vike-app/{types → web/types}/global.d.ts +1 -1
  25. package/node_modules/@ykdz/template-builtin-source/templates/vike-app/{vite.config.ts → web/vite.config.ts} +1 -0
  26. package/node_modules/@ykdz/template-builtin-source/templates/vue-app/playwright.config.ts +16 -3
  27. package/node_modules/@ykdz/template-builtin-source/templates/vue-app/scripts/run-playwright.ts +38 -1
  28. package/node_modules/@ykdz/template-builtin-source/templates/vue-app/turbo.json +1 -0
  29. package/node_modules/@ykdz/template-builtin-source/templates/vue-hono-app/api/turbo.json +1 -0
  30. package/node_modules/@ykdz/template-builtin-source/templates/vue-hono-app/web/playwright.config.ts +7 -9
  31. package/node_modules/@ykdz/template-builtin-source/templates/vue-hono-app/web/scripts/run-playwright.ts +79 -1
  32. package/node_modules/@ykdz/template-builtin-source/templates/vue-hono-app/web/src/App.vue +4 -5
  33. package/node_modules/@ykdz/template-builtin-source/templates/vue-hono-app/web/src/api.ts +9 -3
  34. package/node_modules/@ykdz/template-builtin-source/templates/vue-hono-app/web/test/e2e/app.spec.ts +1 -1
  35. package/node_modules/@ykdz/template-builtin-source/templates/vue-hono-app/web/turbo.json +1 -0
  36. package/node_modules/@ykdz/template-core/dist/Cargo.lock +16 -0
  37. package/node_modules/@ykdz/template-core/dist/Cargo.toml +12 -0
  38. package/node_modules/@ykdz/template-core/dist/dependency-catalog.d.ts +8 -0
  39. package/node_modules/@ykdz/template-core/dist/dependency-catalog.js +63 -2
  40. package/node_modules/@ykdz/template-core/dist/generated-scenarios.d.ts +1 -1
  41. package/node_modules/@ykdz/template-core/dist/generated-scenarios.js +104 -26
  42. package/node_modules/@ykdz/template-core/dist/next-step-instructions.d.ts +8 -0
  43. package/node_modules/@ykdz/template-core/dist/next-step-instructions.js +65 -0
  44. package/node_modules/@ykdz/template-core/dist/package-addition.js +5 -9
  45. package/node_modules/@ykdz/template-core/dist/package-linking.d.ts +24 -0
  46. package/node_modules/@ykdz/template-core/dist/package-linking.js +35 -0
  47. package/node_modules/@ykdz/template-core/dist/preset-source.d.ts +2 -2
  48. package/node_modules/@ykdz/template-core/dist/projection-capabilities.js +225 -139
  49. package/node_modules/@ykdz/template-core/dist/template-boundary-check.js +46 -10
  50. package/node_modules/@ykdz/template-core/package.json +5 -1
  51. package/node_modules/@ykdz/template-shared/dist/index.d.ts +3 -152
  52. package/node_modules/@ykdz/template-shared/dist/index.js +49 -305
  53. package/node_modules/@ykdz/template-shared/package.json +4 -0
  54. package/package.json +2 -2
  55. package/node_modules/@ykdz/template-builtin-source/dist/templates/hono-api/projection.d.ts +0 -6
  56. package/node_modules/@ykdz/template-builtin-source/dist/templates/hono-api/projection.js +0 -213
  57. package/node_modules/@ykdz/template-builtin-source/templates/hono-api/.github/dependabot.yml +0 -23
  58. package/node_modules/@ykdz/template-builtin-source/templates/hono-api/.github/workflows/check.yml +0 -19
  59. package/node_modules/@ykdz/template-builtin-source/templates/hono-api/src/app.ts +0 -5
  60. package/node_modules/@ykdz/template-builtin-source/templates/hono-api/src/server.ts +0 -15
  61. package/node_modules/@ykdz/template-builtin-source/templates/hono-api/test/app.test.ts +0 -10
  62. package/node_modules/@ykdz/template-builtin-source/templates/hono-api/vitest.config.ts +0 -15
  63. package/node_modules/@ykdz/template-builtin-source/templates/vike-app/playwright.config.ts +0 -23
  64. package/node_modules/@ykdz/template-builtin-source/templates/vue-app/playwright.package-addition.config.ts +0 -22
  65. /package/node_modules/@ykdz/template-builtin-source/templates/vike-app/{database → db/src}/schema.ts +0 -0
  66. /package/node_modules/@ykdz/template-builtin-source/templates/vike-app/{+server.ts → web/+server.ts} +0 -0
  67. /package/node_modules/@ykdz/template-builtin-source/templates/vike-app/{.env.example → web/.env.example} +0 -0
  68. /package/node_modules/@ykdz/template-builtin-source/templates/vike-app/{assets → web/assets}/logo.svg +0 -0
  69. /package/node_modules/@ykdz/template-builtin-source/templates/vike-app/{components → web/components}/CounterButton.vue +0 -0
  70. /package/node_modules/@ykdz/template-builtin-source/templates/vike-app/{components → web/components}/PageShell.vue +0 -0
  71. /package/node_modules/@ykdz/template-builtin-source/templates/vike-app/{pages → web/pages}/+Head.vue +0 -0
  72. /package/node_modules/@ykdz/template-builtin-source/templates/vike-app/{pages → web/pages}/+Layout.vue +0 -0
  73. /package/node_modules/@ykdz/template-builtin-source/templates/vike-app/{pages → web/pages}/+config.ts +0 -0
  74. /package/node_modules/@ykdz/template-builtin-source/templates/vike-app/{pages → web/pages}/tailwind.css +0 -0
  75. /package/node_modules/@ykdz/template-builtin-source/templates/vike-app/{server → web/server}/api.ts +0 -0
  76. /package/node_modules/@ykdz/template-builtin-source/templates/vike-app/{types → web/types}/env.d.ts +0 -0
  77. /package/node_modules/@ykdz/template-builtin-source/templates/vike-app/{vitest.config.ts → web/vitest.config.ts} +0 -0
@@ -361,25 +361,61 @@ function hasExactKeys(value, expectedKeys) {
361
361
  }
362
362
  function isStructuralTurboValue(value) {
363
363
  if (!isRecord(value) ||
364
- !hasExactKeys(value, ["tasks"]) ||
364
+ !(hasExactKeys(value, ["tasks"]) ||
365
+ hasExactKeys(value, ["tasks", "boundaries"])) ||
365
366
  !isRecord(value.tasks)) {
366
367
  return false;
367
368
  }
368
- return Object.values(value.tasks).every((task) => {
369
- if (!isRecord(task)) {
369
+ if (!Object.values(value.tasks).every(isStructuralTurboTaskValue)) {
370
+ return false;
371
+ }
372
+ return (value.boundaries === undefined ||
373
+ isStructuralTurboBoundariesValue(value.boundaries));
374
+ }
375
+ function isStructuralTurboTaskValue(task) {
376
+ if (!isRecord(task)) {
377
+ return false;
378
+ }
379
+ return Object.entries(task).every(([key, entryValue]) => {
380
+ if (key === "dependsOn" || key === "outputs") {
381
+ return isStringArray(entryValue);
382
+ }
383
+ if (key === "cache" || key === "persistent") {
384
+ return typeof entryValue === "boolean";
385
+ }
386
+ return false;
387
+ });
388
+ }
389
+ function isStructuralTurboBoundariesValue(value) {
390
+ if (!isRecord(value) || !hasExactKeys(value, ["tags"])) {
391
+ return false;
392
+ }
393
+ if (!isRecord(value.tags)) {
394
+ return false;
395
+ }
396
+ return Object.values(value.tags).every((tagRule) => {
397
+ if (!isRecord(tagRule)) {
370
398
  return false;
371
399
  }
372
- return Object.entries(task).every(([key, entryValue]) => {
373
- if (key === "dependsOn" || key === "outputs") {
374
- return isStringArray(entryValue);
375
- }
376
- if (key === "cache" || key === "persistent") {
377
- return typeof entryValue === "boolean";
400
+ return Object.entries(tagRule).every(([key, entryValue]) => {
401
+ if (key !== "dependencies" && key !== "dependents") {
402
+ return false;
378
403
  }
379
- return false;
404
+ return isStructuralTurboBoundaryDirectionValue(entryValue);
380
405
  });
381
406
  });
382
407
  }
408
+ function isStructuralTurboBoundaryDirectionValue(value) {
409
+ if (!isRecord(value)) {
410
+ return false;
411
+ }
412
+ return Object.entries(value).every(([key, entryValue]) => {
413
+ if (key !== "allow" && key !== "deny") {
414
+ return false;
415
+ }
416
+ return isStringArray(entryValue);
417
+ });
418
+ }
383
419
  const rootTsconfigConfigCompilerOptions = {
384
420
  module: "nodenext",
385
421
  moduleResolution: "nodenext",
@@ -8,12 +8,16 @@
8
8
  "type": "module",
9
9
  "exports": {
10
10
  "./*": {
11
+ "source": {
12
+ "types": "./src/*.ts",
13
+ "default": "./src/*.ts"
14
+ },
11
15
  "types": "./dist/*.d.ts",
12
16
  "default": "./dist/*.js"
13
17
  }
14
18
  },
15
19
  "scripts": {
16
- "build": "rm -rf dist && tsc -p tsconfig.build.json && cp ../../pnpm-workspace.yaml dist/pnpm-workspace.yaml",
20
+ "build": "rm -rf dist && tsc -p tsconfig.build.json && cp ../../pnpm-workspace.yaml dist/pnpm-workspace.yaml && cp ../../Cargo.toml dist/Cargo.toml && cp ../../Cargo.lock dist/Cargo.lock",
17
21
  "format:check": "oxfmt --list-different --config ../../oxfmt.config.ts .",
18
22
  "format:write": "oxfmt --write --config ../../oxfmt.config.ts .",
19
23
  "lint": "oxlint --quiet --format=unix --config ../../oxlint.config.ts --ignore-pattern dist .",
@@ -90,13 +90,14 @@ export type WorkspaceNodePackagesCapabilityDeclaration = {
90
90
  readonly packages: readonly WorkspaceNodePackageDeclaration[];
91
91
  readonly packageLinks?: readonly {
92
92
  readonly consumerPackagePath: "apps/web";
93
- readonly providerPackagePath: "apps/api";
93
+ readonly providerPackagePath: "apps/api" | "packages/db";
94
94
  }[];
95
95
  };
96
96
  export type RustBinaryWorkspaceCapabilityDeclaration = {
97
97
  readonly kind: "rust-binary-workspace";
98
98
  readonly workspacePackageGlob: "packages/*";
99
99
  readonly sourceFiles: readonly string[];
100
+ readonly cargoDependencies?: readonly string[];
100
101
  readonly devcontainerResourceId: string;
101
102
  readonly editorCustomizationResourceId: string;
102
103
  };
@@ -127,36 +128,10 @@ export type PresetSourceManifestSharedResource = {
127
128
  id: string;
128
129
  path: string;
129
130
  };
130
- export type PresetSourceFixtureMatrixPresetSupport = {
131
- preset: string;
132
- };
133
- export type PresetSourceFixtureMatrixPackageAdditionSupport = {
134
- preset: string;
135
- packageLeafName: string;
136
- };
137
- export type PresetSourceFixtureMatrixCombination = {
138
- basePreset: string;
139
- addedPreset: string;
140
- linkFrom?: string[];
141
- };
142
- export type PresetSourceFixtureMatrixSemanticSkip = {
143
- basePreset: string;
144
- addedPreset: string;
145
- reason: string;
146
- };
147
- export type PresetSourceFixtureMatrixContract = {
148
- initSupport: PresetSourceFixtureMatrixPresetSupport[];
149
- packageAdditionSupport: PresetSourceFixtureMatrixPackageAdditionSupport[];
150
- supportedCombinations: PresetSourceFixtureMatrixCombination[];
151
- semanticSkips: PresetSourceFixtureMatrixSemanticSkip[];
152
- checkRequirements: string[];
153
- environmentPreparation: string[];
154
- };
155
131
  export type PresetSourceManifest = {
156
132
  schemaVersion: 1;
157
133
  name: string;
158
134
  sharedResources: PresetSourceManifestSharedResource[];
159
- fixtureMatrix?: PresetSourceFixtureMatrixContract;
160
135
  presets: PresetSourceManifestPreset[];
161
136
  };
162
137
  export declare const packageManagerValues: readonly ["pnpm"];
@@ -169,8 +144,6 @@ export declare const presetGenerationJsonSchemaEnum: readonly ["supported", "fut
169
144
  export declare const featureNameJsonSchemaEnum: readonly ["pnpm-catalog", "oxc-format-lint", "strict-typescript", "root-check", "fix-command", "devcontainer", "github-actions", "dependabot", "rustfmt-clippy", "cargo-test", "native-binary-release"];
170
145
  export declare const projectionCapabilityKinds: ("oxc-format-lint" | "workspace-library-package" | "workspace-node-packages" | "rust-binary-workspace" | "strict-typescript-root" | "node-pnpm-devcontainer" | "github-maintenance")[];
171
146
  export declare const packageLeafNamePattern = "^[a-z0-9][a-z0-9-]*$";
172
- export declare const requiredFixtureMatrixCheckRequirements: readonly ["machine-verifiable-next-steps", "root-check-ci"];
173
- export declare const requiredFixtureMatrixEnvironmentPreparation: readonly ["playwright-browser-assets"];
174
147
  export declare const presetSourceManifestJsonSchema: {
175
148
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
176
149
  readonly $id: "https://ykdz.dev/schemas/template/preset-source-manifest.schema.json";
@@ -204,107 +177,6 @@ export declare const presetSourceManifestJsonSchema: {
204
177
  };
205
178
  };
206
179
  };
207
- readonly fixtureMatrix: {
208
- readonly type: "object";
209
- readonly additionalProperties: false;
210
- readonly required: readonly ["initSupport", "packageAdditionSupport", "supportedCombinations", "semanticSkips", "checkRequirements", "environmentPreparation"];
211
- readonly properties: {
212
- readonly initSupport: {
213
- readonly type: "array";
214
- readonly items: {
215
- readonly type: "object";
216
- readonly additionalProperties: false;
217
- readonly required: readonly ["preset"];
218
- readonly properties: {
219
- readonly preset: {
220
- readonly type: "string";
221
- readonly minLength: 1;
222
- };
223
- };
224
- };
225
- };
226
- readonly packageAdditionSupport: {
227
- readonly type: "array";
228
- readonly items: {
229
- readonly type: "object";
230
- readonly additionalProperties: false;
231
- readonly required: readonly ["preset", "packageLeafName"];
232
- readonly properties: {
233
- readonly preset: {
234
- readonly type: "string";
235
- readonly minLength: 1;
236
- };
237
- readonly packageLeafName: {
238
- readonly type: "string";
239
- readonly minLength: 1;
240
- readonly pattern: "^[a-z0-9][a-z0-9-]*$";
241
- };
242
- };
243
- };
244
- };
245
- readonly supportedCombinations: {
246
- readonly type: "array";
247
- readonly items: {
248
- readonly type: "object";
249
- readonly additionalProperties: false;
250
- readonly required: readonly ["basePreset", "addedPreset"];
251
- readonly properties: {
252
- readonly basePreset: {
253
- readonly type: "string";
254
- readonly minLength: 1;
255
- };
256
- readonly addedPreset: {
257
- readonly type: "string";
258
- readonly minLength: 1;
259
- };
260
- readonly linkFrom: {
261
- readonly type: "array";
262
- readonly items: {
263
- readonly type: "string";
264
- readonly minLength: 1;
265
- };
266
- };
267
- };
268
- };
269
- };
270
- readonly semanticSkips: {
271
- readonly type: "array";
272
- readonly items: {
273
- readonly type: "object";
274
- readonly additionalProperties: false;
275
- readonly required: readonly ["basePreset", "addedPreset", "reason"];
276
- readonly properties: {
277
- readonly basePreset: {
278
- readonly type: "string";
279
- readonly minLength: 1;
280
- };
281
- readonly addedPreset: {
282
- readonly type: "string";
283
- readonly minLength: 1;
284
- };
285
- readonly reason: {
286
- readonly type: "string";
287
- readonly minLength: 1;
288
- };
289
- };
290
- };
291
- };
292
- readonly checkRequirements: {
293
- readonly type: "array";
294
- readonly items: {
295
- readonly enum: readonly ["machine-verifiable-next-steps", "root-check-ci"];
296
- };
297
- readonly uniqueItems: true;
298
- };
299
- readonly environmentPreparation: {
300
- readonly type: "array";
301
- readonly items: {
302
- readonly enum: readonly ["playwright-browser-assets"];
303
- };
304
- readonly uniqueItems: true;
305
- };
306
- };
307
- };
308
180
  readonly presets: {
309
181
  readonly type: "array";
310
182
  readonly minItems: 1;
@@ -442,7 +314,7 @@ export declare const presetSourceManifestJsonSchema: {
442
314
  readonly const: "apps/web";
443
315
  };
444
316
  readonly providerPackagePath: {
445
- readonly const: "apps/api";
317
+ readonly enum: readonly ["apps/api", "packages/db"];
446
318
  };
447
319
  };
448
320
  };
@@ -573,27 +445,6 @@ export declare const presetSourceManifestSchema: v.StrictObjectSchema<{
573
445
  readonly id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
574
446
  readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
575
447
  }, undefined>, undefined>, readonly []>;
576
- readonly fixtureMatrix: v.OptionalSchema<v.StrictObjectSchema<{
577
- readonly initSupport: v.ArraySchema<v.StrictObjectSchema<{
578
- readonly preset: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
579
- }, undefined>, undefined>;
580
- readonly packageAdditionSupport: v.ArraySchema<v.StrictObjectSchema<{
581
- readonly preset: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
582
- readonly packageLeafName: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "Fixture Matrix Package Addition packageLeafName must be a lowercase package leaf name using letters, numbers, and hyphens">]>;
583
- }, undefined>, undefined>;
584
- readonly supportedCombinations: v.ArraySchema<v.StrictObjectSchema<{
585
- readonly basePreset: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
586
- readonly addedPreset: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
587
- readonly linkFrom: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>, readonly []>;
588
- }, undefined>, undefined>;
589
- readonly semanticSkips: v.ArraySchema<v.StrictObjectSchema<{
590
- readonly basePreset: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
591
- readonly addedPreset: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
592
- readonly reason: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
593
- }, undefined>, undefined>;
594
- readonly checkRequirements: v.ArraySchema<v.PicklistSchema<readonly ["machine-verifiable-next-steps", "root-check-ci"], undefined>, undefined>;
595
- readonly environmentPreparation: v.ArraySchema<v.PicklistSchema<readonly ["playwright-browser-assets"], undefined>, undefined>;
596
- }, undefined>, undefined>;
597
448
  readonly presets: v.SchemaWithPipe<readonly [v.ArraySchema<v.StrictObjectSchema<{
598
449
  readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
599
450
  readonly title: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;