@ykdz/template 0.0.9 → 0.0.10

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.
@@ -83,7 +83,7 @@ export function projectVueAppPackageScripts() {
83
83
  "lint:fix": "oxlint --config ../../oxlint.config.ts . --fix",
84
84
  preview: "vite preview",
85
85
  test: "vitest run",
86
- "test:e2e": "pnpm run build && playwright test",
86
+ "test:e2e": "pnpm run build && node --experimental-strip-types scripts/run-playwright.ts",
87
87
  typecheck: "vue-tsc --build --noEmit",
88
88
  };
89
89
  }
@@ -165,7 +165,6 @@ function packageAdditionOperations(packagePath, packageNameValue, nodeVersion) {
165
165
  },
166
166
  scripts: projectVueAppPackageScripts(),
167
167
  dependencies: {
168
- "@vueuse/core": "catalog:",
169
168
  pinia: "catalog:",
170
169
  vue: "catalog:",
171
170
  },
@@ -246,6 +245,7 @@ function packageAdditionOperations(packagePath, packageNameValue, nodeVersion) {
246
245
  {
247
246
  kind: "writeJson",
248
247
  to: `${packagePath}/tsconfig.node.json`,
248
+ multilineArrays: ["include"],
249
249
  value: {
250
250
  compilerOptions: {
251
251
  composite: true,
@@ -268,7 +268,12 @@ function packageAdditionOperations(packagePath, packageNameValue, nodeVersion) {
268
268
  types: ["node"],
269
269
  verbatimModuleSyntax: true,
270
270
  },
271
- include: ["playwright.config.ts", "vite.config.ts", "vitest.config.ts"],
271
+ include: [
272
+ "playwright.config.ts",
273
+ "scripts/**/*.ts",
274
+ "vite.config.ts",
275
+ "vitest.config.ts",
276
+ ],
272
277
  },
273
278
  },
274
279
  { kind: "copyFile", from: "env.d.ts", to: `${packagePath}/env.d.ts` },
@@ -77,7 +77,6 @@ function planVueHonoRootChecks() {
77
77
  { kind: "turbo-package-typecheck", owner: workspacePackageBoundary },
78
78
  { kind: "turbo-package-build", owner: workspacePackageBoundary },
79
79
  { kind: "turbo-package-test", owner: workspacePackageBoundary },
80
- { kind: "turbo-package-e2e-test", owner: workspacePackageBoundary },
81
80
  { kind: "turbo-package-check", owner: workspacePackageBoundary },
82
81
  ],
83
82
  environmentNeeds: [
@@ -177,7 +176,7 @@ export function projectVueHonoWebPackageScripts() {
177
176
  "lint:fix": "oxlint --config ../../oxlint.config.ts . --fix",
178
177
  preview: "vite preview",
179
178
  test: "vitest run",
180
- "test:e2e": "pnpm run build && playwright test",
179
+ "test:e2e": "pnpm run build && node --experimental-strip-types scripts/run-playwright.ts",
181
180
  typecheck: "vue-tsc --build",
182
181
  };
183
182
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ykdz/template-builtin-source",
3
- "version": "0.0.9",
3
+ "version": "0.0.0",
4
4
  "private": true,
5
5
  "files": [
6
6
  "dist",
@@ -271,7 +271,6 @@
271
271
  "@types/web-bluetooth",
272
272
  "@vitejs/plugin-vue",
273
273
  "@vue/tsconfig",
274
- "@vueuse/core",
275
274
  "oxfmt",
276
275
  "oxlint",
277
276
  "oxlint-tsgolint",
@@ -297,6 +296,7 @@
297
296
  "env.d.ts",
298
297
  "index.html",
299
298
  "playwright.config.ts",
299
+ "scripts/run-playwright.ts",
300
300
  "vite.config.ts",
301
301
  "vitest.config.ts",
302
302
  "src/App.vue",
@@ -322,6 +322,7 @@
322
322
  "vue-app/index.html",
323
323
  "vue-app/playwright.package-addition.config.ts",
324
324
  "vue-app/playwright.config.ts",
325
+ "vue-app/scripts/run-playwright.ts",
325
326
  "vue-app/vite.config.ts",
326
327
  "vue-app/vitest.config.ts"
327
328
  ],
@@ -360,7 +361,6 @@
360
361
  "@types/web-bluetooth",
361
362
  "@vitejs/plugin-vue",
362
363
  "@vue/tsconfig",
363
- "@vueuse/core",
364
364
  "hono",
365
365
  "oxfmt",
366
366
  "oxlint",
@@ -389,6 +389,7 @@
389
389
  "web/env.d.ts",
390
390
  "web/index.html",
391
391
  "web/playwright.config.ts",
392
+ "web/scripts/run-playwright.ts",
392
393
  "web/vite.config.ts",
393
394
  "web/vitest.config.ts",
394
395
  "web/src/api.ts",
@@ -438,6 +439,7 @@
438
439
  "vue-hono-app/web/env.d.ts",
439
440
  "vue-hono-app/web/index.html",
440
441
  "vue-hono-app/web/playwright.config.ts",
442
+ "vue-hono-app/web/scripts/run-playwright.ts",
441
443
  "vue-hono-app/web/vite.config.ts",
442
444
  "vue-hono-app/web/vitest.config.ts"
443
445
  ],
@@ -0,0 +1,25 @@
1
+ import { spawn } from "node:child_process";
2
+
3
+ const env: NodeJS.ProcessEnv = { ...process.env };
4
+ delete env.NO_COLOR;
5
+
6
+ const command = process.platform === "win32" ? "playwright.cmd" : "playwright";
7
+ const child = spawn(command, ["test", ...process.argv.slice(2)], {
8
+ env,
9
+ stdio: "inherit",
10
+ });
11
+
12
+ child.once("error", (error: Error) => {
13
+ console.error(error);
14
+ process.exitCode = 1;
15
+ });
16
+
17
+ child.once("exit", (code: number | null, signal: NodeJS.Signals | null) => {
18
+ if (signal) {
19
+ console.error(`Playwright exited with signal ${signal}`);
20
+ process.exitCode = 1;
21
+ return;
22
+ }
23
+
24
+ process.exitCode = code ?? 1;
25
+ });
@@ -1,14 +1,28 @@
1
1
  <script setup lang="ts">
2
- import { usePreferredDark } from "@vueuse/core";
3
2
  import { storeToRefs } from "pinia";
4
- import { computed } from "vue";
3
+ import { onMounted, onUnmounted, ref } from "vue";
5
4
 
6
5
  import { useCounterStore } from "#/stores/counter";
7
6
 
8
7
  const counter = useCounterStore();
9
8
  const { count } = storeToRefs(counter);
10
- const prefersDark = usePreferredDark();
11
- const themeLabel = computed(() => (prefersDark.value ? "dark" : "light"));
9
+ const themeLabel = ref<"dark" | "light">("light");
10
+
11
+ let preferredThemeQuery: MediaQueryList | undefined;
12
+
13
+ function updateThemeLabel(event: MediaQueryList | MediaQueryListEvent): void {
14
+ themeLabel.value = event.matches ? "dark" : "light";
15
+ }
16
+
17
+ onMounted(() => {
18
+ preferredThemeQuery = window.matchMedia("(prefers-color-scheme: dark)");
19
+ updateThemeLabel(preferredThemeQuery);
20
+ preferredThemeQuery.addEventListener("change", updateThemeLabel);
21
+ });
22
+
23
+ onUnmounted(() => {
24
+ preferredThemeQuery?.removeEventListener("change", updateThemeLabel);
25
+ });
12
26
  </script>
13
27
 
14
28
  <template>
@@ -0,0 +1,25 @@
1
+ import { spawn } from "node:child_process";
2
+
3
+ const env: NodeJS.ProcessEnv = { ...process.env };
4
+ delete env.NO_COLOR;
5
+
6
+ const command = process.platform === "win32" ? "playwright.cmd" : "playwright";
7
+ const child = spawn(command, ["test", ...process.argv.slice(2)], {
8
+ env,
9
+ stdio: "inherit",
10
+ });
11
+
12
+ child.once("error", (error: Error) => {
13
+ console.error(error);
14
+ process.exitCode = 1;
15
+ });
16
+
17
+ child.once("exit", (code: number | null, signal: NodeJS.Signals | null) => {
18
+ if (signal) {
19
+ console.error(`Playwright exited with signal ${signal}`);
20
+ process.exitCode = 1;
21
+ return;
22
+ }
23
+
24
+ process.exitCode = code ?? 1;
25
+ });
@@ -1,17 +1,31 @@
1
1
  <script setup lang="ts">
2
- import { usePreferredDark } from "@vueuse/core";
3
2
  import { storeToRefs } from "pinia";
4
- import { computed, onMounted, ref } from "vue";
3
+ import { onMounted, onUnmounted, ref } from "vue";
5
4
 
6
5
  import { api } from "#/api";
7
6
  import { useCounterStore } from "#/stores/counter";
8
7
 
9
8
  const counter = useCounterStore();
10
9
  const { count } = storeToRefs(counter);
11
- const prefersDark = usePreferredDark();
12
- const themeLabel = computed(() => (prefersDark.value ? "dark" : "light"));
10
+ const themeLabel = ref<"dark" | "light">("light");
13
11
  const apiStatus = ref("checking");
14
12
 
13
+ let preferredThemeQuery: MediaQueryList | undefined;
14
+
15
+ function updateThemeLabel(event: MediaQueryList | MediaQueryListEvent): void {
16
+ themeLabel.value = event.matches ? "dark" : "light";
17
+ }
18
+
19
+ onMounted(() => {
20
+ preferredThemeQuery = window.matchMedia("(prefers-color-scheme: dark)");
21
+ updateThemeLabel(preferredThemeQuery);
22
+ preferredThemeQuery.addEventListener("change", updateThemeLabel);
23
+ });
24
+
25
+ onUnmounted(() => {
26
+ preferredThemeQuery?.removeEventListener("change", updateThemeLabel);
27
+ });
28
+
15
29
  onMounted(async () => {
16
30
  const response = await api.api.health.$get();
17
31
  const body = await response.json();
@@ -48,6 +48,7 @@ export type GeneratedScenarioRunnerOptions = {
48
48
  export type ExclusiveLock = {
49
49
  readonly run: <T>(callback: () => Promise<T>) => Promise<T>;
50
50
  };
51
+ export declare function generatedScenarioChildProcessEnv(env?: Record<string, string>): NodeJS.ProcessEnv;
51
52
  export declare function createExclusiveLock(): ExclusiveLock;
52
53
  export declare function generatedScenarioId(scenario: Pick<GeneratedScenario, "basePreset" | "addedPreset" | "linkFrom">): string;
53
54
  export declare function generatedScenarioLabel(scenario: Pick<GeneratedScenario, "basePreset" | "addedPreset" | "linkFrom">): string;
@@ -17,6 +17,13 @@ const storedBlueprintSchema = v.object({
17
17
  path: v.string(),
18
18
  }))),
19
19
  });
20
+ export function generatedScenarioChildProcessEnv(env = {}) {
21
+ const childEnv = { ...process.env, ...env };
22
+ if (childEnv.NO_COLOR !== undefined && childEnv.FORCE_COLOR !== undefined) {
23
+ delete childEnv.FORCE_COLOR;
24
+ }
25
+ return childEnv;
26
+ }
20
27
  function cliSourceExecutionEnv(options, env = {}) {
21
28
  return {
22
29
  ...env,
@@ -116,7 +123,8 @@ export async function defaultGeneratedScenarioCommandRunner(command, args, cwd,
116
123
  console.log(`${prefix}$ ${[command, ...args].join(" ")}`);
117
124
  await execa(command, [...args], {
118
125
  cwd,
119
- ...(options.env === undefined ? {} : { env: options.env }),
126
+ env: generatedScenarioChildProcessEnv(options.env),
127
+ extendEnv: false,
120
128
  stdio: "inherit",
121
129
  });
122
130
  }
@@ -225,7 +233,7 @@ function projectionPlanForPreset(presetName, projectDir, manifest, options, pack
225
233
  blueprint,
226
234
  toolchain: {
227
235
  nodeLtsMajor: { kind: "NodeLtsMajor", value: "24" },
228
- packageManagerPin: { kind: "PackageManagerPin", value: "pnpm@10.0.0" },
236
+ packageManagerPin: { kind: "PackageManagerPin", value: "pnpm@10.34.4" },
229
237
  source: "bundled-fallback",
230
238
  diagnostics: [],
231
239
  },
@@ -433,6 +433,7 @@ function rootPackageJsonWithPackageTaskFilters(input, blueprint, packageManifest
433
433
  assertRootPackageJson(input);
434
434
  const workspacePackageGlobs = workspacePackageGlobsFromBlueprint(blueprint);
435
435
  const taskNames = turboTaskNamesForPackageManifests(packageManifests);
436
+ const rootCheckTaskNames = taskNames.filter((taskName) => taskName !== "test:e2e");
436
437
  const checkScript = input.scripts.check;
437
438
  const fixScript = input.scripts.fix;
438
439
  if (checkScript === undefined || fixScript === undefined) {
@@ -444,7 +445,7 @@ function rootPackageJsonWithPackageTaskFilters(input, blueprint, packageManifest
444
445
  ...input.scripts,
445
446
  check: rootScriptWithTurboPackageTasks({
446
447
  script: checkScript,
447
- taskNames,
448
+ taskNames: rootCheckTaskNames,
448
449
  workspacePackageGlobs,
449
450
  }),
450
451
  fix: rootScriptWithTurboPackageTask(fixScript, "fix", workspacePackageGlobs),
@@ -1,6 +1,8 @@
1
1
  packages:
2
2
  - packages/*
3
3
 
4
+ nodeLinker: hoisted
5
+
4
6
  catalog:
5
7
  "@hono/node-server": ^2.0.6
6
8
  "@playwright/test": ^1.61.1
@@ -9,7 +11,6 @@ catalog:
9
11
  "@types/web-bluetooth": ^0.0.21
10
12
  "@vitejs/plugin-vue": ^6.0.7
11
13
  "@vue/tsconfig": ^0.9.1
12
- "@vueuse/core": ^14.3.0
13
14
  execa: ^9.6.1
14
15
  hono: ^4.12.27
15
16
  oxfmt: ^0.57.0
@@ -19,7 +20,7 @@ catalog:
19
20
  tailwindcss: ^4.3.2
20
21
  tsc-alias: ^1.8.17
21
22
  tsx: ^4.22.4
22
- turbo: ^2.10.2
23
+ turbo: 2.10.2
23
24
  typescript: ^6.0.3
24
25
  valibot: ^1.4.2
25
26
  vite: ^8.1.2
@@ -31,8 +32,5 @@ catalog:
31
32
  allowBuilds:
32
33
  esbuild: true
33
34
 
34
- minimumReleaseAgeExclude:
35
- - valibot@1.4.2
36
-
37
35
  onlyBuiltDependencies:
38
36
  - esbuild
@@ -172,12 +172,6 @@ const capabilityInterpreters = {
172
172
  kind: "turbo-package-test",
173
173
  owner: workspaceBoundary,
174
174
  });
175
- if (hasVuePackage(state.nodeWorkspace)) {
176
- state.rootCheckComponents.push({
177
- kind: "turbo-package-e2e-test",
178
- owner: workspaceBoundary,
179
- });
180
- }
181
175
  }
182
176
  state.rootCheckComponents.push({
183
177
  kind: "turbo-package-check",
@@ -1032,7 +1026,7 @@ function generationContextForPackageAddition(options) {
1032
1026
  },
1033
1027
  toolchain: {
1034
1028
  nodeLtsMajor: { kind: "NodeLtsMajor", value: options.nodeVersion },
1035
- packageManagerPin: { kind: "PackageManagerPin", value: "pnpm@10.0.0" },
1029
+ packageManagerPin: { kind: "PackageManagerPin", value: "pnpm@10.34.4" },
1036
1030
  source: "bundled-fallback",
1037
1031
  diagnostics: [],
1038
1032
  },
@@ -1432,7 +1426,6 @@ function vuePackageJson(context, packageName, scripts, packageLinkDependencies =
1432
1426
  scripts,
1433
1427
  dependencies: {
1434
1428
  ...packageLinkDependencies,
1435
- "@vueuse/core": "catalog:",
1436
1429
  ...(Object.keys(packageLinkDependencies).length === 0
1437
1430
  ? {}
1438
1431
  : { hono: "catalog:" }),
@@ -1931,7 +1924,7 @@ function nodePackageScripts(nodePackage, workspace) {
1931
1924
  ...oxcScripts,
1932
1925
  preview: "vite preview",
1933
1926
  test: "vitest run",
1934
- "test:e2e": "pnpm run build && playwright test",
1927
+ "test:e2e": "pnpm run build && node --experimental-strip-types scripts/run-playwright.ts",
1935
1928
  typecheck: workspace.packages.length > 1
1936
1929
  ? "vue-tsc --build"
1937
1930
  : "vue-tsc --build --noEmit",
@@ -2015,6 +2008,7 @@ function nodePackageTsconfigOperations(nodePackage, workspace) {
2015
2008
  {
2016
2009
  kind: "writeJson",
2017
2010
  to: `${nodePackage.path}/tsconfig.node.json`,
2011
+ multilineArrays: ["include"],
2018
2012
  value: {
2019
2013
  compilerOptions: strictTypeScriptCompilerOptions({
2020
2014
  composite: true,
@@ -2027,7 +2021,12 @@ function nodePackageTsconfigOperations(nodePackage, workspace) {
2027
2021
  tsBuildInfoFile: "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
2028
2022
  types: ["node"],
2029
2023
  }),
2030
- include: ["playwright.config.ts", "vite.config.ts", "vitest.config.ts"],
2024
+ include: [
2025
+ "playwright.config.ts",
2026
+ "scripts/**/*.ts",
2027
+ "vite.config.ts",
2028
+ "vitest.config.ts",
2029
+ ],
2031
2030
  },
2032
2031
  },
2033
2032
  ];
@@ -2,7 +2,7 @@ export const nodeReleaseIndexUrl = "https://nodejs.org/dist/index.json";
2
2
  export const pnpmRegistryUrl = "https://registry.npmjs.org/pnpm";
3
3
  const bundledFallbackToolchain = {
4
4
  nodeLtsMajor: nodeLtsMajor("24"),
5
- packageManagerPin: packageManagerPin("10.0.0"),
5
+ packageManagerPin: packageManagerPin("10.34.4"),
6
6
  };
7
7
  export async function resolveToolchainVersions(options = {}) {
8
8
  const source = options.source ?? "online";
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ykdz/template-core",
3
- "version": "0.0.9",
3
+ "version": "0.0.0",
4
4
  "private": true,
5
5
  "files": [
6
6
  "dist"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ykdz/template",
3
- "version": "0.0.9",
3
+ "version": "0.0.10",
4
4
  "private": false,
5
5
  "description": "Project template generator for YKDZ starter projects.",
6
6
  "keywords": [
@@ -33,8 +33,8 @@
33
33
  "dependencies": {
34
34
  "typescript": "^6.0.3",
35
35
  "valibot": "^1.4.2",
36
- "@ykdz/template-builtin-source": "0.0.9",
37
- "@ykdz/template-core": "0.0.9"
36
+ "@ykdz/template-core": "0.0.0",
37
+ "@ykdz/template-builtin-source": "0.0.0"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@types/node": "^24.0.0",