@decocms/blocks-cli 7.0.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.
- package/package.json +44 -0
- package/scripts/analyze-traces.mjs +1117 -0
- package/scripts/audit-observability-config.test.ts +446 -0
- package/scripts/audit-observability-config.ts +511 -0
- package/scripts/deco-migrate-cli.ts +444 -0
- package/scripts/fast-deploy-kv.test.ts +131 -0
- package/scripts/generate-blocks.test.ts +94 -0
- package/scripts/generate-blocks.ts +274 -0
- package/scripts/generate-invoke.test.ts +195 -0
- package/scripts/generate-invoke.ts +469 -0
- package/scripts/generate-loaders.ts +217 -0
- package/scripts/generate-schema.ts +1287 -0
- package/scripts/generate-sections.ts +237 -0
- package/scripts/htmx-analyze.ts +226 -0
- package/scripts/lib/blocks-dedupe.test.ts +179 -0
- package/scripts/lib/blocks-dedupe.ts +142 -0
- package/scripts/lib/cf-kv-rest.ts +78 -0
- package/scripts/lib/jsonc.ts +122 -0
- package/scripts/lib/kv-snapshot.ts +51 -0
- package/scripts/lib/read-decofile.ts +70 -0
- package/scripts/lib/sync-helpers.ts +44 -0
- package/scripts/migrate/analyzers/htmx-analyze.test.ts +372 -0
- package/scripts/migrate/analyzers/htmx-analyze.ts +425 -0
- package/scripts/migrate/analyzers/island-classifier.ts +96 -0
- package/scripts/migrate/analyzers/loader-inventory.ts +63 -0
- package/scripts/migrate/analyzers/section-metadata.ts +147 -0
- package/scripts/migrate/analyzers/theme-extractor.ts +122 -0
- package/scripts/migrate/colors.ts +46 -0
- package/scripts/migrate/config.test.ts +202 -0
- package/scripts/migrate/config.ts +186 -0
- package/scripts/migrate/phase-analyze.test.ts +63 -0
- package/scripts/migrate/phase-analyze.ts +782 -0
- package/scripts/migrate/phase-cleanup-audit.test.ts +137 -0
- package/scripts/migrate/phase-cleanup-audit.ts +105 -0
- package/scripts/migrate/phase-cleanup.test.ts +141 -0
- package/scripts/migrate/phase-cleanup.ts +1588 -0
- package/scripts/migrate/phase-compile.test.ts +193 -0
- package/scripts/migrate/phase-compile.ts +177 -0
- package/scripts/migrate/phase-report.ts +243 -0
- package/scripts/migrate/phase-scaffold.ts +593 -0
- package/scripts/migrate/phase-transform.ts +310 -0
- package/scripts/migrate/phase-verify.test.ts +127 -0
- package/scripts/migrate/phase-verify.ts +572 -0
- package/scripts/migrate/post-cleanup/rules.ts +1708 -0
- package/scripts/migrate/post-cleanup/runner.test.ts +1771 -0
- package/scripts/migrate/post-cleanup/runner.ts +137 -0
- package/scripts/migrate/post-cleanup/shim-classify.test.ts +352 -0
- package/scripts/migrate/post-cleanup/shim-classify.ts +246 -0
- package/scripts/migrate/post-cleanup/types.ts +106 -0
- package/scripts/migrate/source-layout.test.ts +111 -0
- package/scripts/migrate/source-layout.ts +103 -0
- package/scripts/migrate/templates/app-css.ts +366 -0
- package/scripts/migrate/templates/cache-config.ts +26 -0
- package/scripts/migrate/templates/commerce-loaders.ts +230 -0
- package/scripts/migrate/templates/cursor-rules.test.ts +59 -0
- package/scripts/migrate/templates/cursor-rules.ts +70 -0
- package/scripts/migrate/templates/hooks.test.ts +141 -0
- package/scripts/migrate/templates/hooks.ts +152 -0
- package/scripts/migrate/templates/knip-config.ts +27 -0
- package/scripts/migrate/templates/lib-utils.test.ts +139 -0
- package/scripts/migrate/templates/lib-utils.ts +326 -0
- package/scripts/migrate/templates/lockfile-check-yml.test.ts +26 -0
- package/scripts/migrate/templates/lockfile-check-yml.ts +66 -0
- package/scripts/migrate/templates/package-json.ts +177 -0
- package/scripts/migrate/templates/routes.ts +237 -0
- package/scripts/migrate/templates/sdk-gen.ts +59 -0
- package/scripts/migrate/templates/section-loaders.ts +456 -0
- package/scripts/migrate/templates/server-entry.ts +561 -0
- package/scripts/migrate/templates/setup.ts +148 -0
- package/scripts/migrate/templates/tsconfig.ts +21 -0
- package/scripts/migrate/templates/types-gen.ts +174 -0
- package/scripts/migrate/templates/ui-components.ts +144 -0
- package/scripts/migrate/templates/vite-config.ts +101 -0
- package/scripts/migrate/transforms/dead-code.ts +455 -0
- package/scripts/migrate/transforms/deno-isms.ts +85 -0
- package/scripts/migrate/transforms/fresh-apis.ts +223 -0
- package/scripts/migrate/transforms/htmx-on-events.test.ts +305 -0
- package/scripts/migrate/transforms/htmx-on-events.ts +193 -0
- package/scripts/migrate/transforms/imports.ts +385 -0
- package/scripts/migrate/transforms/jsx.ts +317 -0
- package/scripts/migrate/transforms/section-conventions.ts +210 -0
- package/scripts/migrate/transforms/tailwind.ts +739 -0
- package/scripts/migrate/types.ts +244 -0
- package/scripts/migrate-blocks-to-kv.ts +104 -0
- package/scripts/migrate-post-cleanup.ts +191 -0
- package/scripts/migrate-to-cf-observability.test.ts +215 -0
- package/scripts/migrate-to-cf-observability.ts +699 -0
- package/scripts/migrate.ts +282 -0
- package/scripts/smoke-otlp-errorlog.ts +46 -0
- package/scripts/smoke-otlp-meter.ts +48 -0
- package/scripts/sync-blocks-to-kv.ts +153 -0
- package/scripts/tailwind-lint.ts +518 -0
- package/tsconfig.json +7 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as os from "node:os";
|
|
3
|
+
import * as path from "node:path";
|
|
4
|
+
import { afterEach, beforeEach, describe, expect, it } from "vitest";
|
|
5
|
+
import { extractPlatform } from "./phase-analyze";
|
|
6
|
+
|
|
7
|
+
// `extractPlatform` runs four strategies in order:
|
|
8
|
+
// 1. deno.json imports referencing apps/{platform}/
|
|
9
|
+
// 2. apps/{platform}.ts file existence
|
|
10
|
+
// 3. apps/site.ts loose string match against platform name + "platform"
|
|
11
|
+
// 4. .deco/blocks filenames hinting at platform
|
|
12
|
+
// Strategy 3 is the false-positive trap that ate Magento sites before #211:
|
|
13
|
+
// helsinki/granadobr's apps/site.ts imports `apps/vtex/mod.ts` for the color
|
|
14
|
+
// palette, so the content matches `"vtex"` even though the real platform is
|
|
15
|
+
// declared via `apps/magento.ts`. The fix adds "magento" to the platforms
|
|
16
|
+
// list so Strategy 2 fires first and short-circuits before Strategy 3 can
|
|
17
|
+
// over-match.
|
|
18
|
+
|
|
19
|
+
describe("extractPlatform", () => {
|
|
20
|
+
let tmp: string;
|
|
21
|
+
|
|
22
|
+
beforeEach(() => {
|
|
23
|
+
tmp = fs.mkdtempSync(path.join(os.tmpdir(), "extract-platform-"));
|
|
24
|
+
fs.mkdirSync(path.join(tmp, "apps"), { recursive: true });
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
afterEach(() => {
|
|
28
|
+
fs.rmSync(tmp, { recursive: true, force: true });
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
it("detects magento from apps/magento.ts (granadobr/helsinki shape)", () => {
|
|
32
|
+
fs.writeFileSync(path.join(tmp, "apps", "magento.ts"), "export default {};\n");
|
|
33
|
+
// Also write a site.ts that imports vtex for color palettes — this is
|
|
34
|
+
// what tripped Strategy 3 before #211.
|
|
35
|
+
fs.writeFileSync(
|
|
36
|
+
path.join(tmp, "apps", "site.ts"),
|
|
37
|
+
`import { color as vtex } from "apps/vtex/mod.ts";\n` +
|
|
38
|
+
`export interface State { platform: string }\n`,
|
|
39
|
+
);
|
|
40
|
+
expect(extractPlatform(tmp)).toBe("magento");
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
it("detects vtex from apps/vtex.ts", () => {
|
|
44
|
+
fs.writeFileSync(path.join(tmp, "apps", "vtex.ts"), "export default { account: \"foo\" };\n");
|
|
45
|
+
expect(extractPlatform(tmp)).toBe("vtex");
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
it("falls back to custom when no platform signal exists", () => {
|
|
49
|
+
fs.writeFileSync(path.join(tmp, "apps", "site.ts"), "export default {};\n");
|
|
50
|
+
expect(extractPlatform(tmp)).toBe("custom");
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
it("prefers magento over vtex when both an apps/magento.ts AND a vtex string match exist", () => {
|
|
54
|
+
// Reproduce the exact granadobr trap: apps/magento.ts is the real signal,
|
|
55
|
+
// but apps/site.ts loosely contains "vtex" + "platform".
|
|
56
|
+
fs.writeFileSync(path.join(tmp, "apps", "magento.ts"), "export default {};\n");
|
|
57
|
+
fs.writeFileSync(
|
|
58
|
+
path.join(tmp, "apps", "site.ts"),
|
|
59
|
+
`import "apps/vtex/mod.ts";\nexport interface State { platform: string }\n`,
|
|
60
|
+
);
|
|
61
|
+
expect(extractPlatform(tmp)).toBe("magento");
|
|
62
|
+
});
|
|
63
|
+
});
|