@juo/blocks 1.12.0-alpha.1 → 1.12.0-alpha.2
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/{ExtensionRoot-Z2DlF9X6.js → ExtensionRoot-peABLAZZ.js} +3 -2
- package/dist/{block-Bh3z0B3y.js → block-B6s9jL7l.js} +37 -42
- package/dist/block.d.ts +1 -1
- package/dist/block.d.ts.map +1 -1
- package/dist/{bridge-w5KQ-czl.js → bridge-r7Yk8fjY.js} +34 -25
- package/dist/core.js +170 -98
- package/dist/devtools/env.d.ts +3 -0
- package/dist/devtools/env.d.ts.map +1 -0
- package/dist/devtools/hook.d.ts +35 -0
- package/dist/devtools/hook.d.ts.map +1 -0
- package/dist/devtools/index.d.ts +4 -0
- package/dist/devtools/index.d.ts.map +1 -0
- package/dist/devtools/protocol.d.ts +91 -0
- package/dist/devtools/protocol.d.ts.map +1 -0
- package/dist/devtools.js +44 -0
- package/dist/editor/bridge.d.ts +7 -0
- package/dist/editor/bridge.d.ts.map +1 -1
- package/dist/editor/components.d.ts.map +1 -1
- package/dist/editor/main.d.ts +2 -1
- package/dist/editor/main.d.ts.map +1 -1
- package/dist/editor/messages.d.ts +13 -2
- package/dist/editor/messages.d.ts.map +1 -1
- package/dist/editor/messages.test.d.ts +2 -0
- package/dist/editor/messages.test.d.ts.map +1 -0
- package/dist/editor/overlays.d.ts +14 -0
- package/dist/editor/overlays.d.ts.map +1 -0
- package/dist/editor/overlays.test.d.ts +2 -0
- package/dist/editor/overlays.test.d.ts.map +1 -0
- package/dist/editor.js +63 -45
- package/dist/{juo-workflow-D3c29mxb.js → juo-workflow-DY4rd256.js} +29 -9
- package/dist/main.d.ts +1 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/overlay-wrapper.d.ts +1 -0
- package/dist/overlay-wrapper.d.ts.map +1 -1
- package/dist/overlay-wrapper.test.d.ts +2 -0
- package/dist/overlay-wrapper.test.d.ts.map +1 -0
- package/dist/overlays/OverlayService.d.ts +34 -0
- package/dist/overlays/OverlayService.d.ts.map +1 -0
- package/dist/overlays/OverlayService.test.d.ts +2 -0
- package/dist/overlays/OverlayService.test.d.ts.map +1 -0
- package/dist/preact.js +1 -1
- package/dist/react.js +1 -1
- package/dist/services/subscription/adapter.d.ts +9 -0
- package/dist/services/subscription/adapter.d.ts.map +1 -1
- package/dist/services/subscription/subscriptionService.d.ts.map +1 -1
- package/dist/services/subscription/types.d.ts +38 -0
- package/dist/services/subscription/types.d.ts.map +1 -1
- package/dist/theme-state.d.ts.map +1 -1
- package/dist/vue.js +3 -2
- package/dist/web-components-editor.js +4 -4
- package/dist/web-components-runtime.js +3 -3
- package/package.json +6 -3
package/dist/core.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
2
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
3
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
|
-
import {
|
|
5
|
-
import { B,
|
|
6
|
-
import { D as D2,
|
|
4
|
+
import { e as createContext, d, k as w, l as defineBlock, g as createBlockInstance, h as getDefinedBlocks, r as registerBlock, E, u } from "./block-B6s9jL7l.js";
|
|
5
|
+
import { B, m, p, S, q, _, t, b, v, f, x, y, z, A, D, i, F, a, o, G, j, H, s, n, w as w2 } from "./block-B6s9jL7l.js";
|
|
6
|
+
import { D as D2, a as a2, T, W, c, b as b2, d as d2, e, g, h, i as i2 } from "./juo-workflow-DY4rd256.js";
|
|
7
7
|
import { reportBlockWarning, reportBlockError } from "./observability.js";
|
|
8
8
|
function createState() {
|
|
9
9
|
const discountCode = d(null);
|
|
@@ -105,6 +105,7 @@ function defineOverlayWrapper(opts) {
|
|
|
105
105
|
const layout = opts.layout ?? "sidebar";
|
|
106
106
|
const canAbort = opts.canAbort ?? true;
|
|
107
107
|
return defineBlock(opts.name, {
|
|
108
|
+
displayName: opts.title,
|
|
108
109
|
group: "internal",
|
|
109
110
|
schema: OVERLAY_WRAPPER_SCHEMA,
|
|
110
111
|
initialValue: () => ({
|
|
@@ -116,6 +117,67 @@ function defineOverlayWrapper(opts) {
|
|
|
116
117
|
renderer: () => null
|
|
117
118
|
});
|
|
118
119
|
}
|
|
120
|
+
const OVERLAY_PREFIX$1 = "overlay:";
|
|
121
|
+
function callInitialValue(block) {
|
|
122
|
+
if (typeof block.initialValue !== "function") return block.initialValue;
|
|
123
|
+
try {
|
|
124
|
+
return block.initialValue();
|
|
125
|
+
} catch (error) {
|
|
126
|
+
console.warn(
|
|
127
|
+
`[overlays] initialValue() threw for "${block.name}"; its content block will not be hidden from the palette.`,
|
|
128
|
+
error
|
|
129
|
+
);
|
|
130
|
+
return void 0;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
function buildOverlayRegistry(blocks) {
|
|
134
|
+
var _a, _b;
|
|
135
|
+
const registry = {};
|
|
136
|
+
for (const block of blocks) {
|
|
137
|
+
if (!block.name.startsWith(OVERLAY_PREFIX$1)) continue;
|
|
138
|
+
const id = block.name.slice(OVERLAY_PREFIX$1.length);
|
|
139
|
+
const initial = callInitialValue(block);
|
|
140
|
+
const first = (_b = (_a = initial == null ? void 0 : initial.slots) == null ? void 0 : _a.content) == null ? void 0 : _b[0];
|
|
141
|
+
const contentBlock = typeof (first == null ? void 0 : first.type) === "string" ? first.type : "";
|
|
142
|
+
registry[id] = {
|
|
143
|
+
block: block.name,
|
|
144
|
+
title: block.displayName ?? id,
|
|
145
|
+
contentBlock
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
return registry;
|
|
149
|
+
}
|
|
150
|
+
const OVERLAY_PREFIX = "overlay:";
|
|
151
|
+
const OverlayServiceContext = createContext("services/overlay");
|
|
152
|
+
function createOverlayService(themeState, options = {}) {
|
|
153
|
+
const getBlocks = options.getBlocks ?? getDefinedBlocks;
|
|
154
|
+
const current = w(() => {
|
|
155
|
+
const root = themeState.overlay.blocks.value[0];
|
|
156
|
+
const type = root == null ? void 0 : root.type;
|
|
157
|
+
if (typeof type !== "string" || !type.startsWith(OVERLAY_PREFIX)) {
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
const props = root.props ?? {};
|
|
161
|
+
return {
|
|
162
|
+
name: type,
|
|
163
|
+
// Defaults mirror defineOverlayWrapper's seeding in overlay-wrapper.ts — keep in sync.
|
|
164
|
+
layout: props.layout ?? "sidebar",
|
|
165
|
+
canAbort: Boolean(props.canAbort ?? true)
|
|
166
|
+
};
|
|
167
|
+
});
|
|
168
|
+
return {
|
|
169
|
+
getEditableOverlays() {
|
|
170
|
+
return buildOverlayRegistry(getBlocks());
|
|
171
|
+
},
|
|
172
|
+
open(name, params) {
|
|
173
|
+
void themeState.resolve("overlay", name, params);
|
|
174
|
+
},
|
|
175
|
+
close() {
|
|
176
|
+
themeState.overlay.blocks.value = [];
|
|
177
|
+
},
|
|
178
|
+
current
|
|
179
|
+
};
|
|
180
|
+
}
|
|
119
181
|
function isLocalhostOrigin(origin) {
|
|
120
182
|
try {
|
|
121
183
|
const url = new URL(origin);
|
|
@@ -231,8 +293,8 @@ function createApiCustomerAdapter(fetcher) {
|
|
|
231
293
|
_tag: "Success",
|
|
232
294
|
data: { id: data.id, name, email: data.email }
|
|
233
295
|
};
|
|
234
|
-
} catch (
|
|
235
|
-
return { _tag: "Failure", error:
|
|
296
|
+
} catch (e2) {
|
|
297
|
+
return { _tag: "Failure", error: e2 };
|
|
236
298
|
}
|
|
237
299
|
}
|
|
238
300
|
};
|
|
@@ -320,8 +382,8 @@ function createApiLoginAdapter(fetcher, opts) {
|
|
|
320
382
|
lang
|
|
321
383
|
);
|
|
322
384
|
return { _tag: "Success", data: void 0 };
|
|
323
|
-
} catch (
|
|
324
|
-
return { _tag: "Failure", error:
|
|
385
|
+
} catch (e2) {
|
|
386
|
+
return { _tag: "Failure", error: e2 };
|
|
325
387
|
}
|
|
326
388
|
},
|
|
327
389
|
async authenticate(params) {
|
|
@@ -355,8 +417,8 @@ function createApiLoginAdapter(fetcher, opts) {
|
|
|
355
417
|
throw new Error(`Unexpected response: ${res.statusText}`);
|
|
356
418
|
}
|
|
357
419
|
return { _tag: "Success", data: await res.json() };
|
|
358
|
-
} catch (
|
|
359
|
-
return { _tag: "Failure", error:
|
|
420
|
+
} catch (e2) {
|
|
421
|
+
return { _tag: "Failure", error: e2 };
|
|
360
422
|
}
|
|
361
423
|
},
|
|
362
424
|
getAuthorizeUrl({ connection, state, shop }) {
|
|
@@ -1305,7 +1367,7 @@ function createMockSchedulesAdapter() {
|
|
|
1305
1367
|
},
|
|
1306
1368
|
async removeAdjustment({ adjustmentId }) {
|
|
1307
1369
|
await new Promise((r) => setTimeout(r, 200));
|
|
1308
|
-
adjustments = adjustments.filter((
|
|
1370
|
+
adjustments = adjustments.filter((a3) => a3.id !== adjustmentId);
|
|
1309
1371
|
return { _tag: "Success", data: void 0 };
|
|
1310
1372
|
}
|
|
1311
1373
|
};
|
|
@@ -1320,8 +1382,8 @@ function createApiSchedulesAdapter(fetcher) {
|
|
|
1320
1382
|
if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
|
|
1321
1383
|
const data = await res.json();
|
|
1322
1384
|
return { _tag: "Success", data: data.orders };
|
|
1323
|
-
} catch (
|
|
1324
|
-
return { _tag: "Failure", error:
|
|
1385
|
+
} catch (e2) {
|
|
1386
|
+
return { _tag: "Failure", error: e2 };
|
|
1325
1387
|
}
|
|
1326
1388
|
},
|
|
1327
1389
|
async getAdjustments() {
|
|
@@ -1329,15 +1391,15 @@ function createApiSchedulesAdapter(fetcher) {
|
|
|
1329
1391
|
const res = await fetcher(`/customer/v1/schedules/adjustments`);
|
|
1330
1392
|
if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
|
|
1331
1393
|
const data = await res.json();
|
|
1332
|
-
const adjustments = data.data.map((
|
|
1333
|
-
id:
|
|
1334
|
-
subscriptionId:
|
|
1335
|
-
type:
|
|
1336
|
-
newDate:
|
|
1394
|
+
const adjustments = data.data.map((a3) => ({
|
|
1395
|
+
id: a3.id,
|
|
1396
|
+
subscriptionId: a3.subscriptionId ?? "",
|
|
1397
|
+
type: a3.type === "CHANGE_DATE" ? "date_change" : "skip",
|
|
1398
|
+
newDate: a3.newDate
|
|
1337
1399
|
}));
|
|
1338
1400
|
return { _tag: "Success", data: adjustments };
|
|
1339
|
-
} catch (
|
|
1340
|
-
return { _tag: "Failure", error:
|
|
1401
|
+
} catch (e2) {
|
|
1402
|
+
return { _tag: "Failure", error: e2 };
|
|
1341
1403
|
}
|
|
1342
1404
|
},
|
|
1343
1405
|
async skipOrder({ cycle, date }) {
|
|
@@ -1356,8 +1418,8 @@ function createApiSchedulesAdapter(fetcher) {
|
|
|
1356
1418
|
});
|
|
1357
1419
|
if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
|
|
1358
1420
|
return { _tag: "Success", data: void 0 };
|
|
1359
|
-
} catch (
|
|
1360
|
-
return { _tag: "Failure", error:
|
|
1421
|
+
} catch (e2) {
|
|
1422
|
+
return { _tag: "Failure", error: e2 };
|
|
1361
1423
|
}
|
|
1362
1424
|
},
|
|
1363
1425
|
async changeDateAdjustment({ newDate, currentDate }) {
|
|
@@ -1382,8 +1444,8 @@ function createApiSchedulesAdapter(fetcher) {
|
|
|
1382
1444
|
});
|
|
1383
1445
|
if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
|
|
1384
1446
|
return { _tag: "Success", data: void 0 };
|
|
1385
|
-
} catch (
|
|
1386
|
-
return { _tag: "Failure", error:
|
|
1447
|
+
} catch (e2) {
|
|
1448
|
+
return { _tag: "Failure", error: e2 };
|
|
1387
1449
|
}
|
|
1388
1450
|
},
|
|
1389
1451
|
async removeAdjustment({ adjustmentId }) {
|
|
@@ -1394,8 +1456,8 @@ function createApiSchedulesAdapter(fetcher) {
|
|
|
1394
1456
|
);
|
|
1395
1457
|
if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
|
|
1396
1458
|
return { _tag: "Success", data: void 0 };
|
|
1397
|
-
} catch (
|
|
1398
|
-
return { _tag: "Failure", error:
|
|
1459
|
+
} catch (e2) {
|
|
1460
|
+
return { _tag: "Failure", error: e2 };
|
|
1399
1461
|
}
|
|
1400
1462
|
}
|
|
1401
1463
|
};
|
|
@@ -1976,7 +2038,7 @@ function createApiSubscriptionAdapter(fetcher) {
|
|
|
1976
2038
|
try {
|
|
1977
2039
|
const params = new URLSearchParams();
|
|
1978
2040
|
if ((_a = options == null ? void 0 : options.filters) == null ? void 0 : _a.length) {
|
|
1979
|
-
const q2 = options.filters.filter((f2) => Object.keys(f2).length > 0).flatMap((f2) => Object.entries(f2).filter(([, v2]) => Boolean(v2))).map(([
|
|
2041
|
+
const q2 = options.filters.filter((f2) => Object.keys(f2).length > 0).flatMap((f2) => Object.entries(f2).filter(([, v2]) => Boolean(v2))).map(([k, v2]) => `${k}:'${v2}'`).join(" AND ");
|
|
1980
2042
|
if (q2) params.set("query", q2);
|
|
1981
2043
|
}
|
|
1982
2044
|
if (options == null ? void 0 : options.pagination) {
|
|
@@ -2001,8 +2063,8 @@ function createApiSubscriptionAdapter(fetcher) {
|
|
|
2001
2063
|
}
|
|
2002
2064
|
}
|
|
2003
2065
|
};
|
|
2004
|
-
} catch (
|
|
2005
|
-
return { _tag: "Failure", error:
|
|
2066
|
+
} catch (e2) {
|
|
2067
|
+
return { _tag: "Failure", error: e2 };
|
|
2006
2068
|
}
|
|
2007
2069
|
},
|
|
2008
2070
|
async getById(id) {
|
|
@@ -2014,8 +2076,8 @@ function createApiSubscriptionAdapter(fetcher) {
|
|
|
2014
2076
|
const body = await res.json();
|
|
2015
2077
|
const raw = body.data[0];
|
|
2016
2078
|
return { _tag: "Success", data: raw ? mapSubscription(raw) : null };
|
|
2017
|
-
} catch (
|
|
2018
|
-
return { _tag: "Failure", error:
|
|
2079
|
+
} catch (e2) {
|
|
2080
|
+
return { _tag: "Failure", error: e2 };
|
|
2019
2081
|
}
|
|
2020
2082
|
},
|
|
2021
2083
|
async addItem({ subscriptionId, item }) {
|
|
@@ -2030,8 +2092,8 @@ function createApiSubscriptionAdapter(fetcher) {
|
|
|
2030
2092
|
);
|
|
2031
2093
|
if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
|
|
2032
2094
|
return { _tag: "Success", data: void 0 };
|
|
2033
|
-
} catch (
|
|
2034
|
-
return { _tag: "Failure", error:
|
|
2095
|
+
} catch (e2) {
|
|
2096
|
+
return { _tag: "Failure", error: e2 };
|
|
2035
2097
|
}
|
|
2036
2098
|
},
|
|
2037
2099
|
async removeItem({ subscriptionId, itemId }) {
|
|
@@ -2042,8 +2104,8 @@ function createApiSubscriptionAdapter(fetcher) {
|
|
|
2042
2104
|
);
|
|
2043
2105
|
if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
|
|
2044
2106
|
return { _tag: "Success", data: void 0 };
|
|
2045
|
-
} catch (
|
|
2046
|
-
return { _tag: "Failure", error:
|
|
2107
|
+
} catch (e2) {
|
|
2108
|
+
return { _tag: "Failure", error: e2 };
|
|
2047
2109
|
}
|
|
2048
2110
|
},
|
|
2049
2111
|
async updateItem({ subscriptionId, lineId, update }) {
|
|
@@ -2064,8 +2126,8 @@ function createApiSubscriptionAdapter(fetcher) {
|
|
|
2064
2126
|
);
|
|
2065
2127
|
if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
|
|
2066
2128
|
return { _tag: "Success", data: void 0 };
|
|
2067
|
-
} catch (
|
|
2068
|
-
return { _tag: "Failure", error:
|
|
2129
|
+
} catch (e2) {
|
|
2130
|
+
return { _tag: "Failure", error: e2 };
|
|
2069
2131
|
}
|
|
2070
2132
|
},
|
|
2071
2133
|
async skipLineItem({ subscriptionId, lineId, nextBillingDate }) {
|
|
@@ -2080,8 +2142,8 @@ function createApiSubscriptionAdapter(fetcher) {
|
|
|
2080
2142
|
);
|
|
2081
2143
|
if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
|
|
2082
2144
|
return { _tag: "Success", data: void 0 };
|
|
2083
|
-
} catch (
|
|
2084
|
-
return { _tag: "Failure", error:
|
|
2145
|
+
} catch (e2) {
|
|
2146
|
+
return { _tag: "Failure", error: e2 };
|
|
2085
2147
|
}
|
|
2086
2148
|
},
|
|
2087
2149
|
async updateBoxItems({ subscriptionId, parentId, items, shippingMethodHandle }) {
|
|
@@ -2096,8 +2158,8 @@ function createApiSubscriptionAdapter(fetcher) {
|
|
|
2096
2158
|
);
|
|
2097
2159
|
if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
|
|
2098
2160
|
return { _tag: "Success", data: void 0 };
|
|
2099
|
-
} catch (
|
|
2100
|
-
return { _tag: "Failure", error:
|
|
2161
|
+
} catch (e2) {
|
|
2162
|
+
return { _tag: "Failure", error: e2 };
|
|
2101
2163
|
}
|
|
2102
2164
|
},
|
|
2103
2165
|
async addDiscount({ subscriptionId, code }) {
|
|
@@ -2112,8 +2174,8 @@ function createApiSubscriptionAdapter(fetcher) {
|
|
|
2112
2174
|
);
|
|
2113
2175
|
if (!res.ok) return { _tag: "Failure", error: { kind: "NETWORK", message: `HTTP ${res.status}` } };
|
|
2114
2176
|
return { _tag: "Success", data: void 0 };
|
|
2115
|
-
} catch (
|
|
2116
|
-
return { _tag: "Failure", error: { kind: "UNKNOWN", message:
|
|
2177
|
+
} catch (e2) {
|
|
2178
|
+
return { _tag: "Failure", error: { kind: "UNKNOWN", message: e2 instanceof Error ? e2.message : void 0 } };
|
|
2117
2179
|
}
|
|
2118
2180
|
},
|
|
2119
2181
|
async removeDiscount({ subscriptionId, discountId }) {
|
|
@@ -2124,8 +2186,8 @@ function createApiSubscriptionAdapter(fetcher) {
|
|
|
2124
2186
|
);
|
|
2125
2187
|
if (!res.ok) return { _tag: "Failure", error: { kind: "NETWORK", message: `HTTP ${res.status}` } };
|
|
2126
2188
|
return { _tag: "Success", data: void 0 };
|
|
2127
|
-
} catch (
|
|
2128
|
-
return { _tag: "Failure", error: { kind: "UNKNOWN", message:
|
|
2189
|
+
} catch (e2) {
|
|
2190
|
+
return { _tag: "Failure", error: { kind: "UNKNOWN", message: e2 instanceof Error ? e2.message : void 0 } };
|
|
2129
2191
|
}
|
|
2130
2192
|
},
|
|
2131
2193
|
// Uses PATCH /customer/v1/subscriptions/{id} — the dedicated /reschedule route does not exist.
|
|
@@ -2142,8 +2204,8 @@ function createApiSubscriptionAdapter(fetcher) {
|
|
|
2142
2204
|
if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
|
|
2143
2205
|
const data = await res.json();
|
|
2144
2206
|
return { _tag: "Success", data: mapSubscription(data) };
|
|
2145
|
-
} catch (
|
|
2146
|
-
return { _tag: "Failure", error:
|
|
2207
|
+
} catch (e2) {
|
|
2208
|
+
return { _tag: "Failure", error: e2 };
|
|
2147
2209
|
}
|
|
2148
2210
|
},
|
|
2149
2211
|
async resume({ subscriptionId }) {
|
|
@@ -2155,8 +2217,8 @@ function createApiSubscriptionAdapter(fetcher) {
|
|
|
2155
2217
|
if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
|
|
2156
2218
|
const data = await res.json();
|
|
2157
2219
|
return { _tag: "Success", data: mapSubscription(data) };
|
|
2158
|
-
} catch (
|
|
2159
|
-
return { _tag: "Failure", error:
|
|
2220
|
+
} catch (e2) {
|
|
2221
|
+
return { _tag: "Failure", error: e2 };
|
|
2160
2222
|
}
|
|
2161
2223
|
},
|
|
2162
2224
|
async pause({ subscriptionId }) {
|
|
@@ -2168,8 +2230,8 @@ function createApiSubscriptionAdapter(fetcher) {
|
|
|
2168
2230
|
if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
|
|
2169
2231
|
const data = await res.json();
|
|
2170
2232
|
return { _tag: "Success", data: mapSubscription(data) };
|
|
2171
|
-
} catch (
|
|
2172
|
-
return { _tag: "Failure", error:
|
|
2233
|
+
} catch (e2) {
|
|
2234
|
+
return { _tag: "Failure", error: e2 };
|
|
2173
2235
|
}
|
|
2174
2236
|
},
|
|
2175
2237
|
async reactivate({ subscriptionId }) {
|
|
@@ -2181,8 +2243,8 @@ function createApiSubscriptionAdapter(fetcher) {
|
|
|
2181
2243
|
if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
|
|
2182
2244
|
const data = await res.json();
|
|
2183
2245
|
return { _tag: "Success", data: mapSubscription(data) };
|
|
2184
|
-
} catch (
|
|
2185
|
-
return { _tag: "Failure", error:
|
|
2246
|
+
} catch (e2) {
|
|
2247
|
+
return { _tag: "Failure", error: e2 };
|
|
2186
2248
|
}
|
|
2187
2249
|
},
|
|
2188
2250
|
async cancel({ subscriptionId, reason }) {
|
|
@@ -2198,8 +2260,8 @@ function createApiSubscriptionAdapter(fetcher) {
|
|
|
2198
2260
|
if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
|
|
2199
2261
|
const data = await res.json();
|
|
2200
2262
|
return { _tag: "Success", data: mapSubscription(data) };
|
|
2201
|
-
} catch (
|
|
2202
|
-
return { _tag: "Failure", error:
|
|
2263
|
+
} catch (e2) {
|
|
2264
|
+
return { _tag: "Failure", error: e2 };
|
|
2203
2265
|
}
|
|
2204
2266
|
},
|
|
2205
2267
|
// Legacy endpoint — no /customer/v1/subscriptions/{id}/plans exists yet.
|
|
@@ -2211,8 +2273,8 @@ function createApiSubscriptionAdapter(fetcher) {
|
|
|
2211
2273
|
if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
|
|
2212
2274
|
const data = await res.json();
|
|
2213
2275
|
return { _tag: "Success", data };
|
|
2214
|
-
} catch (
|
|
2215
|
-
return { _tag: "Failure", error:
|
|
2276
|
+
} catch (e2) {
|
|
2277
|
+
return { _tag: "Failure", error: e2 };
|
|
2216
2278
|
}
|
|
2217
2279
|
},
|
|
2218
2280
|
// Legacy endpoint — no /customer/v1 equivalent exists yet.
|
|
@@ -2224,8 +2286,8 @@ function createApiSubscriptionAdapter(fetcher) {
|
|
|
2224
2286
|
if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
|
|
2225
2287
|
const data = await res.json();
|
|
2226
2288
|
return { _tag: "Success", data: (data == null ? void 0 : data.id) ?? null };
|
|
2227
|
-
} catch (
|
|
2228
|
-
return { _tag: "Failure", error:
|
|
2289
|
+
} catch (e2) {
|
|
2290
|
+
return { _tag: "Failure", error: e2 };
|
|
2229
2291
|
}
|
|
2230
2292
|
},
|
|
2231
2293
|
// Legacy endpoint — no /customer/v1/subscriptions/{id}/upsells exists yet.
|
|
@@ -2252,8 +2314,8 @@ function createApiSubscriptionAdapter(fetcher) {
|
|
|
2252
2314
|
};
|
|
2253
2315
|
});
|
|
2254
2316
|
return { _tag: "Success", data: products };
|
|
2255
|
-
} catch (
|
|
2256
|
-
return { _tag: "Failure", error:
|
|
2317
|
+
} catch (e2) {
|
|
2318
|
+
return { _tag: "Failure", error: e2 };
|
|
2257
2319
|
}
|
|
2258
2320
|
},
|
|
2259
2321
|
// Legacy endpoint — no /customer/v1/subscriptions/{id}/upsells POST exists yet.
|
|
@@ -2273,8 +2335,8 @@ function createApiSubscriptionAdapter(fetcher) {
|
|
|
2273
2335
|
);
|
|
2274
2336
|
if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
|
|
2275
2337
|
return { _tag: "Success", data: void 0 };
|
|
2276
|
-
} catch (
|
|
2277
|
-
return { _tag: "Failure", error:
|
|
2338
|
+
} catch (e2) {
|
|
2339
|
+
return { _tag: "Failure", error: e2 };
|
|
2278
2340
|
}
|
|
2279
2341
|
},
|
|
2280
2342
|
// Legacy endpoint — no /customer/v1 equivalent exists yet.
|
|
@@ -2290,8 +2352,8 @@ function createApiSubscriptionAdapter(fetcher) {
|
|
|
2290
2352
|
_tag: "Success",
|
|
2291
2353
|
data: { id: data.id, createdAt: data.createdAt }
|
|
2292
2354
|
};
|
|
2293
|
-
} catch (
|
|
2294
|
-
return { _tag: "Failure", error:
|
|
2355
|
+
} catch (e2) {
|
|
2356
|
+
return { _tag: "Failure", error: e2 };
|
|
2295
2357
|
}
|
|
2296
2358
|
},
|
|
2297
2359
|
// Legacy endpoints, split by stage (see SubscriptionService.renewNow docs):
|
|
@@ -2311,8 +2373,8 @@ function createApiSubscriptionAdapter(fetcher) {
|
|
|
2311
2373
|
result: (body == null ? void 0 : body.result) ?? "success"
|
|
2312
2374
|
}
|
|
2313
2375
|
};
|
|
2314
|
-
} catch (
|
|
2315
|
-
return { _tag: "Failure", error:
|
|
2376
|
+
} catch (e2) {
|
|
2377
|
+
return { _tag: "Failure", error: e2 };
|
|
2316
2378
|
}
|
|
2317
2379
|
},
|
|
2318
2380
|
// Legacy endpoint — POST /plan returns 204; re-fetch to return the updated subscription.
|
|
@@ -2334,8 +2396,8 @@ function createApiSubscriptionAdapter(fetcher) {
|
|
|
2334
2396
|
_tag: "Failure",
|
|
2335
2397
|
error: "Subscription not found after frequency change"
|
|
2336
2398
|
};
|
|
2337
|
-
} catch (
|
|
2338
|
-
return { _tag: "Failure", error:
|
|
2399
|
+
} catch (e2) {
|
|
2400
|
+
return { _tag: "Failure", error: e2 };
|
|
2339
2401
|
}
|
|
2340
2402
|
}
|
|
2341
2403
|
};
|
|
@@ -2398,6 +2460,14 @@ function createSubscriptionService(adapter) {
|
|
|
2398
2460
|
itemsChangedAt,
|
|
2399
2461
|
lastOrder,
|
|
2400
2462
|
search: adapter.search,
|
|
2463
|
+
// Prefer the adapter's rich cross-subscription list (legacy endpoint, active-first).
|
|
2464
|
+
// Fall back to a single `search` page for adapters that don't implement it
|
|
2465
|
+
// (e.g. the editor mock) so the cross-subscription views still render.
|
|
2466
|
+
listAll: adapter.listAll ? adapter.listAll.bind(adapter) : async () => {
|
|
2467
|
+
const result = await adapter.search();
|
|
2468
|
+
if (result._tag !== "Success") return result;
|
|
2469
|
+
return { _tag: "Success", data: result.data.items };
|
|
2470
|
+
},
|
|
2401
2471
|
getById: adapter.getById,
|
|
2402
2472
|
getCurrentSubscriptionId,
|
|
2403
2473
|
addItem: async (subscriptionId, item) => {
|
|
@@ -2746,13 +2816,14 @@ export {
|
|
|
2746
2816
|
AuthenticationError,
|
|
2747
2817
|
AuthenticationErrorReason,
|
|
2748
2818
|
B as BlockWrapperEvent,
|
|
2749
|
-
|
|
2750
|
-
|
|
2819
|
+
m as ContextProvideEvent,
|
|
2820
|
+
p as ContextRequestEvent,
|
|
2751
2821
|
CustomerServiceContext,
|
|
2752
2822
|
D2 as DEFAULT_GLOBAL_STYLES,
|
|
2753
2823
|
DISCOUNT_REJECTION_REASONS,
|
|
2754
2824
|
LoginServiceContext,
|
|
2755
2825
|
OrdersServiceContext,
|
|
2826
|
+
OverlayServiceContext,
|
|
2756
2827
|
ProductServiceContext,
|
|
2757
2828
|
RouterServiceContext,
|
|
2758
2829
|
SchedulesServiceContext,
|
|
@@ -2762,13 +2833,13 @@ export {
|
|
|
2762
2833
|
u as Signal,
|
|
2763
2834
|
StateContext,
|
|
2764
2835
|
SubscriptionServiceContext,
|
|
2765
|
-
|
|
2766
|
-
|
|
2836
|
+
a2 as ThemeStateContext,
|
|
2837
|
+
T as TranslationContext,
|
|
2767
2838
|
W as WorkflowServiceContext,
|
|
2768
|
-
|
|
2769
|
-
|
|
2770
|
-
|
|
2771
|
-
|
|
2839
|
+
q as __recordDevtoolsInstance,
|
|
2840
|
+
_ as __recordDevtoolsPropSetter,
|
|
2841
|
+
t as attachEmptyTracking,
|
|
2842
|
+
b as backfillInstanceDefaults,
|
|
2772
2843
|
w as computed,
|
|
2773
2844
|
createApiCustomerAdapter,
|
|
2774
2845
|
createApiLoginAdapter,
|
|
@@ -2776,9 +2847,9 @@ export {
|
|
|
2776
2847
|
createApiSchedulesAdapter,
|
|
2777
2848
|
createApiSubscriptionAdapter,
|
|
2778
2849
|
createBlockInstance,
|
|
2779
|
-
|
|
2780
|
-
|
|
2781
|
-
|
|
2850
|
+
v as createBlockInstanceFromJSON,
|
|
2851
|
+
f as createBlockInstanceFromObject,
|
|
2852
|
+
x as createCeRenderer,
|
|
2782
2853
|
createContext,
|
|
2783
2854
|
createCustomerService,
|
|
2784
2855
|
createLoginService,
|
|
@@ -2791,41 +2862,42 @@ export {
|
|
|
2791
2862
|
createMockSubscriptionAdapter,
|
|
2792
2863
|
createMockWorkflowApiAdapter,
|
|
2793
2864
|
createOrdersService,
|
|
2865
|
+
createOverlayService,
|
|
2794
2866
|
createProductService,
|
|
2795
2867
|
createRouterService,
|
|
2796
2868
|
createSchedulesService,
|
|
2797
|
-
|
|
2869
|
+
y as createSelectedBlock,
|
|
2798
2870
|
createSettingsService,
|
|
2799
2871
|
createShopService,
|
|
2800
2872
|
createState,
|
|
2801
2873
|
createSubscriptionService,
|
|
2802
2874
|
c as createThemeState,
|
|
2803
|
-
|
|
2875
|
+
b2 as createTranslationService,
|
|
2804
2876
|
d2 as createWorkflowApiAdapter,
|
|
2805
|
-
|
|
2877
|
+
e as createWorkflowService,
|
|
2806
2878
|
defineBlock,
|
|
2807
|
-
|
|
2879
|
+
z as defineBlockRuntime,
|
|
2808
2880
|
defineOverlayWrapper,
|
|
2809
2881
|
E as effect,
|
|
2810
|
-
|
|
2811
|
-
|
|
2812
|
-
|
|
2813
|
-
|
|
2814
|
-
|
|
2882
|
+
g as getDefaultBlockForAction,
|
|
2883
|
+
getDefinedBlocks,
|
|
2884
|
+
A as getDevtoolsBlockState,
|
|
2885
|
+
h as hasDefaultBlockForAction,
|
|
2886
|
+
D as hasRenderedContent,
|
|
2815
2887
|
i2 as indexOverrides,
|
|
2816
|
-
|
|
2817
|
-
|
|
2818
|
-
|
|
2888
|
+
i as injectContext,
|
|
2889
|
+
F as isEditorPreview,
|
|
2890
|
+
a as isStubDefinition,
|
|
2819
2891
|
loadBlockRegistry,
|
|
2820
2892
|
loginService,
|
|
2821
|
-
|
|
2822
|
-
|
|
2893
|
+
o as onRegisterBlock,
|
|
2894
|
+
G as provideContext,
|
|
2823
2895
|
registerBlock,
|
|
2824
|
-
|
|
2825
|
-
|
|
2896
|
+
j as serializeBlocks,
|
|
2897
|
+
H as setDevtoolsBlockProp,
|
|
2826
2898
|
d as signal,
|
|
2827
|
-
|
|
2828
|
-
|
|
2899
|
+
s as subscribeContext,
|
|
2900
|
+
n as untracked,
|
|
2829
2901
|
waitForDevBlocksUrl,
|
|
2830
|
-
|
|
2902
|
+
w2 as withWrapper
|
|
2831
2903
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/devtools/env.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM,EAMJ,OAAO,UAAU,CAAC;AAEjC,eAAO,MAAM,SAAS,SAAgC,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { DevtoolsEvent, DevtoolsEventKind, PropsSchema } from './protocol';
|
|
2
|
+
/**
|
|
3
|
+
* The page-side resolver surface the framework (`blocks/core`) publishes on the
|
|
4
|
+
* hook so a backend running in a *separate bundle* (e.g. an injected extension
|
|
5
|
+
* script) can read/write live block state without importing `@juo/blocks`.
|
|
6
|
+
* Tree + picker are NOT here — the backend derives them from the DOM.
|
|
7
|
+
*/
|
|
8
|
+
export interface DevtoolsResolverSurface {
|
|
9
|
+
getBlockState(id: string): {
|
|
10
|
+
props: Record<string, unknown>;
|
|
11
|
+
propsSchema: PropsSchema;
|
|
12
|
+
} | null;
|
|
13
|
+
setBlockProp(id: string, key: string, value: unknown): {
|
|
14
|
+
props: Record<string, unknown>;
|
|
15
|
+
} | null;
|
|
16
|
+
/** Registry name → editor display label (displayName ?? name). */
|
|
17
|
+
getBlockCatalog(): Record<string, string>;
|
|
18
|
+
}
|
|
19
|
+
export interface JuoBlocksDevtoolsHook {
|
|
20
|
+
readonly version: number;
|
|
21
|
+
emit(kind: DevtoolsEventKind, payload: Record<string, unknown>): void;
|
|
22
|
+
on(cb: (e: DevtoolsEvent) => void): () => void;
|
|
23
|
+
off(cb: (e: DevtoolsEvent) => void): void;
|
|
24
|
+
/** Attached by `blocks/core` on first lifecycle emit; undefined until then. */
|
|
25
|
+
resolvers?: DevtoolsResolverSurface;
|
|
26
|
+
}
|
|
27
|
+
declare global {
|
|
28
|
+
var __JUO_BLOCKS_DEVTOOLS_HOOK__: JuoBlocksDevtoolsHook | undefined;
|
|
29
|
+
}
|
|
30
|
+
export declare function createHook(): JuoBlocksDevtoolsHook;
|
|
31
|
+
/** Installs (idempotently) and returns the global hook. */
|
|
32
|
+
export declare function installHook(): JuoBlocksDevtoolsHook;
|
|
33
|
+
/** Returns the global hook if a shell has installed one, else undefined. */
|
|
34
|
+
export declare function getHook(): JuoBlocksDevtoolsHook | undefined;
|
|
35
|
+
//# sourceMappingURL=hook.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../src/devtools/hook.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EACjB,MAAM,YAAY,CAAC;AAIpB;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG;QACzB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,WAAW,EAAE,WAAW,CAAC;KAC1B,GAAG,IAAI,CAAC;IACT,YAAY,CACV,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,GACb;QACD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAChC,GAAG,IAAI,CAAC;IACT,kEAAkE;IAClE,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACtE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC/C,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI,CAAC;IAC1C,+EAA+E;IAC/E,SAAS,CAAC,EAAE,uBAAuB,CAAC;CACrC;AAED,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,4BAA4B,EAAE,qBAAqB,GAAG,SAAS,CAAC;CACrE;AAED,wBAAgB,UAAU,IAAI,qBAAqB,CAqBlD;AAED,2DAA2D;AAC3D,wBAAgB,WAAW,IAAI,qBAAqB,CAEnD;AAED,4EAA4E;AAC5E,wBAAgB,OAAO,IAAI,qBAAqB,GAAG,SAAS,CAE3D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/devtools/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC"}
|