@essential-apps/shopify-test-runner 1.0.9 → 1.0.11
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/dist/lib/buildExtensions.d.ts +16 -0
- package/dist/lib/buildExtensions.d.ts.map +1 -0
- package/dist/lib/buildExtensions.js +219 -0
- package/dist/lib/buildExtensions.js.map +1 -0
- package/dist/lib/functionBuild.d.ts.map +1 -1
- package/dist/lib/functionBuild.js +76 -35
- package/dist/lib/functionBuild.js.map +1 -1
- package/dist/scripts/runOffline.js +13 -0
- package/dist/scripts/runOffline.js.map +1 -1
- package/package.json +6 -6
- package/src/lib/buildExtensions.ts +238 -0
- package/src/lib/functionBuild.ts +82 -31
- package/src/scripts/runOffline.ts +14 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface BuildExtensionsOptions {
|
|
2
|
+
/** Consuming app repo root (the dir containing `app_extensions/`). */
|
|
3
|
+
repoRoot: string;
|
|
4
|
+
/** Rebuild every extension regardless of the source-hash cache. */
|
|
5
|
+
force?: boolean;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Build all discoverable theme / post-purchase / function extensions
|
|
9
|
+
* from source (CLI-free), each gated by a per-extension source hash.
|
|
10
|
+
* Unhandled extension types (e.g. checkout_ui, admin) are skipped.
|
|
11
|
+
*
|
|
12
|
+
* Throws if a handled extension fails to build — a silent skip would
|
|
13
|
+
* surface later as a baffling "widget never rendered" test failure.
|
|
14
|
+
*/
|
|
15
|
+
export declare function buildExtensions(opts: BuildExtensionsOptions): Promise<void>;
|
|
16
|
+
//# sourceMappingURL=buildExtensions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildExtensions.d.ts","sourceRoot":"","sources":["../../src/lib/buildExtensions.ts"],"names":[],"mappings":"AA4KA,MAAM,WAAW,sBAAsB;IACrC,sEAAsE;IACtE,QAAQ,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDjF"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build the consuming app's theme / post-purchase / function extensions
|
|
3
|
+
* from source — WITHOUT the Shopify CLI — so a fresh clone has the
|
|
4
|
+
* bundles the offline storefront + orchestrator need.
|
|
5
|
+
*
|
|
6
|
+
* Why this exists
|
|
7
|
+
* ---------------
|
|
8
|
+
* The offline storefront renders a theme app extension's
|
|
9
|
+
* `blocks/*.liquid` + its built `assets/`, runs the post-purchase
|
|
10
|
+
* extension's JS bundle, and executes the discount function's `.wasm`.
|
|
11
|
+
* All three are BUILD OUTPUTS — gitignored, absent on a fresh clone —
|
|
12
|
+
* so without this step every storefront-widget, post-purchase, and
|
|
13
|
+
* discount-function test fails on a clone-and-go run (the extension
|
|
14
|
+
* never injects / the wasm is missing).
|
|
15
|
+
*
|
|
16
|
+
* The Shopify CLI is forbidden in tests (binary + version drift,
|
|
17
|
+
* interactive prompts, auth). Each extension type has a CLI-free build:
|
|
18
|
+
*
|
|
19
|
+
* - theme → the extension's own `npm run build`
|
|
20
|
+
* (vite + vite-plugin-shopify → assets/ +
|
|
21
|
+
* snippets/vite-tag.liquid)
|
|
22
|
+
* - checkout_post_purchase → esbuild bundle of src/index.{tsx,…} as an
|
|
23
|
+
* IIFE. The @shopify/post-purchase-ui-
|
|
24
|
+
* extensions runtime registers handlers via
|
|
25
|
+
* `self.shopify.{extend,render}`, which the
|
|
26
|
+
* mock post-purchase host shim collects.
|
|
27
|
+
* - function → buildFunctionWasm (esbuild + stock javy +
|
|
28
|
+
* Shopify's javy plugin; see functionBuild.ts)
|
|
29
|
+
*
|
|
30
|
+
* Outputs land in each extension's own gitignored output dir (theme:
|
|
31
|
+
* `assets/` + `snippets/vite-tag.liquid`; others: `dist/`), which the VM
|
|
32
|
+
* reads via the existing `/workspace` bind mount — no extra mounts, no
|
|
33
|
+
* staging. Building into the gitignored dirs mirrors the app build
|
|
34
|
+
* (which writes `build/`): it never dirties `git status`. The only
|
|
35
|
+
* interference window is running `shopify app dev` AND an offline test
|
|
36
|
+
* concurrently — sequential use is fine.
|
|
37
|
+
*
|
|
38
|
+
* Gated by a per-extension source hash (cached in the gitignored
|
|
39
|
+
* `build/.test-ext-build-cache`), so a rebuild happens only when that
|
|
40
|
+
* extension's source actually changes — same philosophy as the app
|
|
41
|
+
* build's `build/.test-build-cache`.
|
|
42
|
+
*/
|
|
43
|
+
import { createHash } from 'node:crypto';
|
|
44
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, statSync, writeFileSync, } from 'node:fs';
|
|
45
|
+
import { execFileSync } from 'node:child_process';
|
|
46
|
+
import { dirname, join, relative, resolve } from 'node:path';
|
|
47
|
+
import * as esbuild from 'esbuild';
|
|
48
|
+
import { buildFunctionWasm } from './functionBuild.js';
|
|
49
|
+
/** Directory names never hashed and never traversed (build outputs +
|
|
50
|
+
* deps + tool caches). Keeps the source hash stable across rebuilds. */
|
|
51
|
+
const IGNORE_DIRS = new Set(['node_modules', 'dist', 'assets', '.vite', '.turbo']);
|
|
52
|
+
/** Source entry candidates for a post-purchase extension, in priority order. */
|
|
53
|
+
const POST_PURCHASE_ENTRIES = ['src/index.tsx', 'src/index.ts', 'src/index.jsx', 'src/index.js'];
|
|
54
|
+
/**
|
|
55
|
+
* Read a top-level (or nested) `key = "value"` string from a
|
|
56
|
+
* `shopify.extension.toml`. Intentionally forgiving — the extension
|
|
57
|
+
* toml shapes we care about (`type`, `name`) declare these as plain
|
|
58
|
+
* string assignments, whether top-level (theme / post-purchase) or
|
|
59
|
+
* inside an `[[extensions]]` block (function).
|
|
60
|
+
*/
|
|
61
|
+
function readTomlString(tomlText, key) {
|
|
62
|
+
const m = tomlText.match(new RegExp(`^\\s*${key}\\s*=\\s*["']([^"']+)["']`, 'm'));
|
|
63
|
+
return m ? m[1] : null;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Content + structure hash of an extension's source tree. Mirrors
|
|
67
|
+
* computeBuildHash's `(relpath, size, mtime)` strategy (fast, and
|
|
68
|
+
* nothing in a test run mutates source), skipping build-output and
|
|
69
|
+
* dependency dirs so the hash only moves when source moves.
|
|
70
|
+
*/
|
|
71
|
+
function hashExtensionSource(dir) {
|
|
72
|
+
const hash = createHash('sha256');
|
|
73
|
+
const walk = (cur) => {
|
|
74
|
+
let entries;
|
|
75
|
+
try {
|
|
76
|
+
entries = readdirSync(cur, { withFileTypes: true });
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
entries.sort((a, b) => a.name.localeCompare(b.name));
|
|
82
|
+
for (const ent of entries) {
|
|
83
|
+
if (ent.name.startsWith('.'))
|
|
84
|
+
continue;
|
|
85
|
+
if (IGNORE_DIRS.has(ent.name))
|
|
86
|
+
continue;
|
|
87
|
+
const full = join(cur, ent.name);
|
|
88
|
+
if (ent.isDirectory()) {
|
|
89
|
+
walk(full);
|
|
90
|
+
}
|
|
91
|
+
else if (ent.isFile()) {
|
|
92
|
+
const s = statSync(full);
|
|
93
|
+
hash.update(`${relative(dir, full)}|${s.size}|${s.mtimeMs}\n`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
walk(dir);
|
|
98
|
+
return hash.digest('hex');
|
|
99
|
+
}
|
|
100
|
+
/** Discover extension dirs under `<repoRoot>/app_extensions/*` that
|
|
101
|
+
* carry a `shopify.extension.toml`. */
|
|
102
|
+
function discoverExtensionDirs(repoRoot) {
|
|
103
|
+
const base = resolve(repoRoot, 'app_extensions');
|
|
104
|
+
if (!existsSync(base))
|
|
105
|
+
return [];
|
|
106
|
+
const out = [];
|
|
107
|
+
for (const ent of readdirSync(base, { withFileTypes: true })) {
|
|
108
|
+
if (!ent.isDirectory())
|
|
109
|
+
continue;
|
|
110
|
+
const dir = join(base, ent.name);
|
|
111
|
+
if (existsSync(join(dir, 'shopify.extension.toml')))
|
|
112
|
+
out.push(dir);
|
|
113
|
+
}
|
|
114
|
+
return out.sort();
|
|
115
|
+
}
|
|
116
|
+
/** Build a theme app extension via its own `npm run build`. */
|
|
117
|
+
function buildThemeExtension(dir) {
|
|
118
|
+
const pkgPath = join(dir, 'package.json');
|
|
119
|
+
if (!existsSync(pkgPath)) {
|
|
120
|
+
console.error(`[buildExtensions] theme ${dir}: no package.json — skipping (pure-liquid?)`);
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'));
|
|
124
|
+
if (!pkg.scripts?.['build']) {
|
|
125
|
+
console.error(`[buildExtensions] theme ${dir}: no \`build\` script — skipping (pure-liquid?)`);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
// The extension's deps are installed via the consuming app's
|
|
129
|
+
// workspaces (root `npm install` covers `app_extensions/*`). vite is
|
|
130
|
+
// non-interactive; inherit stdio so build errors surface in the run log.
|
|
131
|
+
execFileSync('npm', ['run', 'build'], { cwd: dir, stdio: 'inherit', env: process.env });
|
|
132
|
+
}
|
|
133
|
+
/** Bundle a checkout_post_purchase extension to `dist/<name>.js`. */
|
|
134
|
+
async function buildPostPurchaseExtension(dir, tomlText) {
|
|
135
|
+
const entryRel = POST_PURCHASE_ENTRIES.find((c) => existsSync(join(dir, c)));
|
|
136
|
+
if (!entryRel) {
|
|
137
|
+
throw new Error(`[buildExtensions] post-purchase extension at ${dir} has no entry — expected one of ${POST_PURCHASE_ENTRIES.join(', ')}`);
|
|
138
|
+
}
|
|
139
|
+
// Output name = the extension's toml `name` (matches what the Shopify
|
|
140
|
+
// CLI emits and what `.apps.json`'s `postPurchaseBundle` references,
|
|
141
|
+
// e.g. dist/post-purchase-ui.js).
|
|
142
|
+
const name = readTomlString(tomlText, 'name') ?? 'post-purchase-ui';
|
|
143
|
+
const outfile = join(dir, 'dist', `${name}.js`);
|
|
144
|
+
const tsconfig = join(dir, 'tsconfig.json');
|
|
145
|
+
await esbuild.build({
|
|
146
|
+
entryPoints: [join(dir, entryRel)],
|
|
147
|
+
bundle: true,
|
|
148
|
+
// IIFE so loading the script self-executes and registers handlers
|
|
149
|
+
// via the post-purchase runtime's `self.shopify.{extend,render}`.
|
|
150
|
+
format: 'iife',
|
|
151
|
+
platform: 'browser',
|
|
152
|
+
target: 'es2020',
|
|
153
|
+
// React 17 automatic runtime (`react/jsx-runtime`); the extensions
|
|
154
|
+
// set `"jsx": "react-jsx"` in tsconfig.
|
|
155
|
+
jsx: 'automatic',
|
|
156
|
+
// Resolve the extensions' `#/…` path aliases from their tsconfig.
|
|
157
|
+
...(existsSync(tsconfig) ? { tsconfig } : {}),
|
|
158
|
+
define: { 'process.env.NODE_ENV': '"production"' },
|
|
159
|
+
legalComments: 'none',
|
|
160
|
+
outfile,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Build all discoverable theme / post-purchase / function extensions
|
|
165
|
+
* from source (CLI-free), each gated by a per-extension source hash.
|
|
166
|
+
* Unhandled extension types (e.g. checkout_ui, admin) are skipped.
|
|
167
|
+
*
|
|
168
|
+
* Throws if a handled extension fails to build — a silent skip would
|
|
169
|
+
* surface later as a baffling "widget never rendered" test failure.
|
|
170
|
+
*/
|
|
171
|
+
export async function buildExtensions(opts) {
|
|
172
|
+
const { repoRoot, force } = opts;
|
|
173
|
+
const dirs = discoverExtensionDirs(repoRoot);
|
|
174
|
+
if (dirs.length === 0)
|
|
175
|
+
return;
|
|
176
|
+
const cachePath = resolve(repoRoot, 'build/.test-ext-build-cache');
|
|
177
|
+
let cache = {};
|
|
178
|
+
if (!force && existsSync(cachePath)) {
|
|
179
|
+
try {
|
|
180
|
+
cache = JSON.parse(readFileSync(cachePath, 'utf8'));
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
cache = {};
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
for (const dir of dirs) {
|
|
187
|
+
const tomlPath = join(dir, 'shopify.extension.toml');
|
|
188
|
+
const tomlText = readFileSync(tomlPath, 'utf8');
|
|
189
|
+
const type = readTomlString(tomlText, 'type');
|
|
190
|
+
if (type !== 'theme' && type !== 'checkout_post_purchase' && type !== 'function') {
|
|
191
|
+
// Not an extension the offline storefront builds/injects.
|
|
192
|
+
continue;
|
|
193
|
+
}
|
|
194
|
+
const key = relative(repoRoot, dir);
|
|
195
|
+
const srcHash = hashExtensionSource(dir);
|
|
196
|
+
if (!force && cache[key] === srcHash) {
|
|
197
|
+
console.error(`[buildExtensions] ${key} (${type}) cache HIT — skipping.`);
|
|
198
|
+
continue;
|
|
199
|
+
}
|
|
200
|
+
const t0 = performance.now();
|
|
201
|
+
console.error(`[buildExtensions] ${key} (${type}) building…`);
|
|
202
|
+
if (type === 'theme') {
|
|
203
|
+
buildThemeExtension(dir);
|
|
204
|
+
}
|
|
205
|
+
else if (type === 'checkout_post_purchase') {
|
|
206
|
+
await buildPostPurchaseExtension(dir, tomlText);
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
// function — buildFunctionWasm writes <dir>/dist/function.wasm.
|
|
210
|
+
mkdirSync(join(dir, 'dist'), { recursive: true });
|
|
211
|
+
await buildFunctionWasm({ functionDir: dir });
|
|
212
|
+
}
|
|
213
|
+
cache[key] = srcHash;
|
|
214
|
+
console.error(`[buildExtensions] ${key} built in ${((performance.now() - t0) / 1000).toFixed(1)} s`);
|
|
215
|
+
}
|
|
216
|
+
mkdirSync(dirname(cachePath), { recursive: true });
|
|
217
|
+
writeFileSync(cachePath, JSON.stringify(cache, null, 2));
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=buildExtensions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildExtensions.js","sourceRoot":"","sources":["../../src/lib/buildExtensions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functionBuild.d.ts","sourceRoot":"","sources":["../../src/lib/functionBuild.ts"],"names":[],"mappings":"AAyDA;;;;GAIG;AACH,eAAO,MAAM,YAAY,WAAW,CAAC;AAErC;;;;;GAKG;AACH,eAAO,MAAM,UAAU,sGAC8E,CAAC;AAoFtG;;;;;GAKG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAclD;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAaxD;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf;;oEAEgE;IAChE,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,oEAAoE;IACpE,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CA6ElE;AA0ED,MAAM,WAAW,wBAAwB;IACvC,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,kBAAkB,CAAC;CAChC;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,uBAAuB,CAAC,
|
|
1
|
+
{"version":3,"file":"functionBuild.d.ts","sourceRoot":"","sources":["../../src/lib/functionBuild.ts"],"names":[],"mappings":"AAyDA;;;;GAIG;AACH,eAAO,MAAM,YAAY,WAAW,CAAC;AAErC;;;;;GAKG;AACH,eAAO,MAAM,UAAU,sGAC8E,CAAC;AAoFtG;;;;;GAKG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAclD;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAaxD;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf;;oEAEgE;IAChE,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,oEAAoE;IACpE,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CA6ElE;AA0ED,MAAM,WAAW,wBAAwB;IACvC,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,kBAAkB,CAAC;CAChC;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,uBAAuB,CAAC,CAoHlC"}
|
|
@@ -366,44 +366,85 @@ export async function buildFunctionWasm(opts) {
|
|
|
366
366
|
// Step 1: bundle JS with esbuild.
|
|
367
367
|
const bundledJs = resolve(distDir, 'function.js');
|
|
368
368
|
const entryContents = synthesizeEntry(toml.targets);
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
369
|
+
const bundle = async (drop) => {
|
|
370
|
+
await esbuild.build({
|
|
371
|
+
stdin: {
|
|
372
|
+
contents: entryContents,
|
|
373
|
+
resolveDir: functionDir,
|
|
374
|
+
loader: 'ts',
|
|
375
|
+
sourcefile: 'shopify-function-entry.ts',
|
|
376
|
+
},
|
|
377
|
+
bundle: true,
|
|
378
|
+
format: 'esm',
|
|
379
|
+
target: 'es2022',
|
|
380
|
+
legalComments: 'none',
|
|
381
|
+
outfile: bundledJs,
|
|
382
|
+
alias: {
|
|
383
|
+
'user-function': entryPath,
|
|
384
|
+
},
|
|
385
|
+
// Node-side bundler. Functions don't have access to Node APIs
|
|
386
|
+
// (the runtime is QuickJS via Javy), so we set platform=neutral
|
|
387
|
+
// and don't try to polyfill anything Node-specific.
|
|
388
|
+
platform: 'neutral',
|
|
389
|
+
// QuickJS exposes a recent-ish JS surface but ECMAScript modules
|
|
390
|
+
// are handled by Javy's runtime — esbuild's `format: esm` output
|
|
391
|
+
// is what Javy expects.
|
|
392
|
+
mainFields: ['module', 'main'],
|
|
393
|
+
conditions: ['shopify_function', 'import', 'default'],
|
|
394
|
+
// See the legacy note below: in a STATIC Javy build `console.*`
|
|
395
|
+
// writes to STDOUT, corrupting the function's JSON output. Strip
|
|
396
|
+
// it for the legacy path.
|
|
397
|
+
...(drop ? { drop: ['console'] } : {}),
|
|
398
|
+
});
|
|
399
|
+
};
|
|
400
|
+
await bundle(false);
|
|
394
401
|
// Step 2: WIT + javy build.
|
|
395
402
|
const witPath = resolve(distDir, 'javy-world.wit');
|
|
396
403
|
writeFileSync(witPath, synthesizeWit(toml.targets), 'utf8');
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
404
|
+
// Legacy vs modern @shopify/shopify_function I/O — auto-detected from
|
|
405
|
+
// the BUNDLE, so we don't hard-code a runtime-version assumption.
|
|
406
|
+
//
|
|
407
|
+
// - Legacy (≤1.x, e.g. `@shopify/shopify_function@0.1.0`): its `/run`
|
|
408
|
+
// does `import * as fs from "javy/fs"`, whose read/writeFileSync
|
|
409
|
+
// call the GLOBAL `Javy.IO`. That global is supplied by Javy's OWN
|
|
410
|
+
// default provider, which is embedded only in a STATIC build. The
|
|
411
|
+
// Shopify Functions Javy plugin (v3, dynamic) REPLACES that
|
|
412
|
+
// provider with shopify-specific host imports and does NOT expose
|
|
413
|
+
// `Javy` — so a plugin build of legacy code traps at runtime with
|
|
414
|
+
// "'Javy' is not defined". Build it STATIC.
|
|
415
|
+
//
|
|
416
|
+
// - Modern (≥2.x): imports host functions the plugin provides and
|
|
417
|
+
// never touches the `Javy` global, so it NEEDS the dynamic plugin
|
|
418
|
+
// build (a static build lacks those host imports).
|
|
419
|
+
//
|
|
420
|
+
// function-runner runs either (self-contained static, or dynamic with
|
|
421
|
+
// the plugin it links). Detect by the literal `Javy.IO` the legacy
|
|
422
|
+
// shim emits into the bundle.
|
|
423
|
+
const usesLegacyJavyGlobal = /\bJavy\.IO\b/.test(readFileSync(bundledJs, 'utf8'));
|
|
424
|
+
const javy = await ensureJavy();
|
|
425
|
+
const javyArgs = ['build'];
|
|
426
|
+
if (usesLegacyJavyGlobal) {
|
|
427
|
+
console.log(` (legacy Javy.IO runtime → static build, no plugin)`);
|
|
428
|
+
// CRITICAL: Javy's default (static) provider routes `console.*` to
|
|
429
|
+
// STDOUT — which is also where the legacy `/run` writes the
|
|
430
|
+
// function's JSON result. The two interleave and function-runner
|
|
431
|
+
// then fails to parse stdout (sees `<log text>\n{json}` →
|
|
432
|
+
// "JSON Error"), yielding empty output. The Shopify plugin (modern
|
|
433
|
+
// path) routes console to logs instead; the static provider has no
|
|
434
|
+
// such redirect and no Javy flag toggles it. So re-bundle with
|
|
435
|
+
// `console` stripped to keep stdout clean. (Debug logs are lost in
|
|
436
|
+
// the legacy wasm — acceptable; they weren't captured anyway.)
|
|
437
|
+
await bundle(true);
|
|
438
|
+
// Enable the JS builtins the legacy runtime relies on: `/run` uses
|
|
439
|
+
// TextEncoder/TextDecoder, and we match the modern plugin's JS
|
|
440
|
+
// environment (SIMD JSON, the Javy stream-IO builtins, event loop).
|
|
441
|
+
javyArgs.push('-J', 'text-encoding=y', '-J', 'simd-json-builtins=y', '-J', 'javy-stream-io=y', '-J', 'event-loop=y');
|
|
442
|
+
}
|
|
443
|
+
else {
|
|
444
|
+
const plugin = await ensureJavyPlugin();
|
|
445
|
+
javyArgs.push('-C', 'dynamic', '-C', `plugin=${plugin}`);
|
|
446
|
+
}
|
|
447
|
+
javyArgs.push('-C', `wit=${witPath}`, '-C', `wit-world=${JAVY_WORLD_NAME}`, '-o', outputWasm, bundledJs);
|
|
407
448
|
// `cwd: functionDir` so Javy resolves any relative paths in its
|
|
408
449
|
// diagnostics (it doesn't, AFAICT, but parity with the CLI is
|
|
409
450
|
// cheap).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functionBuild.js","sourceRoot":"","sources":["../../src/lib/functionBuild.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"functionBuild.js","sourceRoot":"","sources":["../../src/lib/functionBuild.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,6 +55,7 @@ import { homedir } from 'node:os';
|
|
|
55
55
|
import { dirname, resolve } from 'node:path';
|
|
56
56
|
import { fileURLToPath } from 'node:url';
|
|
57
57
|
import { pickApp, prepareOciArchive, envFileArgs, computeBuildHash } from '@essential-apps/shopify-test-core';
|
|
58
|
+
import { buildExtensions } from '../lib/buildExtensions.js';
|
|
58
59
|
const repoRoot = process.cwd();
|
|
59
60
|
function readAppName() {
|
|
60
61
|
const pkgPath = resolve(repoRoot, 'package.json');
|
|
@@ -233,6 +234,18 @@ async function main() {
|
|
|
233
234
|
writeFileSync(buildCachePath, currentBuildHash);
|
|
234
235
|
console.error(`[runOffline] host build: ${((performance.now() - tBuild) / 1000).toFixed(1)} s`);
|
|
235
236
|
}
|
|
237
|
+
// ── Extension builds (theme / post-purchase / function) ──────
|
|
238
|
+
// Build the consuming app's theme app extension(s), post-purchase
|
|
239
|
+
// bundle, and discount function wasm FROM SOURCE — CLI-free — so a
|
|
240
|
+
// fresh clone has the artifacts the offline storefront + orchestrator
|
|
241
|
+
// inject (the widget's app-embed assets, the post-purchase bundle, the
|
|
242
|
+
// function .wasm). Without this, those are absent on a fresh clone and
|
|
243
|
+
// every storefront-widget / post-purchase / discount-function test
|
|
244
|
+
// fails. Same model as the app build above: builds into each
|
|
245
|
+
// extension's own gitignored output dir (read by the VM via the
|
|
246
|
+
// /workspace bind mount), per-extension source-hash gated. See
|
|
247
|
+
// buildExtensions.ts.
|
|
248
|
+
await buildExtensions({ repoRoot, force: forceBuild });
|
|
236
249
|
// Tarball-manifest written by `scripts/pack-into.sh` — a hash list
|
|
237
250
|
// of the vendored @essential-apps/* tarballs. Passed as an
|
|
238
251
|
// `extraFile` so its bytes fold into the snapshot's bake input-hash:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runOffline.js","sourceRoot":"","sources":["../../src/scripts/runOffline.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runOffline.js","sourceRoot":"","sources":["../../src/scripts/runOffline.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@essential-apps/shopify-test-runner",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.11",
|
|
4
4
|
"description": "Orchestration scripts (container, auth capture, install) and Playwright config preset for Essential Apps' Shopify test suites. Internal use only.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -57,11 +57,11 @@
|
|
|
57
57
|
"clean": "rm -rf dist"
|
|
58
58
|
},
|
|
59
59
|
"dependencies": {
|
|
60
|
-
"@essential-apps/shopify-test-core": "^1.0.
|
|
61
|
-
"@essential-apps/shopify-test-mock-admin": "^1.0.
|
|
62
|
-
"@essential-apps/shopify-test-shopify-api": "^1.0.
|
|
63
|
-
"@essential-apps/shopify-test-storefront": "^1.0.
|
|
64
|
-
"@essential-apps/shopify-test-themes": "^1.0.
|
|
60
|
+
"@essential-apps/shopify-test-core": "^1.0.11",
|
|
61
|
+
"@essential-apps/shopify-test-mock-admin": "^1.0.11",
|
|
62
|
+
"@essential-apps/shopify-test-shopify-api": "^1.0.11",
|
|
63
|
+
"@essential-apps/shopify-test-storefront": "^1.0.11",
|
|
64
|
+
"@essential-apps/shopify-test-themes": "^1.0.11",
|
|
65
65
|
"@playwright/test": "^1.49.0",
|
|
66
66
|
"@types/node": "^20.19.40",
|
|
67
67
|
"@types/tar-stream": "^3.1.4",
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build the consuming app's theme / post-purchase / function extensions
|
|
3
|
+
* from source — WITHOUT the Shopify CLI — so a fresh clone has the
|
|
4
|
+
* bundles the offline storefront + orchestrator need.
|
|
5
|
+
*
|
|
6
|
+
* Why this exists
|
|
7
|
+
* ---------------
|
|
8
|
+
* The offline storefront renders a theme app extension's
|
|
9
|
+
* `blocks/*.liquid` + its built `assets/`, runs the post-purchase
|
|
10
|
+
* extension's JS bundle, and executes the discount function's `.wasm`.
|
|
11
|
+
* All three are BUILD OUTPUTS — gitignored, absent on a fresh clone —
|
|
12
|
+
* so without this step every storefront-widget, post-purchase, and
|
|
13
|
+
* discount-function test fails on a clone-and-go run (the extension
|
|
14
|
+
* never injects / the wasm is missing).
|
|
15
|
+
*
|
|
16
|
+
* The Shopify CLI is forbidden in tests (binary + version drift,
|
|
17
|
+
* interactive prompts, auth). Each extension type has a CLI-free build:
|
|
18
|
+
*
|
|
19
|
+
* - theme → the extension's own `npm run build`
|
|
20
|
+
* (vite + vite-plugin-shopify → assets/ +
|
|
21
|
+
* snippets/vite-tag.liquid)
|
|
22
|
+
* - checkout_post_purchase → esbuild bundle of src/index.{tsx,…} as an
|
|
23
|
+
* IIFE. The @shopify/post-purchase-ui-
|
|
24
|
+
* extensions runtime registers handlers via
|
|
25
|
+
* `self.shopify.{extend,render}`, which the
|
|
26
|
+
* mock post-purchase host shim collects.
|
|
27
|
+
* - function → buildFunctionWasm (esbuild + stock javy +
|
|
28
|
+
* Shopify's javy plugin; see functionBuild.ts)
|
|
29
|
+
*
|
|
30
|
+
* Outputs land in each extension's own gitignored output dir (theme:
|
|
31
|
+
* `assets/` + `snippets/vite-tag.liquid`; others: `dist/`), which the VM
|
|
32
|
+
* reads via the existing `/workspace` bind mount — no extra mounts, no
|
|
33
|
+
* staging. Building into the gitignored dirs mirrors the app build
|
|
34
|
+
* (which writes `build/`): it never dirties `git status`. The only
|
|
35
|
+
* interference window is running `shopify app dev` AND an offline test
|
|
36
|
+
* concurrently — sequential use is fine.
|
|
37
|
+
*
|
|
38
|
+
* Gated by a per-extension source hash (cached in the gitignored
|
|
39
|
+
* `build/.test-ext-build-cache`), so a rebuild happens only when that
|
|
40
|
+
* extension's source actually changes — same philosophy as the app
|
|
41
|
+
* build's `build/.test-build-cache`.
|
|
42
|
+
*/
|
|
43
|
+
import { createHash } from 'node:crypto';
|
|
44
|
+
import {
|
|
45
|
+
existsSync,
|
|
46
|
+
mkdirSync,
|
|
47
|
+
readdirSync,
|
|
48
|
+
readFileSync,
|
|
49
|
+
statSync,
|
|
50
|
+
writeFileSync,
|
|
51
|
+
} from 'node:fs';
|
|
52
|
+
import { execFileSync } from 'node:child_process';
|
|
53
|
+
import { dirname, join, relative, resolve } from 'node:path';
|
|
54
|
+
import * as esbuild from 'esbuild';
|
|
55
|
+
import { buildFunctionWasm } from './functionBuild.js';
|
|
56
|
+
|
|
57
|
+
/** Directory names never hashed and never traversed (build outputs +
|
|
58
|
+
* deps + tool caches). Keeps the source hash stable across rebuilds. */
|
|
59
|
+
const IGNORE_DIRS = new Set(['node_modules', 'dist', 'assets', '.vite', '.turbo']);
|
|
60
|
+
|
|
61
|
+
/** Source entry candidates for a post-purchase extension, in priority order. */
|
|
62
|
+
const POST_PURCHASE_ENTRIES = ['src/index.tsx', 'src/index.ts', 'src/index.jsx', 'src/index.js'];
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Read a top-level (or nested) `key = "value"` string from a
|
|
66
|
+
* `shopify.extension.toml`. Intentionally forgiving — the extension
|
|
67
|
+
* toml shapes we care about (`type`, `name`) declare these as plain
|
|
68
|
+
* string assignments, whether top-level (theme / post-purchase) or
|
|
69
|
+
* inside an `[[extensions]]` block (function).
|
|
70
|
+
*/
|
|
71
|
+
function readTomlString(tomlText: string, key: string): string | null {
|
|
72
|
+
const m = tomlText.match(new RegExp(`^\\s*${key}\\s*=\\s*["']([^"']+)["']`, 'm'));
|
|
73
|
+
return m ? m[1]! : null;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Content + structure hash of an extension's source tree. Mirrors
|
|
78
|
+
* computeBuildHash's `(relpath, size, mtime)` strategy (fast, and
|
|
79
|
+
* nothing in a test run mutates source), skipping build-output and
|
|
80
|
+
* dependency dirs so the hash only moves when source moves.
|
|
81
|
+
*/
|
|
82
|
+
function hashExtensionSource(dir: string): string {
|
|
83
|
+
const hash = createHash('sha256');
|
|
84
|
+
const walk = (cur: string): void => {
|
|
85
|
+
let entries: import('node:fs').Dirent[];
|
|
86
|
+
try {
|
|
87
|
+
entries = readdirSync(cur, { withFileTypes: true });
|
|
88
|
+
} catch {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
entries.sort((a, b) => a.name.localeCompare(b.name));
|
|
92
|
+
for (const ent of entries) {
|
|
93
|
+
if (ent.name.startsWith('.')) continue;
|
|
94
|
+
if (IGNORE_DIRS.has(ent.name)) continue;
|
|
95
|
+
const full = join(cur, ent.name);
|
|
96
|
+
if (ent.isDirectory()) {
|
|
97
|
+
walk(full);
|
|
98
|
+
} else if (ent.isFile()) {
|
|
99
|
+
const s = statSync(full);
|
|
100
|
+
hash.update(`${relative(dir, full)}|${s.size}|${s.mtimeMs}\n`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
walk(dir);
|
|
105
|
+
return hash.digest('hex');
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/** Discover extension dirs under `<repoRoot>/app_extensions/*` that
|
|
109
|
+
* carry a `shopify.extension.toml`. */
|
|
110
|
+
function discoverExtensionDirs(repoRoot: string): string[] {
|
|
111
|
+
const base = resolve(repoRoot, 'app_extensions');
|
|
112
|
+
if (!existsSync(base)) return [];
|
|
113
|
+
const out: string[] = [];
|
|
114
|
+
for (const ent of readdirSync(base, { withFileTypes: true })) {
|
|
115
|
+
if (!ent.isDirectory()) continue;
|
|
116
|
+
const dir = join(base, ent.name);
|
|
117
|
+
if (existsSync(join(dir, 'shopify.extension.toml'))) out.push(dir);
|
|
118
|
+
}
|
|
119
|
+
return out.sort();
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/** Build a theme app extension via its own `npm run build`. */
|
|
123
|
+
function buildThemeExtension(dir: string): void {
|
|
124
|
+
const pkgPath = join(dir, 'package.json');
|
|
125
|
+
if (!existsSync(pkgPath)) {
|
|
126
|
+
console.error(`[buildExtensions] theme ${dir}: no package.json — skipping (pure-liquid?)`);
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as { scripts?: Record<string, string> };
|
|
130
|
+
if (!pkg.scripts?.['build']) {
|
|
131
|
+
console.error(`[buildExtensions] theme ${dir}: no \`build\` script — skipping (pure-liquid?)`);
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
// The extension's deps are installed via the consuming app's
|
|
135
|
+
// workspaces (root `npm install` covers `app_extensions/*`). vite is
|
|
136
|
+
// non-interactive; inherit stdio so build errors surface in the run log.
|
|
137
|
+
execFileSync('npm', ['run', 'build'], { cwd: dir, stdio: 'inherit', env: process.env });
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/** Bundle a checkout_post_purchase extension to `dist/<name>.js`. */
|
|
141
|
+
async function buildPostPurchaseExtension(dir: string, tomlText: string): Promise<void> {
|
|
142
|
+
const entryRel = POST_PURCHASE_ENTRIES.find((c) => existsSync(join(dir, c)));
|
|
143
|
+
if (!entryRel) {
|
|
144
|
+
throw new Error(
|
|
145
|
+
`[buildExtensions] post-purchase extension at ${dir} has no entry — expected one of ${POST_PURCHASE_ENTRIES.join(', ')}`,
|
|
146
|
+
);
|
|
147
|
+
}
|
|
148
|
+
// Output name = the extension's toml `name` (matches what the Shopify
|
|
149
|
+
// CLI emits and what `.apps.json`'s `postPurchaseBundle` references,
|
|
150
|
+
// e.g. dist/post-purchase-ui.js).
|
|
151
|
+
const name = readTomlString(tomlText, 'name') ?? 'post-purchase-ui';
|
|
152
|
+
const outfile = join(dir, 'dist', `${name}.js`);
|
|
153
|
+
const tsconfig = join(dir, 'tsconfig.json');
|
|
154
|
+
await esbuild.build({
|
|
155
|
+
entryPoints: [join(dir, entryRel)],
|
|
156
|
+
bundle: true,
|
|
157
|
+
// IIFE so loading the script self-executes and registers handlers
|
|
158
|
+
// via the post-purchase runtime's `self.shopify.{extend,render}`.
|
|
159
|
+
format: 'iife',
|
|
160
|
+
platform: 'browser',
|
|
161
|
+
target: 'es2020',
|
|
162
|
+
// React 17 automatic runtime (`react/jsx-runtime`); the extensions
|
|
163
|
+
// set `"jsx": "react-jsx"` in tsconfig.
|
|
164
|
+
jsx: 'automatic',
|
|
165
|
+
// Resolve the extensions' `#/…` path aliases from their tsconfig.
|
|
166
|
+
...(existsSync(tsconfig) ? { tsconfig } : {}),
|
|
167
|
+
define: { 'process.env.NODE_ENV': '"production"' },
|
|
168
|
+
legalComments: 'none',
|
|
169
|
+
outfile,
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
export interface BuildExtensionsOptions {
|
|
174
|
+
/** Consuming app repo root (the dir containing `app_extensions/`). */
|
|
175
|
+
repoRoot: string;
|
|
176
|
+
/** Rebuild every extension regardless of the source-hash cache. */
|
|
177
|
+
force?: boolean;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Build all discoverable theme / post-purchase / function extensions
|
|
182
|
+
* from source (CLI-free), each gated by a per-extension source hash.
|
|
183
|
+
* Unhandled extension types (e.g. checkout_ui, admin) are skipped.
|
|
184
|
+
*
|
|
185
|
+
* Throws if a handled extension fails to build — a silent skip would
|
|
186
|
+
* surface later as a baffling "widget never rendered" test failure.
|
|
187
|
+
*/
|
|
188
|
+
export async function buildExtensions(opts: BuildExtensionsOptions): Promise<void> {
|
|
189
|
+
const { repoRoot, force } = opts;
|
|
190
|
+
const dirs = discoverExtensionDirs(repoRoot);
|
|
191
|
+
if (dirs.length === 0) return;
|
|
192
|
+
|
|
193
|
+
const cachePath = resolve(repoRoot, 'build/.test-ext-build-cache');
|
|
194
|
+
let cache: Record<string, string> = {};
|
|
195
|
+
if (!force && existsSync(cachePath)) {
|
|
196
|
+
try {
|
|
197
|
+
cache = JSON.parse(readFileSync(cachePath, 'utf8')) as Record<string, string>;
|
|
198
|
+
} catch {
|
|
199
|
+
cache = {};
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
for (const dir of dirs) {
|
|
204
|
+
const tomlPath = join(dir, 'shopify.extension.toml');
|
|
205
|
+
const tomlText = readFileSync(tomlPath, 'utf8');
|
|
206
|
+
const type = readTomlString(tomlText, 'type');
|
|
207
|
+
if (type !== 'theme' && type !== 'checkout_post_purchase' && type !== 'function') {
|
|
208
|
+
// Not an extension the offline storefront builds/injects.
|
|
209
|
+
continue;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
const key = relative(repoRoot, dir);
|
|
213
|
+
const srcHash = hashExtensionSource(dir);
|
|
214
|
+
if (!force && cache[key] === srcHash) {
|
|
215
|
+
console.error(`[buildExtensions] ${key} (${type}) cache HIT — skipping.`);
|
|
216
|
+
continue;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
const t0 = performance.now();
|
|
220
|
+
console.error(`[buildExtensions] ${key} (${type}) building…`);
|
|
221
|
+
if (type === 'theme') {
|
|
222
|
+
buildThemeExtension(dir);
|
|
223
|
+
} else if (type === 'checkout_post_purchase') {
|
|
224
|
+
await buildPostPurchaseExtension(dir, tomlText);
|
|
225
|
+
} else {
|
|
226
|
+
// function — buildFunctionWasm writes <dir>/dist/function.wasm.
|
|
227
|
+
mkdirSync(join(dir, 'dist'), { recursive: true });
|
|
228
|
+
await buildFunctionWasm({ functionDir: dir });
|
|
229
|
+
}
|
|
230
|
+
cache[key] = srcHash;
|
|
231
|
+
console.error(
|
|
232
|
+
`[buildExtensions] ${key} built in ${((performance.now() - t0) / 1000).toFixed(1)} s`,
|
|
233
|
+
);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
mkdirSync(dirname(cachePath), { recursive: true });
|
|
237
|
+
writeFileSync(cachePath, JSON.stringify(cache, null, 2));
|
|
238
|
+
}
|
package/src/lib/functionBuild.ts
CHANGED
|
@@ -441,46 +441,97 @@ export async function buildFunctionWasm(
|
|
|
441
441
|
// Step 1: bundle JS with esbuild.
|
|
442
442
|
const bundledJs = resolve(distDir, 'function.js');
|
|
443
443
|
const entryContents = synthesizeEntry(toml.targets);
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
444
|
+
const bundle = async (drop: boolean): Promise<void> => {
|
|
445
|
+
await esbuild.build({
|
|
446
|
+
stdin: {
|
|
447
|
+
contents: entryContents,
|
|
448
|
+
resolveDir: functionDir,
|
|
449
|
+
loader: 'ts',
|
|
450
|
+
sourcefile: 'shopify-function-entry.ts',
|
|
451
|
+
},
|
|
452
|
+
bundle: true,
|
|
453
|
+
format: 'esm',
|
|
454
|
+
target: 'es2022',
|
|
455
|
+
legalComments: 'none',
|
|
456
|
+
outfile: bundledJs,
|
|
457
|
+
alias: {
|
|
458
|
+
'user-function': entryPath,
|
|
459
|
+
},
|
|
460
|
+
// Node-side bundler. Functions don't have access to Node APIs
|
|
461
|
+
// (the runtime is QuickJS via Javy), so we set platform=neutral
|
|
462
|
+
// and don't try to polyfill anything Node-specific.
|
|
463
|
+
platform: 'neutral',
|
|
464
|
+
// QuickJS exposes a recent-ish JS surface but ECMAScript modules
|
|
465
|
+
// are handled by Javy's runtime — esbuild's `format: esm` output
|
|
466
|
+
// is what Javy expects.
|
|
467
|
+
mainFields: ['module', 'main'],
|
|
468
|
+
conditions: ['shopify_function', 'import', 'default'],
|
|
469
|
+
// See the legacy note below: in a STATIC Javy build `console.*`
|
|
470
|
+
// writes to STDOUT, corrupting the function's JSON output. Strip
|
|
471
|
+
// it for the legacy path.
|
|
472
|
+
...(drop ? { drop: ['console' as const] } : {}),
|
|
473
|
+
});
|
|
474
|
+
};
|
|
475
|
+
await bundle(false);
|
|
469
476
|
|
|
470
477
|
// Step 2: WIT + javy build.
|
|
471
478
|
const witPath = resolve(distDir, 'javy-world.wit');
|
|
472
479
|
writeFileSync(witPath, synthesizeWit(toml.targets), 'utf8');
|
|
473
480
|
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
481
|
+
// Legacy vs modern @shopify/shopify_function I/O — auto-detected from
|
|
482
|
+
// the BUNDLE, so we don't hard-code a runtime-version assumption.
|
|
483
|
+
//
|
|
484
|
+
// - Legacy (≤1.x, e.g. `@shopify/shopify_function@0.1.0`): its `/run`
|
|
485
|
+
// does `import * as fs from "javy/fs"`, whose read/writeFileSync
|
|
486
|
+
// call the GLOBAL `Javy.IO`. That global is supplied by Javy's OWN
|
|
487
|
+
// default provider, which is embedded only in a STATIC build. The
|
|
488
|
+
// Shopify Functions Javy plugin (v3, dynamic) REPLACES that
|
|
489
|
+
// provider with shopify-specific host imports and does NOT expose
|
|
490
|
+
// `Javy` — so a plugin build of legacy code traps at runtime with
|
|
491
|
+
// "'Javy' is not defined". Build it STATIC.
|
|
492
|
+
//
|
|
493
|
+
// - Modern (≥2.x): imports host functions the plugin provides and
|
|
494
|
+
// never touches the `Javy` global, so it NEEDS the dynamic plugin
|
|
495
|
+
// build (a static build lacks those host imports).
|
|
496
|
+
//
|
|
497
|
+
// function-runner runs either (self-contained static, or dynamic with
|
|
498
|
+
// the plugin it links). Detect by the literal `Javy.IO` the legacy
|
|
499
|
+
// shim emits into the bundle.
|
|
500
|
+
const usesLegacyJavyGlobal = /\bJavy\.IO\b/.test(readFileSync(bundledJs, 'utf8'));
|
|
501
|
+
|
|
502
|
+
const javy = await ensureJavy();
|
|
503
|
+
const javyArgs = ['build'];
|
|
504
|
+
if (usesLegacyJavyGlobal) {
|
|
505
|
+
console.log(` (legacy Javy.IO runtime → static build, no plugin)`);
|
|
506
|
+
// CRITICAL: Javy's default (static) provider routes `console.*` to
|
|
507
|
+
// STDOUT — which is also where the legacy `/run` writes the
|
|
508
|
+
// function's JSON result. The two interleave and function-runner
|
|
509
|
+
// then fails to parse stdout (sees `<log text>\n{json}` →
|
|
510
|
+
// "JSON Error"), yielding empty output. The Shopify plugin (modern
|
|
511
|
+
// path) routes console to logs instead; the static provider has no
|
|
512
|
+
// such redirect and no Javy flag toggles it. So re-bundle with
|
|
513
|
+
// `console` stripped to keep stdout clean. (Debug logs are lost in
|
|
514
|
+
// the legacy wasm — acceptable; they weren't captured anyway.)
|
|
515
|
+
await bundle(true);
|
|
516
|
+
// Enable the JS builtins the legacy runtime relies on: `/run` uses
|
|
517
|
+
// TextEncoder/TextDecoder, and we match the modern plugin's JS
|
|
518
|
+
// environment (SIMD JSON, the Javy stream-IO builtins, event loop).
|
|
519
|
+
javyArgs.push(
|
|
520
|
+
'-J', 'text-encoding=y',
|
|
521
|
+
'-J', 'simd-json-builtins=y',
|
|
522
|
+
'-J', 'javy-stream-io=y',
|
|
523
|
+
'-J', 'event-loop=y',
|
|
524
|
+
);
|
|
525
|
+
} else {
|
|
526
|
+
const plugin = await ensureJavyPlugin();
|
|
527
|
+
javyArgs.push('-C', 'dynamic', '-C', `plugin=${plugin}`);
|
|
528
|
+
}
|
|
529
|
+
javyArgs.push(
|
|
479
530
|
'-C', `wit=${witPath}`,
|
|
480
531
|
'-C', `wit-world=${JAVY_WORLD_NAME}`,
|
|
481
532
|
'-o', outputWasm,
|
|
482
533
|
bundledJs,
|
|
483
|
-
|
|
534
|
+
);
|
|
484
535
|
// `cwd: functionDir` so Javy resolves any relative paths in its
|
|
485
536
|
// diagnostics (it doesn't, AFAICT, but parity with the CLI is
|
|
486
537
|
// cheap).
|
|
@@ -55,6 +55,7 @@ import { homedir } from 'node:os';
|
|
|
55
55
|
import { dirname, resolve } from 'node:path';
|
|
56
56
|
import { fileURLToPath } from 'node:url';
|
|
57
57
|
import { pickApp, prepareOciArchive, envFileArgs, computeBuildHash } from '@essential-apps/shopify-test-core';
|
|
58
|
+
import { buildExtensions } from '../lib/buildExtensions.js';
|
|
58
59
|
|
|
59
60
|
const repoRoot = process.cwd();
|
|
60
61
|
|
|
@@ -271,6 +272,19 @@ async function main(): Promise<void> {
|
|
|
271
272
|
);
|
|
272
273
|
}
|
|
273
274
|
|
|
275
|
+
// ── Extension builds (theme / post-purchase / function) ──────
|
|
276
|
+
// Build the consuming app's theme app extension(s), post-purchase
|
|
277
|
+
// bundle, and discount function wasm FROM SOURCE — CLI-free — so a
|
|
278
|
+
// fresh clone has the artifacts the offline storefront + orchestrator
|
|
279
|
+
// inject (the widget's app-embed assets, the post-purchase bundle, the
|
|
280
|
+
// function .wasm). Without this, those are absent on a fresh clone and
|
|
281
|
+
// every storefront-widget / post-purchase / discount-function test
|
|
282
|
+
// fails. Same model as the app build above: builds into each
|
|
283
|
+
// extension's own gitignored output dir (read by the VM via the
|
|
284
|
+
// /workspace bind mount), per-extension source-hash gated. See
|
|
285
|
+
// buildExtensions.ts.
|
|
286
|
+
await buildExtensions({ repoRoot, force: forceBuild });
|
|
287
|
+
|
|
274
288
|
// Tarball-manifest written by `scripts/pack-into.sh` — a hash list
|
|
275
289
|
// of the vendored @essential-apps/* tarballs. Passed as an
|
|
276
290
|
// `extraFile` so its bytes fold into the snapshot's bake input-hash:
|