@decocms/blocks-cli 7.11.1 → 7.12.0

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.
@@ -0,0 +1,43 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import type { MigrationContext } from "../types";
3
+ import { generatePackageJson } from "./package-json";
4
+
5
+ const ctx = {
6
+ siteName: "acme-store",
7
+ platform: "vtex",
8
+ importMap: {},
9
+ discoveredNpmDeps: {},
10
+ } as unknown as MigrationContext;
11
+
12
+ describe("generatePackageJson — generate scripts", () => {
13
+ // generatePackageJson does one `npm view` lookup for the framework version
14
+ // (falls back silently when offline), hence the generous timeout.
15
+ it("emits ONE unified generate command instead of the 5-script chain", () => {
16
+ const pkg = JSON.parse(generatePackageJson(ctx));
17
+
18
+ expect(pkg.scripts.generate).toBe(
19
+ "tsx node_modules/@decocms/blocks-cli/scripts/generate.ts --site acme-store " +
20
+ "--exclude vtex/loaders,vtex/actions,loaders/vtex-auth-loader," +
21
+ "loaders/reviews/productReviews,loaders/product/buyTogether," +
22
+ "loaders/search/productListPageCollection,loaders/search/intelligenseSearch," +
23
+ "loaders/Layouts/ProductCard",
24
+ );
25
+
26
+ // The old hand-chained per-generator scripts must be gone — the
27
+ // orchestrator owns selection/ordering now. (The individual scripts are
28
+ // still shipped and runnable by path; sites just don't scaffold them.)
29
+ for (const legacy of [
30
+ "generate:blocks",
31
+ "generate:schema",
32
+ "generate:invoke",
33
+ "generate:sections",
34
+ "generate:loaders",
35
+ ]) {
36
+ expect(pkg.scripts[legacy], `${legacy} should not be scaffolded`).toBeUndefined();
37
+ }
38
+
39
+ // tsr is TanStack's generator, not ours — it stays a separate script.
40
+ expect(pkg.scripts["generate:routes"]).toBe("tsr generate");
41
+ expect(pkg.scripts.build).toBe("npm run generate && tsr generate && vite build");
42
+ }, 30_000);
43
+ });
@@ -124,17 +124,16 @@ export function generatePackageJson(ctx: MigrationContext): string {
124
124
  dev: "vite dev",
125
125
  "dev:clean":
126
126
  "rm -rf node_modules/.vite .wrangler/state .tanstack && vite dev",
127
- "generate:blocks":
128
- "tsx node_modules/@decocms/blocks-cli/scripts/generate-blocks.ts",
127
+ // ONE incremental orchestrator instead of the old 5-script chain
128
+ // (generate-blocks/sections/loaders/schema/invoke). It runs the same
129
+ // generators — concurrently, skipping the ones whose inputs didn't
130
+ // change — and the individual scripts stay available under
131
+ // node_modules/@decocms/blocks-cli/scripts/ for one-off runs. Sites
132
+ // chain their own extra tools (tsr, graphql-codegen, tailwind) around
133
+ // this command themselves.
134
+ generate: `tsx node_modules/@decocms/blocks-cli/scripts/generate.ts --site ${ctx.siteName} --exclude vtex/loaders,vtex/actions,loaders/vtex-auth-loader,loaders/reviews/productReviews,loaders/product/buyTogether,loaders/search/productListPageCollection,loaders/search/intelligenseSearch,loaders/Layouts/ProductCard`,
129
135
  "generate:routes": "tsr generate",
130
- "generate:schema": `tsx node_modules/@decocms/blocks-cli/scripts/generate-schema.ts --site ${ctx.siteName}`,
131
- "generate:invoke":
132
- "tsx node_modules/@decocms/blocks-cli/scripts/generate-invoke.ts",
133
- "generate:sections":
134
- "tsx node_modules/@decocms/blocks-cli/scripts/generate-sections.ts",
135
- "generate:loaders": `tsx node_modules/@decocms/blocks-cli/scripts/generate-loaders.ts --exclude vtex/loaders,vtex/actions,loaders/vtex-auth-loader,loaders/reviews/productReviews,loaders/product/buyTogether,loaders/search/productListPageCollection,loaders/search/intelligenseSearch,loaders/Layouts/ProductCard`,
136
- build:
137
- "npm run generate:blocks && npm run generate:sections && npm run generate:loaders && npm run generate:schema && npm run generate:invoke && tsr generate && vite build",
136
+ build: "npm run generate && tsr generate && vite build",
138
137
  preview: "vite preview",
139
138
  // Deploy is owned by Cloudflare Workers Builds (D6.3); the
140
139
  // repo<->worker connection is configured per-worker in the CF