@commercetools/cli-topic-integration-layer 0.7.0 → 0.9.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,379 @@
1
+ // Local end-to-end debugging for commercetools API Extensions.
2
+ //
3
+ // `invoke-api-extension` fires a SYNTHETIC payload at a bundle's `apiExtensions`
4
+ // handlers offline. This command closes the loop the other way: it serves those
5
+ // handlers over HTTP and registers a commercetools API Extension that points at them,
6
+ // so a REAL cart/order write in the project calls the code on your machine — with a
7
+ // debugger attached, breakpoints, and hot-reload. It is the API-Extension analogue of
8
+ // `serve` (which does the same for the GraphQL subgraph).
9
+ //
10
+ // WHY A SEPARATE COMMAND (not a `serve --api-extensions` flag): unlike `serve` — a
11
+ // safe, login-free, purely LOCAL dev server — this command logs in and MUTATES the
12
+ // commercetools project (it registers, reconciles, and deletes API Extensions). Keeping
13
+ // it a distinct command makes that side effect an explicit, deliberate act: running
14
+ // `serve` can never register a callback in commercetools by accident.
15
+ //
16
+ // commercetools is in the cloud, so it must reach a PUBLIC https URL: run your own
17
+ // tunnel (e.g. `ngrok http 4000`, `cloudflared`) and pass its address as
18
+ // `--public-url`.
19
+ //
20
+ // MONOREPO: in a repo of `extensions/*` packages, `--all` serves + registers the ONE
21
+ // combined bundle a project deploys — every package's `apiExtensions` concatenated (the
22
+ // same shape as `serve --all` / `push --all`). Without it, the single `--entry` bundle.
23
+ //
24
+ // SAFETY MODEL (deliberately strict — these callbacks make commercetools call YOUR
25
+ // laptop before persisting a write):
26
+ // - It REFUSES to run if the project already has an API Extension that triggers on the
27
+ // SAME resource + action this bundle would register — a collision it must never
28
+ // disturb (and one commercetools rejects anyway). Unrelated Extensions are left
29
+ // untouched. Prefer a dedicated dev/sandbox project regardless.
30
+ // - Everything it creates is keyed under `il-localdev-` and DELETED on exit.
31
+ // - `--cleanup` sweeps leftovers from a previous run that crashed before cleanup.
32
+ import { createServer } from "node:http";
33
+ import { readFile } from "node:fs/promises";
34
+ import process from "node:process";
35
+ import { Flags } from "@oclif/core";
36
+ import { context as esbuildContext } from "esbuild";
37
+ import { buildBundle, defaultEntry, defaultOutfile, HOST_PROVIDED_EXTERNALS, } from "../../../lib/tooling/build.js";
38
+ import { loadBundleSource } from "../../../lib/tooling/loadBundle.js";
39
+ import { discoverExtensions, entrySegmentFor, } from "../../../lib/tooling/extensions.js";
40
+ import { extractApiExtensions } from "../../../lib/tooling/apiExtensionDispatch.js";
41
+ import { createApiExtensionHandler } from "../../../lib/apiExtensionServer.js";
42
+ import { createExtension, ctApiBaseUrl, deleteExtension, draftFor, findTriggerCollisions, isManagedKey, listExtensions, managedKey, MANAGED_KEY_PREFIX, planReconcile, triggerSignature, } from "../../../lib/ctExtensions.js";
43
+ import { extensionConfigFromEnv, extensionConfigFromPairs } from "../../../lib/extensionConfig.js";
44
+ import { IntegrationLayerCommand } from "../../../lib/base.js";
45
+ export default class ExtensionServeApiExtension extends IntegrationLayerCommand {
46
+ static description = "Serve a bundle's API-Extension handlers locally and register a commercetools API Extension at them, so real writes hit your machine for end-to-end debugging";
47
+ static examples = [
48
+ "<%= config.bin %> integration-layer extension serve-api-extension --public-url https://abc123.ngrok.app",
49
+ "<%= config.bin %> integration-layer extension serve-api-extension --public-url https://abc123.ngrok.app --port 4000 --config MAX_LINE_QUANTITY=10",
50
+ "<%= config.bin %> integration-layer extension serve-api-extension --all --public-url https://abc123.ngrok.app",
51
+ "<%= config.bin %> integration-layer extension serve-api-extension --cleanup",
52
+ ];
53
+ static flags = {
54
+ "public-url": Flags.string({
55
+ description: "the PUBLIC https base URL of a tunnel to this machine (e.g. from `ngrok http <port>`); commercetools calls `<public-url>/api-extensions`",
56
+ }),
57
+ port: Flags.integer({ char: "p", description: "local port to listen on", default: 4000 }),
58
+ entry: Flags.string({
59
+ description: "extension entry source file (with --all: the per-package source segment applied under each ./extensions/*)",
60
+ default: defaultEntry(),
61
+ }),
62
+ out: Flags.string({ description: "bundle output file", default: defaultOutfile() }),
63
+ all: Flags.boolean({
64
+ description: "serve + register the ONE combined bundle merged from every extension under ./extensions/* (the deployed shape)",
65
+ default: false,
66
+ }),
67
+ "extensions-dir": Flags.string({
68
+ description: "directory holding the extension packages (used with --all)",
69
+ default: "extensions",
70
+ }),
71
+ config: Flags.string({
72
+ description: "a ctx.config entry as KEY=VALUE (repeatable); overrides EXTENSION_CONFIG_* from the environment / .env",
73
+ multiple: true,
74
+ delimiter: ",",
75
+ }),
76
+ cleanup: Flags.boolean({
77
+ description: "remove any leftover `il-localdev-*` API Extensions from a previous run and exit (does not serve)",
78
+ default: false,
79
+ }),
80
+ };
81
+ async run() {
82
+ const { flags } = await this.parse(ExtensionServeApiExtension);
83
+ const principal = this.requirePrincipal();
84
+ const projectKey = flags["project-key"] ?? principal.getProjectKey();
85
+ if (!projectKey) {
86
+ this.error("no project key — log in with `commercetools auth login --project-key <key>` or pass --project-key");
87
+ }
88
+ const apiBaseUrl = ctApiBaseUrl(principal.getRegion());
89
+ const authFetch = this.authFetch;
90
+ if (flags.cleanup) {
91
+ await this.cleanupLeftovers(apiBaseUrl, projectKey, authFetch);
92
+ return;
93
+ }
94
+ const publicUrl = flags["public-url"]?.replace(/\/+$/, "");
95
+ if (!publicUrl) {
96
+ this.error("--public-url is required: start a tunnel to this machine (e.g. `ngrok http " +
97
+ `${flags.port}\`) and pass its https address`);
98
+ }
99
+ let parsedPublic;
100
+ try {
101
+ parsedPublic = new URL(publicUrl);
102
+ }
103
+ catch {
104
+ this.error(`--public-url is not a valid URL: ${publicUrl}`);
105
+ }
106
+ if (parsedPublic.protocol !== "https:") {
107
+ this.warn(`--public-url is not https (${parsedPublic.protocol}) — commercetools requires a reachable HTTPS destination in most projects`);
108
+ }
109
+ const callbackUrl = `${publicUrl}/api-extensions`;
110
+ // ctx.config from EXTENSION_CONFIG_* / .env, with explicit --config winning (there
111
+ // is no Commerce Integration Layer to read the project's stored config from).
112
+ const config = {
113
+ ...extensionConfigFromEnv(),
114
+ ...extensionConfigFromPairs(flags.config ?? []),
115
+ };
116
+ const makeCtx = () => ({ now: () => Date.now(), config });
117
+ // Initial build so we can validate the bundle declares handlers, learn the
118
+ // resource/action triggers it wants, and register them BEFORE opening a port. One
119
+ // entry, or — with --all — every extensions/* package built and concatenated into the
120
+ // one combined bundle a project deploys. `modules` holds each package's handlers by
121
+ // name so a hot-reload can recompute the combined set cheaply.
122
+ const root = process.cwd();
123
+ const modules = new Map();
124
+ let extensions = [];
125
+ if (flags.all) {
126
+ const entrySegment = entrySegmentFor(root, flags.entry);
127
+ extensions = await discoverExtensions(root, flags["extensions-dir"], entrySegment);
128
+ if (extensions.length === 0) {
129
+ this.error(`no extensions found under ./${flags["extensions-dir"]}/*/${entrySegment} — run --all from the monorepo root`);
130
+ }
131
+ for (const ext of extensions) {
132
+ await buildBundle(ext.entry, ext.outfile);
133
+ modules.set(ext.name, extractApiExtensions(loadBundleSource(await readFile(ext.outfile, "utf8"))));
134
+ }
135
+ }
136
+ else {
137
+ modules.set(flags.entry, await this.buildOnce(flags.entry, flags.out));
138
+ }
139
+ let current;
140
+ try {
141
+ current = this.combineApiExtensions(modules);
142
+ }
143
+ catch (err) {
144
+ this.error(err.message);
145
+ }
146
+ if (current.length === 0) {
147
+ this.error(flags.all
148
+ ? `no extension under ./${flags["extensions-dir"]}/* declares \`apiExtensions\` — nothing to serve`
149
+ : "this bundle declares no `apiExtensions` — nothing to serve (author them with `defineApiExtension`)");
150
+ }
151
+ // Refuse ONLY on a real collision: an existing Extension that triggers on the same
152
+ // resource + action this bundle would register (commercetools allows one Extension
153
+ // per resource/action, and we must never disturb a real one). Unrelated Extensions
154
+ // are fine and left untouched. See the SAFETY MODEL note.
155
+ const collisions = findTriggerCollisions(await listExtensions(apiBaseUrl, projectKey, authFetch), current);
156
+ if (collisions.length > 0) {
157
+ const detail = collisions
158
+ .map((c) => `'${c.key ?? c.id}' on ${c.resourceTypeId}/${c.actions.join(",")}`)
159
+ .join("; ");
160
+ const hint = collisions.some((c) => isManagedKey(c.key))
161
+ ? " Some are leftovers from a previous run (`il-localdev-*`) — clear them with `--cleanup`."
162
+ : "";
163
+ this.error(`project '${projectKey}' already has an API Extension that triggers on a resource/action ` +
164
+ `this bundle would register: ${detail}. Refusing to register so it can never disturb that ` +
165
+ `Extension (commercetools also rejects overlapping triggers).${hint}`);
166
+ }
167
+ // Start listening BEFORE registering, so the destination is live the instant
168
+ // commercetools learns about it.
169
+ const registered = [];
170
+ const server = createServer(createApiExtensionHandler({
171
+ makeCtx,
172
+ handlers: () => current,
173
+ onDispatch: (summary) => this.log(`→ ${summary}`),
174
+ onError: (err) => this.warn(`handler threw: ${err.message}`),
175
+ }));
176
+ await new Promise((resolve, reject) => {
177
+ server.once("error", reject);
178
+ server.listen(flags.port, resolve);
179
+ }).catch((err) => this.error(`could not listen on port ${flags.port}: ${err.message}`));
180
+ await this.reconcile(apiBaseUrl, projectKey, authFetch, callbackUrl, registered, current);
181
+ // Hot-reload: rebuild on every source edit, swap the live handlers, and reconcile
182
+ // the registered Extensions if the trigger shapes changed (a handler-body edit
183
+ // needs no commercetools round trip). --all watches every package and re-concatenates.
184
+ const applyReload = async (label) => {
185
+ let next;
186
+ try {
187
+ next = this.combineApiExtensions(modules);
188
+ }
189
+ catch (err) {
190
+ this.warn(`${err.message} — keeping the previous handlers`);
191
+ return;
192
+ }
193
+ if (next.length === 0) {
194
+ this.warn("reloaded extensions declare no `apiExtensions` — keeping the previous handlers");
195
+ return;
196
+ }
197
+ current = next;
198
+ try {
199
+ await this.reconcile(apiBaseUrl, projectKey, authFetch, callbackUrl, registered, current);
200
+ }
201
+ catch (err) {
202
+ this.warn(`could not update registered Extensions: ${err.message}`);
203
+ }
204
+ this.log(`✓ reloaded ${label}`);
205
+ };
206
+ const watchers = [];
207
+ if (flags.all) {
208
+ for (const ext of extensions) {
209
+ watchers.push(await this.watchEntry(ext.entry, ext.outfile, async (mod) => {
210
+ modules.set(ext.name, extractApiExtensions(mod));
211
+ await applyReload(ext.name);
212
+ }));
213
+ }
214
+ }
215
+ else {
216
+ watchers.push(await this.watchEntry(flags.entry, flags.out, async (mod) => {
217
+ modules.set(flags.entry, extractApiExtensions(mod));
218
+ await applyReload(flags.entry);
219
+ }));
220
+ }
221
+ this.log([
222
+ `\n🔌 API-Extension debug server for '${projectKey}' live:`,
223
+ ` local http://localhost:${flags.port}/api-extensions`,
224
+ ` public ${callbackUrl}`,
225
+ ` handlers ${current.map((h) => `${h.key} (${h.resourceTypeId}/${h.actions.join(",")})`).join(", ")}`,
226
+ flags.all
227
+ ? ` watching ${extensions.length} extension(s): ${extensions.map((e) => e.name).join(", ")} — edit and save to hot-reload`
228
+ : ` watching ${flags.entry} — edit and save to hot-reload`,
229
+ " do a matching cart/order write in the project; Ctrl-C to deregister and exit\n",
230
+ ].join("\n"));
231
+ let shuttingDown = false;
232
+ const shutdown = async () => {
233
+ if (shuttingDown)
234
+ return;
235
+ shuttingDown = true;
236
+ this.log("\nDeregistering API Extensions and shutting down …");
237
+ await this.cleanupLeftovers(apiBaseUrl, projectKey, authFetch).catch((err) => this.warn(`could not remove every registered Extension (${err.message}) — run \`--cleanup\` to finish`));
238
+ await Promise.all(watchers.map((w) => w.dispose().catch(() => { })));
239
+ server.close(() => process.exit(0));
240
+ };
241
+ process.on("SIGINT", () => void shutdown());
242
+ process.on("SIGTERM", () => void shutdown());
243
+ // Keep the process alive; the server + esbuild watcher run until a signal.
244
+ await new Promise(() => { });
245
+ }
246
+ /** Apply {@link planReconcile}: delete superseded/removed Extensions, create new ones. */
247
+ async reconcile(apiBaseUrl, projectKey, authFetch, callbackUrl, registered, desired) {
248
+ const plan = planReconcile(registered, desired);
249
+ for (const reg of plan.toDelete) {
250
+ await deleteExtension(apiBaseUrl, projectKey, authFetch, reg.id, reg.version);
251
+ const idx = registered.findIndex((r) => r.authorKey === reg.authorKey && r.id === reg.id);
252
+ if (idx >= 0)
253
+ registered.splice(idx, 1);
254
+ this.log(` − deregistered '${managedKey(reg.authorKey)}'`);
255
+ }
256
+ for (const decl of plan.toCreate) {
257
+ const created = await createExtension(apiBaseUrl, projectKey, authFetch, draftFor(decl, callbackUrl));
258
+ const entry = {
259
+ authorKey: decl.key,
260
+ id: created.id,
261
+ version: created.version,
262
+ signature: triggerSignature(decl),
263
+ };
264
+ const idx = registered.findIndex((r) => r.authorKey === decl.key);
265
+ if (idx >= 0)
266
+ registered[idx] = entry;
267
+ else
268
+ registered.push(entry);
269
+ this.log(` + registered '${created.key ?? managedKey(decl.key)}' → ${callbackUrl} (${decl.resourceTypeId}/${decl.actions.join(",")})`);
270
+ }
271
+ }
272
+ /** Delete every `il-localdev-*` Extension currently on the project (best-effort). */
273
+ async cleanupLeftovers(apiBaseUrl, projectKey, authFetch) {
274
+ const managed = (await listExtensions(apiBaseUrl, projectKey, authFetch)).filter((e) => isManagedKey(e.key));
275
+ if (managed.length === 0) {
276
+ this.log(`No \`${MANAGED_KEY_PREFIX}*\` API Extensions to remove on '${projectKey}'.`);
277
+ return;
278
+ }
279
+ for (const e of managed) {
280
+ try {
281
+ await deleteExtension(apiBaseUrl, projectKey, authFetch, e.id, e.version);
282
+ this.log(` − removed '${e.key}'`);
283
+ }
284
+ catch (err) {
285
+ this.warn(`could not remove '${e.key}': ${err.message}`);
286
+ }
287
+ }
288
+ }
289
+ /**
290
+ * Concatenate every package's `apiExtensions` into the one set a project deploys (the
291
+ * same flatMap `buildCombinedBundle` does), rejecting a key declared by two different
292
+ * extensions: a project ships one bundle, so each API-Extension key — and thus its
293
+ * `il-localdev-` registration — must be unique across packages.
294
+ */
295
+ combineApiExtensions(modules) {
296
+ const combined = [];
297
+ const owner = new Map();
298
+ for (const [name, defs] of modules) {
299
+ for (const def of defs) {
300
+ const prev = owner.get(def.key);
301
+ if (prev !== undefined && prev !== name) {
302
+ throw new Error(`extensions '${prev}' and '${name}' both declare an API Extension keyed '${def.key}' — each API-Extension key must be unique across extensions`);
303
+ }
304
+ owner.set(def.key, name);
305
+ combined.push(def);
306
+ }
307
+ }
308
+ return combined;
309
+ }
310
+ /** One-shot build + load; returns the bundle's declared handlers. */
311
+ async buildOnce(entry, outfile) {
312
+ await buildBundle(entry, outfile);
313
+ return extractApiExtensions(loadBundleSource(await readFile(outfile, "utf8")));
314
+ }
315
+ /**
316
+ * esbuild-watch `entry`; on every successful (re)build load the bundle and hand the
317
+ * raw module to `onReload`. Resolves once the first build completes. Mirrors the
318
+ * `serve` command's watcher, with the same bundle options as `buildBundle`.
319
+ */
320
+ async watchEntry(entry, outfile, onReload) {
321
+ const warn = (m) => {
322
+ this.warn(m);
323
+ };
324
+ let firstBuildDone;
325
+ const firstBuild = new Promise((resolve) => {
326
+ firstBuildDone = resolve;
327
+ });
328
+ let isFirstBuild = true;
329
+ const ctx = await esbuildContext({
330
+ entryPoints: [entry],
331
+ outfile,
332
+ bundle: true,
333
+ format: "cjs",
334
+ platform: "neutral",
335
+ target: "node22",
336
+ conditions: ["worker"],
337
+ mainFields: ["module", "main"],
338
+ external: HOST_PROVIDED_EXTERNALS,
339
+ logLevel: "silent",
340
+ plugins: [
341
+ {
342
+ name: "il-serve-api-extension-reload",
343
+ setup(build) {
344
+ build.onEnd(async (result) => {
345
+ try {
346
+ if (result.errors.length > 0) {
347
+ warn("✗ build failed — fix the error and save again");
348
+ for (const e of result.errors)
349
+ warn(` ${e.text}`);
350
+ return;
351
+ }
352
+ // Skip the very first build's reload: the caller already loaded the
353
+ // one-shot build and reconciled from it, so re-running would be a no-op.
354
+ if (isFirstBuild)
355
+ return;
356
+ try {
357
+ await onReload(loadBundleSource(await readFile(outfile, "utf8")));
358
+ }
359
+ catch (err) {
360
+ warn(`✗ reload failed: ${err.message}`);
361
+ }
362
+ }
363
+ finally {
364
+ if (isFirstBuild) {
365
+ isFirstBuild = false;
366
+ firstBuildDone();
367
+ }
368
+ }
369
+ });
370
+ },
371
+ },
372
+ ],
373
+ });
374
+ await ctx.watch();
375
+ await firstBuild;
376
+ return ctx;
377
+ }
378
+ }
379
+ //# sourceMappingURL=serve-api-extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve-api-extension.js","sourceRoot":"","sources":["../../../../src/commands/integration-layer/extension/serve-api-extension.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,12 @@
12
12
  // local extension + the deployed Commerce Integration Layer.
13
13
  // --compose/--gateway reach the Commerce Integration Layer, so they need the auth flags/env
14
14
  // (ilFlags); --gateway also mints an anonymous session for its calls.
15
+ //
16
+ // This serves only the bundle's GraphQL subgraph. The bundle's API-Extension handlers
17
+ // are served by the sibling `serve-api-extension` command, kept separate ON PURPOSE:
18
+ // that command logs in and registers a callback in commercetools, so isolating it keeps
19
+ // `serve` a safe, login-free local server that can never register anything in
20
+ // commercetools by accident.
15
21
  import { createServer } from "node:http";
16
22
  import { readFile } from "node:fs/promises";
17
23
  import process from "node:process";
@@ -1 +1 @@
1
- {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../../src/commands/integration-layer/extension/serve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../../src/commands/integration-layer/extension/serve.ts"],"names":[],"mappings":"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"}
@@ -3,9 +3,10 @@ import { basename, join, resolve } from "node:path";
3
3
  import { Args, Command, Flags } from "@oclif/core";
4
4
  // `init` scaffolds a MONOREPO you own and grow — a pnpm workspace whose members are
5
5
  // individual extensions (`extensions/*`), seeded with one buildable hello-world
6
- // extension that extends `Query`. The build/validate/push flow itself lives in this
7
- // published CLI plugin, not in the scaffold, so an extension package stays tiny (just
8
- // `src/extension.ts` + a thin package.json/tsconfig). Everything is vendored inline —
6
+ // extension that extends `Query` and a colocated Vitest test that exercises its
7
+ // resolver. The build/validate/push flow itself lives in this published CLI plugin,
8
+ // not in the scaffold, so an extension package stays tiny (just `src/extension.ts` +
9
+ // its `*.test.ts` + a thin package.json/tsconfig). Everything is vendored inline —
9
10
  // no network fetch — and kept dependency-light so the extension commands work on it
10
11
  // out of the box. The `basic` template is the only one today.
11
12
  /** Derive a valid npm package name from the scaffold directory (fallback: a generic one). */
@@ -31,6 +32,7 @@ function templateFiles(projectName) {
31
32
  "build": "commercetools integration-layer extension build --all",
32
33
  "typecheck": "pnpm -r typecheck",
33
34
  "lint": "eslint .",
35
+ "test": "pnpm -r test",
34
36
  "dev": "commercetools integration-layer extension serve --all",
35
37
  "validate": "commercetools integration-layer extension validate --all",
36
38
  "push": "commercetools integration-layer extension push --all"
@@ -127,20 +129,26 @@ pnpm install
127
129
  # From the repo root — these operate on the ONE combined bundle:
128
130
  pnpm dev # serve the merged subgraph behind a local federated gateway with the
129
131
  # Commerce Integration Layer, at http://localhost:4000/graphql. Needs a login.
132
+ pnpm test # run every extension's unit tests (Vitest) — no login, no network
130
133
  pnpm validate # compose the combined bundle against your live schema (no upload)
131
134
  pnpm push # validate + upload it (replacing the Project's current bundle)
132
135
 
133
136
  # …or iterate on one extension in isolation (standalone subgraph, no login needed):
134
137
  pnpm --filter @extensions/hello-world dev
138
+ pnpm --filter @extensions/hello-world test
135
139
  \`\`\`
136
140
 
141
+ Resolvers, hooks, and API-extension handlers are plain functions, so you unit-test them
142
+ by calling them directly — see \`extensions/hello-world/src/extension.test.ts\` for the
143
+ pattern (a minimal fake for the host context, no gateway required).
144
+
137
145
  With \`pnpm dev\` running, \`/graphql\` is the gateway, \`/_extension\` the raw combined
138
146
  subgraph, and \`/composed\` the browsable merged schema.
139
147
 
140
148
  To add an extension, copy \`extensions/hello-world\`, rename it in its \`package.json\`,
141
- and edit its \`src/extension.ts\` — the root scripts discover it automatically. Two
142
- extensions can each add fields to \`Query\`; they only clash if they declare the *same*
143
- field.
149
+ and edit its \`src/extension.ts\` (and the colocated \`src/extension.test.ts\`) — the root
150
+ scripts discover it automatically. Two extensions can each add fields to \`Query\`; they
151
+ only clash if they declare the *same* field.
144
152
 
145
153
  Optionally copy \`.env.example\` to \`.env\` to override the Commerce Integration Layer edge URL.
146
154
 
@@ -161,11 +169,13 @@ Optionally copy \`.env.example\` to \`.env\` to override the Commerce Integratio
161
169
  "scripts": {
162
170
  "build": "commercetools integration-layer extension build",
163
171
  "dev": "commercetools integration-layer extension serve",
164
- "typecheck": "tsc --noEmit"
172
+ "typecheck": "tsc --noEmit",
173
+ "test": "vitest run"
165
174
  },
166
175
  "devDependencies": {
167
176
  "@types/node": "^22.20.1",
168
- "typescript": "~6.0.3"
177
+ "typescript": "~6.0.3",
178
+ "vitest": "^4.1.8"
169
179
  }
170
180
  }
171
181
  `,
@@ -223,6 +233,43 @@ export const resolvers = {
223
233
  },
224
234
  },
225
235
  };
236
+ `,
237
+ "extensions/hello-world/src/extension.test.ts": `/**
238
+ * A resolver is a plain function, so you test it by calling it directly — no gateway,
239
+ * no network, no login. \`pnpm test\` runs this (Vitest) both here and, from the repo
240
+ * root, across every extension. Copy this file alongside your own \`extension.ts\` and
241
+ * assert what your resolvers/hooks/API-extension handlers return.
242
+ *
243
+ * The restricted runtime hands each resolver a context (\`now()\` + the project's
244
+ * \`config\` map). Tests stand in a minimal fake for it — see \`ctx\` below.
245
+ */
246
+
247
+ import { describe, expect, it } from "vitest";
248
+ import { resolvers } from "./extension.js";
249
+
250
+ // A minimal stand-in for the host-provided ExtensionContext. Pass a \`config\` to
251
+ // exercise merchant-supplied settings (e.g. \`GREETING\`).
252
+ const ctx = (config: Record<string, string> = {}) => ({ now: () => Date.now(), config });
253
+
254
+ describe("hello-world extension", () => {
255
+ it("greets the world by default", () => {
256
+ expect(resolvers.Query.hello({}, {}, ctx())).toBe(
257
+ "Hello, world, from your integration-layer extension!",
258
+ );
259
+ });
260
+
261
+ it("greets a named visitor", () => {
262
+ expect(resolvers.Query.hello({}, { name: "Ada" }, ctx())).toBe(
263
+ "Hello, Ada, from your integration-layer extension!",
264
+ );
265
+ });
266
+
267
+ it("honours the GREETING config override set per project", () => {
268
+ expect(resolvers.Query.hello({}, { name: "Ada" }, ctx({ GREETING: "Hi" }))).toBe(
269
+ "Hi, Ada, from your integration-layer extension!",
270
+ );
271
+ });
272
+ });
226
273
  `,
227
274
  };
228
275
  }
@@ -271,6 +318,7 @@ export default class Init extends Command {
271
318
  if (dir !== ".")
272
319
  this.log(` cd ${dir}`);
273
320
  this.log(" pnpm install");
321
+ this.log(" pnpm test # run the hello-world extension's unit tests");
274
322
  this.log(" pnpm dev # run the hello-world extension locally");
275
323
  }
276
324
  }