@commercetools/cli-topic-integration-layer 0.8.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 @@
1
+ {"version":3,"file":"apiExtensionServer.js","sourceRoot":"","sources":["../../src/lib/apiExtensionServer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ import type { ApiExtensionDefinition } from "./tooling/apiExtension.js";
2
+ /**
3
+ * The authenticated fetch supplied by the command layer — the `CtpAuthFetchFactory`
4
+ * fetch, which injects the `manage_project` bearer and refreshes/retries it.
5
+ * Structurally a `fetch`, so callers can pass a plain stub in tests.
6
+ */
7
+ export type AuthFetch = typeof fetch;
8
+ /** The commercetools platform API base for a login region (e.g. `eu-central-1.aws`). */
9
+ export declare function ctApiBaseUrl(region: string): string;
10
+ /** Every Extension `serve-api-extension` creates is keyed under this prefix, so it can
11
+ * find and remove exactly (and only) its own, and never touch a real one. */
12
+ export declare const MANAGED_KEY_PREFIX = "il-localdev-";
13
+ /** The commercetools Extension key for one of the bundle's declarations. */
14
+ export declare function managedKey(authorKey: string): string;
15
+ /** Whether an Extension key was created by this command (safe to delete on cleanup). */
16
+ export declare function isManagedKey(key: string | undefined): boolean;
17
+ export interface ExtensionTrigger {
18
+ resourceTypeId: string;
19
+ actions: string[];
20
+ condition?: string;
21
+ }
22
+ /** The commercetools ExtensionDraft body — an HTTP destination plus the triggers
23
+ * derived from one bundle declaration. */
24
+ export interface ExtensionDraft {
25
+ key: string;
26
+ destination: {
27
+ type: "HTTP";
28
+ url: string;
29
+ };
30
+ triggers: ExtensionTrigger[];
31
+ }
32
+ /** One Extension as returned by commercetools (trimmed to what we reference). */
33
+ export interface ExtensionSummary {
34
+ id: string;
35
+ key?: string;
36
+ version: number;
37
+ /** The resource/action triggers, used to detect collisions with what we'd register. */
38
+ triggers?: ExtensionTrigger[];
39
+ }
40
+ /** A resource/action overlap between an existing Extension and a declaration we'd register. */
41
+ export interface TriggerCollision {
42
+ /** The existing Extension's key (undefined if it has none). */
43
+ key?: string;
44
+ /** The existing Extension's id. */
45
+ id: string;
46
+ /** The resource type both trigger on. */
47
+ resourceTypeId: string;
48
+ /** The action(s) they share. */
49
+ actions: string[];
50
+ }
51
+ /**
52
+ * Find where the project's EXISTING Extensions would collide with what we're about to
53
+ * register — an existing trigger on the SAME `resourceTypeId` that shares at least one
54
+ * `action` with one of our declarations. commercetools allows only one Extension per
55
+ * resource+action, so `serve-api-extension` registers only when there is no overlap; an
56
+ * unrelated Extension (a different resource, or non-overlapping actions) is left
57
+ * untouched. Pure, so it's unit-tested directly.
58
+ */
59
+ export declare function findTriggerCollisions(existing: readonly ExtensionSummary[], desired: readonly ApiExtensionDefinition[]): TriggerCollision[];
60
+ /**
61
+ * Build the commercetools ExtensionDraft for one declaration: destination = the local
62
+ * server's public `/api-extensions` URL. No destination authentication — this is a
63
+ * throwaway local debug callback behind an ephemeral tunnel, kept deliberately simple.
64
+ */
65
+ export declare function draftFor(decl: ApiExtensionDefinition, callbackUrl: string): ExtensionDraft;
66
+ /**
67
+ * A stable fingerprint of a declaration's TRIGGER shape (resource + actions +
68
+ * condition). The reconcile step recreates an Extension only when this changes; a
69
+ * handler-body edit leaves it identical, so no commercetools round trip is needed.
70
+ */
71
+ export declare function triggerSignature(decl: ApiExtensionDefinition): string;
72
+ /** An Extension this command created and is tracking, so it can update/delete it. */
73
+ export interface RegisteredExtension {
74
+ /** The author's declaration key (unprefixed). */
75
+ authorKey: string;
76
+ /** The commercetools resource id (needed to delete). */
77
+ id: string;
78
+ /** The current commercetools version (needed to delete). */
79
+ version: number;
80
+ /** {@link triggerSignature} at the time it was created. */
81
+ signature: string;
82
+ }
83
+ export interface ReconcilePlan {
84
+ /** Declarations to (re)create — new, or whose trigger shape changed. */
85
+ toCreate: ApiExtensionDefinition[];
86
+ /** Registered Extensions to delete — gone, or superseded by a changed one. */
87
+ toDelete: RegisteredExtension[];
88
+ }
89
+ /**
90
+ * Diff what we've registered against the bundle's current declarations. Pure so it's
91
+ * unit-tested directly. An Extension whose trigger signature changed appears in BOTH
92
+ * lists (delete the stale one, create the new one); a handler-only edit appears in
93
+ * neither.
94
+ */
95
+ export declare function planReconcile(registered: readonly RegisteredExtension[], desired: readonly ApiExtensionDefinition[]): ReconcilePlan;
96
+ /** List the project's Extensions (one page; enough for the "refuse if any present"
97
+ * guard and for sweeping our own leftovers). */
98
+ export declare function listExtensions(apiBaseUrl: string, projectKey: string, authFetch: AuthFetch, limit?: number): Promise<ExtensionSummary[]>;
99
+ /** Create one Extension; returns its id + version (needed to delete it later). */
100
+ export declare function createExtension(apiBaseUrl: string, projectKey: string, authFetch: AuthFetch, draft: ExtensionDraft): Promise<ExtensionSummary>;
101
+ /** Delete one Extension by id + version (idempotent: a 404 is treated as done). */
102
+ export declare function deleteExtension(apiBaseUrl: string, projectKey: string, authFetch: AuthFetch, id: string, version: number): Promise<void>;
@@ -0,0 +1,162 @@
1
+ // Minimal client for the commercetools Composable Commerce **API Extensions**
2
+ // resource (`/{projectKey}/extensions`), used ONLY by `serve-api-extension` to point
3
+ // a project at a locally-served bundle for end-to-end debugging.
4
+ //
5
+ // Unlike `ilClient.ts` (which talks to the Commerce Integration Layer edge), this
6
+ // talks to the commercetools platform API directly — the same authenticated fetch
7
+ // carries a real `manage_project` bearer, so nothing here sets an Authorization
8
+ // header itself. The commercetools API host follows the same `<svc>.<region>` scheme
9
+ // as the auth/connect hosts (`api.<region>.commercetools.com`); the region comes
10
+ // from the logged-in principal.
11
+ //
12
+ // SAFETY MODEL: this registers callbacks that make commercetools call the developer's
13
+ // machine, so it is intentionally conservative. `serve-api-extension` REFUSES to run
14
+ // when an existing Extension collides with the resource/action it would register (see
15
+ // `findTriggerCollisions`) so it can never disturb a real one; unrelated Extensions are
16
+ // left untouched. It owns everything it creates under the `il-localdev-` key prefix and
17
+ // deletes what it created on exit. This module supplies the pure, unit-tested pieces of
18
+ // that contract (key/draft/reconcile/collision) plus the three REST calls.
19
+ /** The commercetools platform API base for a login region (e.g. `eu-central-1.aws`). */
20
+ export function ctApiBaseUrl(region) {
21
+ const trimmed = region.trim();
22
+ if (!trimmed) {
23
+ throw new Error("no commercetools region on the login — run `commercetools auth login --project-key <key>`");
24
+ }
25
+ return `https://api.${trimmed}.commercetools.com`;
26
+ }
27
+ /** Every Extension `serve-api-extension` creates is keyed under this prefix, so it can
28
+ * find and remove exactly (and only) its own, and never touch a real one. */
29
+ export const MANAGED_KEY_PREFIX = "il-localdev-";
30
+ /** The commercetools Extension key for one of the bundle's declarations. */
31
+ export function managedKey(authorKey) {
32
+ return `${MANAGED_KEY_PREFIX}${authorKey}`;
33
+ }
34
+ /** Whether an Extension key was created by this command (safe to delete on cleanup). */
35
+ export function isManagedKey(key) {
36
+ return typeof key === "string" && key.startsWith(MANAGED_KEY_PREFIX);
37
+ }
38
+ /**
39
+ * Find where the project's EXISTING Extensions would collide with what we're about to
40
+ * register — an existing trigger on the SAME `resourceTypeId` that shares at least one
41
+ * `action` with one of our declarations. commercetools allows only one Extension per
42
+ * resource+action, so `serve-api-extension` registers only when there is no overlap; an
43
+ * unrelated Extension (a different resource, or non-overlapping actions) is left
44
+ * untouched. Pure, so it's unit-tested directly.
45
+ */
46
+ export function findTriggerCollisions(existing, desired) {
47
+ const wantedActionsByResource = new Map();
48
+ for (const d of desired) {
49
+ const set = wantedActionsByResource.get(d.resourceTypeId) ?? new Set();
50
+ for (const a of d.actions)
51
+ set.add(a);
52
+ wantedActionsByResource.set(d.resourceTypeId, set);
53
+ }
54
+ const collisions = [];
55
+ for (const ext of existing) {
56
+ for (const trigger of ext.triggers ?? []) {
57
+ const wanted = wantedActionsByResource.get(trigger.resourceTypeId);
58
+ if (!wanted)
59
+ continue;
60
+ const shared = trigger.actions.filter((a) => wanted.has(a));
61
+ if (shared.length > 0) {
62
+ collisions.push({
63
+ key: ext.key,
64
+ id: ext.id,
65
+ resourceTypeId: trigger.resourceTypeId,
66
+ actions: shared,
67
+ });
68
+ }
69
+ }
70
+ }
71
+ return collisions;
72
+ }
73
+ /**
74
+ * Build the commercetools ExtensionDraft for one declaration: destination = the local
75
+ * server's public `/api-extensions` URL. No destination authentication — this is a
76
+ * throwaway local debug callback behind an ephemeral tunnel, kept deliberately simple.
77
+ */
78
+ export function draftFor(decl, callbackUrl) {
79
+ return {
80
+ key: managedKey(decl.key),
81
+ destination: {
82
+ type: "HTTP",
83
+ url: callbackUrl,
84
+ },
85
+ triggers: [
86
+ {
87
+ resourceTypeId: decl.resourceTypeId,
88
+ actions: [...decl.actions],
89
+ ...(decl.condition !== undefined ? { condition: decl.condition } : {}),
90
+ },
91
+ ],
92
+ };
93
+ }
94
+ /**
95
+ * A stable fingerprint of a declaration's TRIGGER shape (resource + actions +
96
+ * condition). The reconcile step recreates an Extension only when this changes; a
97
+ * handler-body edit leaves it identical, so no commercetools round trip is needed.
98
+ */
99
+ export function triggerSignature(decl) {
100
+ return JSON.stringify({
101
+ resourceTypeId: decl.resourceTypeId,
102
+ actions: [...decl.actions].sort(),
103
+ condition: decl.condition ?? null,
104
+ });
105
+ }
106
+ /**
107
+ * Diff what we've registered against the bundle's current declarations. Pure so it's
108
+ * unit-tested directly. An Extension whose trigger signature changed appears in BOTH
109
+ * lists (delete the stale one, create the new one); a handler-only edit appears in
110
+ * neither.
111
+ */
112
+ export function planReconcile(registered, desired) {
113
+ const registeredByKey = new Map(registered.map((r) => [r.authorKey, r]));
114
+ const desiredByKey = new Map(desired.map((d) => [d.key, d]));
115
+ const toCreate = desired.filter((d) => {
116
+ const existing = registeredByKey.get(d.key);
117
+ return !existing || existing.signature !== triggerSignature(d);
118
+ });
119
+ const toDelete = registered.filter((r) => {
120
+ const want = desiredByKey.get(r.authorKey);
121
+ return !want || triggerSignature(want) !== r.signature;
122
+ });
123
+ return { toCreate, toDelete };
124
+ }
125
+ function extensionsUrl(base, projectKey) {
126
+ return `${base}/${encodeURIComponent(projectKey)}/extensions`;
127
+ }
128
+ /** List the project's Extensions (one page; enough for the "refuse if any present"
129
+ * guard and for sweeping our own leftovers). */
130
+ export async function listExtensions(apiBaseUrl, projectKey, authFetch, limit = 100) {
131
+ const url = `${extensionsUrl(apiBaseUrl, projectKey)}?limit=${limit}`;
132
+ const res = await authFetch(url, { headers: { accept: "application/json" } });
133
+ const text = await res.text();
134
+ if (!res.ok) {
135
+ throw new Error(`GET /extensions failed (${res.status}) for '${projectKey}': ${text}`);
136
+ }
137
+ const body = JSON.parse(text);
138
+ return body.results ?? [];
139
+ }
140
+ /** Create one Extension; returns its id + version (needed to delete it later). */
141
+ export async function createExtension(apiBaseUrl, projectKey, authFetch, draft) {
142
+ const res = await authFetch(extensionsUrl(apiBaseUrl, projectKey), {
143
+ method: "POST",
144
+ headers: { "content-type": "application/json", accept: "application/json" },
145
+ body: JSON.stringify(draft),
146
+ });
147
+ const text = await res.text();
148
+ if (!res.ok) {
149
+ throw new Error(`POST /extensions '${draft.key}' failed (${res.status}): ${text}`);
150
+ }
151
+ return JSON.parse(text);
152
+ }
153
+ /** Delete one Extension by id + version (idempotent: a 404 is treated as done). */
154
+ export async function deleteExtension(apiBaseUrl, projectKey, authFetch, id, version) {
155
+ const url = `${extensionsUrl(apiBaseUrl, projectKey)}/${encodeURIComponent(id)}?version=${version}`;
156
+ const res = await authFetch(url, { method: "DELETE", headers: { accept: "application/json" } });
157
+ if (res.ok || res.status === 404)
158
+ return;
159
+ const text = await res.text();
160
+ throw new Error(`DELETE /extensions/${id} failed (${res.status}): ${text}`);
161
+ }
162
+ //# sourceMappingURL=ctExtensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ctExtensions.js","sourceRoot":"","sources":["../../src/lib/ctExtensions.ts"],"names":[],"mappings":"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"}
@@ -140,3 +140,31 @@ export declare function patchConfig(baseUrl: string, projectKey: string, authFet
140
140
  value: string | null;
141
141
  secret?: boolean;
142
142
  }>): Promise<ConfigEntry[]>;
143
+ /** The deployed connector's verdict, as the Commerce Integration Layer's invoke proxy returns it. */
144
+ export interface DeployedInvokeResponse {
145
+ /** The connector's own HTTP status: 200 (approve/modify), 400 (block), 401/5xx (fault). */
146
+ status: number;
147
+ /** The connector's response body ({}, { actions }, { errors }, …) — the API-Extension result. */
148
+ result: unknown;
149
+ }
150
+ /**
151
+ * Fire ONE commercetools API-Extension callback at the project's DEPLOYED extension
152
+ * and return the connector's verdict (`POST …/extension/api-extensions/invoke`).
153
+ *
154
+ * The Commerce Integration Layer is the signing proxy: only it can mint the shared-secret
155
+ * bearer the connector's `/api-extensions` endpoint requires (derived from the
156
+ * project's stored client secret), so the CLI hands it the payload and the integration
157
+ * layer resolves the deployed connector URL, signs, forwards, and returns the result.
158
+ * Nothing is persisted to commercetools — it is the callback in isolation.
159
+ *
160
+ * A connector that ANSWERS — including a 400 block — comes back inside the
161
+ * `{ status, result }` envelope (a block is a verdict, not a failure). This throws
162
+ * only when the deployed extension could not be REACHED (no deployment, no service
163
+ * URL yet, timeout) or the request was rejected (not enrolled, unauthorized).
164
+ */
165
+ export declare function invokeDeployedApiExtension(baseUrl: string, projectKey: string, authFetch: AuthFetch, input: {
166
+ action: string;
167
+ resource: {
168
+ typeId: string;
169
+ };
170
+ }): Promise<DeployedInvokeResponse>;
@@ -173,4 +173,41 @@ export async function patchConfig(baseUrl, projectKey, authFetch, entries) {
173
173
  }
174
174
  return JSON.parse(text);
175
175
  }
176
+ /**
177
+ * Fire ONE commercetools API-Extension callback at the project's DEPLOYED extension
178
+ * and return the connector's verdict (`POST …/extension/api-extensions/invoke`).
179
+ *
180
+ * The Commerce Integration Layer is the signing proxy: only it can mint the shared-secret
181
+ * bearer the connector's `/api-extensions` endpoint requires (derived from the
182
+ * project's stored client secret), so the CLI hands it the payload and the integration
183
+ * layer resolves the deployed connector URL, signs, forwards, and returns the result.
184
+ * Nothing is persisted to commercetools — it is the callback in isolation.
185
+ *
186
+ * A connector that ANSWERS — including a 400 block — comes back inside the
187
+ * `{ status, result }` envelope (a block is a verdict, not a failure). This throws
188
+ * only when the deployed extension could not be REACHED (no deployment, no service
189
+ * URL yet, timeout) or the request was rejected (not enrolled, unauthorized).
190
+ */
191
+ export async function invokeDeployedApiExtension(baseUrl, projectKey, authFetch, input) {
192
+ const url = `${apiRoot(baseUrl, projectKey)}/extension/api-extensions/invoke`;
193
+ const res = await authFetch(url, {
194
+ method: "POST",
195
+ headers: { "Content-Type": "application/json" },
196
+ body: JSON.stringify(input),
197
+ });
198
+ const text = await res.text();
199
+ if (!res.ok) {
200
+ let detail = text;
201
+ try {
202
+ const parsed = JSON.parse(text);
203
+ if (parsed.error)
204
+ detail = parsed.error;
205
+ }
206
+ catch {
207
+ // Non-JSON body — surface it raw.
208
+ }
209
+ throw new Error(`could not invoke the deployed extension (${res.status}): ${detail}`);
210
+ }
211
+ return JSON.parse(text);
212
+ }
176
213
  //# sourceMappingURL=ilClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ilClient.js","sourceRoot":"","sources":["../../src/lib/ilClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ilClient.js","sourceRoot":"","sources":["../../src/lib/ilClient.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,wFAAwF;AACxF,0FAA0F;AAC1F,2FAA2F;AAC3F,0FAA0F;AAC1F,qFAAqF;AACrF,sFAAsF;AACtF,oFAAoF;AACpF,kEAAkE;AAwElE,SAAS,OAAO,CAAC,OAAe,EAAE,UAAkB;IAClD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;AAC5E,CAAC;AASD,sFAAsF;AACtF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAe,EACf,UAAkB,EAClB,SAAoB;IAEpB,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC;IACvD,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;IACxE,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,sCAAsC,GAAG,CAAC,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,OAAe,EACf,UAAkB,EAClB,SAAoB;IAEpB,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,aAAa,CAAC;IACzD,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;IACxE,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,YAAY,UAAU,gEAAgE;YACpF,0FAA0F,CAC7F,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,iDAAiD,GAAG,CAAC,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC;IACvG,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,oGAAoG;AACpG,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAe,EACf,UAAkB,EAClB,SAAoB,EACpB,QAAgB;IAEhB,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,qBAAqB,CAAC;IACjE,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE;QAC/B,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;KACnC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,qCAAqC,GAAG,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAA2B,CAAC;AACpD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,OAAe,EACf,UAAkB,EAClB,SAAoB,EACpB,MAAc,EACd,QAAgB,EAChB,cAAuB;IAEvB,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,mBAAmB,CAAC;IAC/D,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE;QAC/B,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,cAAc,EAAE,iBAAiB;YACjC,4EAA4E;YAC5E,mEAAmE;YACnE,sBAAsB,EAAE,kBAAkB,CAAC,QAAQ,CAAC;YACpD,+EAA+E;YAC/E,+EAA+E;YAC/E,0DAA0D;YAC1D,GAAG,CAAC,cAAc;gBAChB,CAAC,CAAC,EAAE,6BAA6B,EAAE,kBAAkB,CAAC,cAAc,CAAC,EAAE;gBACvE,CAAC,CAAC,EAAE,CAAC;SACR;QACD,IAAI,EAAE,MAAM;KACb,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAkB,CAAC;AAC3C,CAAC;AAED,+FAA+F;AAC/F,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAe,EACf,UAAkB,EAClB,SAAoB;IAEpB,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,wBAAwB,CAAC;IACpE,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;IAC9E,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,qCAAqC,GAAG,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAkB,CAAC;AAC3C,CAAC;AAED,yFAAyF;AACzF,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,OAAe,EACf,UAAkB,EAClB,SAAoB;IAEpB,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,qBAAqB,CAAC;IACjE,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACvD,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,qCAAqC,GAAG,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC;AAgBD,gFAAgF;AAChF,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAe,EACf,UAAkB,EAClB,SAAoB;IAEpB,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,sBAAsB,CAAC;IAClE,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;IAC9E,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAkB,CAAC;AAC3C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAe,EACf,UAAkB,EAClB,SAAoB,EACpB,QAAkB;IAElB,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,sBAAsB,CAAC;IAClE,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE;QAC/B,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;KAC/B,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAyC,CAAC;AAClE,CAAC;AAED,sGAAsG;AACtG,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,OAAe,EACf,UAAkB,EAClB,SAAoB;IAEpB,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,mBAAmB,CAAC;IAC/D,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;IAC9E,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAkB,CAAC;AAC3C,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAe,EACf,UAAkB,EAClB,SAAoB,EACpB,OAAuE;IAEvE,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,mBAAmB,CAAC;IAC/D,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE;QAC/B,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;KAC9B,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,kCAAkC,GAAG,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAkB,CAAC;AAC3C,CAAC;AAUD;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,OAAe,EACf,UAAkB,EAClB,SAAoB,EACpB,KAAuD;IAEvD,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,kCAAkC,CAAC;IAC9E,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE;QAC/B,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;KAC5B,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAuB,CAAC;YACtD,IAAI,MAAM,CAAC,KAAK;gBAAE,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,kCAAkC;QACpC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,4CAA4C,GAAG,CAAC,MAAM,MAAM,MAAM,EAAE,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAA2B,CAAC;AACpD,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { EvaluatedBundle } from "./loadBundle.js";
2
+ import type { ApiExtensionAction, ApiExtensionDefinition, ApiExtensionError, ApiExtensionInput, ApiExtensionResult, ExtensionContext } from "./apiExtension.js";
3
+ /** The wire result: the HTTP status commercetools expects, plus the optional body. */
4
+ export interface DispatchResult {
5
+ status: number;
6
+ /** Omitted for a bare approve (empty 200 body). */
7
+ body?: {
8
+ actions: unknown[];
9
+ } | {
10
+ errors: ApiExtensionError[];
11
+ };
12
+ }
13
+ /** Pull the `apiExtensions` array off a loaded bundle (empty when it exports none). */
14
+ export declare function extractApiExtensions(mod: EvaluatedBundle): ApiExtensionDefinition[];
15
+ /** Whether a handler is triggered by a given commercetools resource + action. */
16
+ export declare function handlerMatches(handler: ApiExtensionDefinition, resourceTypeId: string, action: ApiExtensionAction): boolean;
17
+ /** Summarise a single handler's result for a human-readable log line. */
18
+ export declare function describeResult(result: ApiExtensionResult): string;
19
+ /**
20
+ * Dispatch one commercetools API-Extension callback across the matching handlers and
21
+ * return the response commercetools expects:
22
+ *
23
+ * - No matching handler → approve (200, no body): no handler expresses an opinion, so
24
+ * the write proceeds (the defined behaviour, not a fallback).
25
+ * - Any handler returns `errors` → BLOCK (400 with the merged errors).
26
+ * - Otherwise merge any `actions` → 200 with the actions (or an empty 200).
27
+ *
28
+ * FAIL FAST: a handler that throws is NOT swallowed into an approve — the error
29
+ * propagates to the caller, which returns 500 so commercetools fails the write loudly
30
+ * (the same contract as the deployed sandbox).
31
+ */
32
+ export declare function dispatchApiExtension(handlers: ApiExtensionDefinition[], ctx: ExtensionContext, input: ApiExtensionInput): Promise<DispatchResult>;
@@ -0,0 +1,71 @@
1
+ // Run a bundle's commercetools API-Extension handlers for one callback and map the
2
+ // merged result to the commercetools response contract. Kept PURE (no HTTP, no
3
+ // module state) so it's unit-tested directly and shared by two callers:
4
+ // - `invoke-api-extension` fires a SYNTHETIC payload at the handlers offline;
5
+ // - `serve-api-extension` serves the handlers over HTTP so REAL commercetools
6
+ // callbacks reach them for local end-to-end debugging.
7
+ //
8
+ // This mirrors the sandbox runtime's dispatch contract
9
+ // (octolog-extensions-sandbox `service/src/apiExtensions/dispatch.ts`) so a handler
10
+ // behaves identically locally and once deployed. The one deliberate difference is
11
+ // that handlers run here in plain Node (no SES compartment, no `harden`) — that is
12
+ // what makes breakpoints and stack traces work; `validate`/`push` remain the
13
+ // correctness gate for the real sandbox endowments.
14
+ /** Pull the `apiExtensions` array off a loaded bundle (empty when it exports none). */
15
+ export function extractApiExtensions(mod) {
16
+ return Array.isArray(mod.apiExtensions) ? mod.apiExtensions : [];
17
+ }
18
+ /** Whether a handler is triggered by a given commercetools resource + action. */
19
+ export function handlerMatches(handler, resourceTypeId, action) {
20
+ return handler.resourceTypeId === resourceTypeId && handler.actions.includes(action);
21
+ }
22
+ /** Summarise a single handler's result for a human-readable log line. */
23
+ export function describeResult(result) {
24
+ if (result && typeof result === "object") {
25
+ if (Array.isArray(result.errors) && result.errors.length > 0) {
26
+ return `BLOCK — ${result.errors.map((e) => `${e.code}: ${e.message}`).join("; ")}`;
27
+ }
28
+ if (Array.isArray(result.actions) && result.actions.length > 0) {
29
+ return `MODIFY — ${JSON.stringify(result.actions)}`;
30
+ }
31
+ }
32
+ return "APPROVE";
33
+ }
34
+ /**
35
+ * Dispatch one commercetools API-Extension callback across the matching handlers and
36
+ * return the response commercetools expects:
37
+ *
38
+ * - No matching handler → approve (200, no body): no handler expresses an opinion, so
39
+ * the write proceeds (the defined behaviour, not a fallback).
40
+ * - Any handler returns `errors` → BLOCK (400 with the merged errors).
41
+ * - Otherwise merge any `actions` → 200 with the actions (or an empty 200).
42
+ *
43
+ * FAIL FAST: a handler that throws is NOT swallowed into an approve — the error
44
+ * propagates to the caller, which returns 500 so commercetools fails the write loudly
45
+ * (the same contract as the deployed sandbox).
46
+ */
47
+ export async function dispatchApiExtension(handlers, ctx, input) {
48
+ const matching = handlers.filter((h) =>
49
+ // input.action is the SDK's (open) ExtensionAction; our handlers only declare
50
+ // Create/Update, so a non-matching action simply finds no handler.
51
+ handlerMatches(h, input.resource.typeId, input.action));
52
+ if (matching.length === 0)
53
+ return { status: 200 };
54
+ const errors = [];
55
+ const actions = [];
56
+ for (const h of matching) {
57
+ const result = await h.handler(input, ctx);
58
+ if (result && typeof result === "object") {
59
+ if (Array.isArray(result.errors))
60
+ errors.push(...result.errors);
61
+ if (Array.isArray(result.actions))
62
+ actions.push(...result.actions);
63
+ }
64
+ }
65
+ if (errors.length > 0)
66
+ return { status: 400, body: { errors } };
67
+ if (actions.length > 0)
68
+ return { status: 200, body: { actions } };
69
+ return { status: 200 };
70
+ }
71
+ //# sourceMappingURL=apiExtensionDispatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiExtensionDispatch.js","sourceRoot":"","sources":["../../../src/lib/tooling/apiExtensionDispatch.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@commercetools/cli-topic-integration-layer",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "description": "commercetools CLI plugin: integration-layer topic",
5
5
  "license": "MIT",
6
6
  "repository": {