@burdenoff/microfe-devportal 2026.1013.2 → 2026.1024.1
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/devportal/components/PackageValidationPanel.d.ts +31 -0
- package/dist/devportal/components/PackageValidationPanel.d.ts.map +1 -0
- package/dist/devportal/components/PackageValidationPanel.js +104 -0
- package/dist/devportal/components/PackageValidationPanel.js.map +1 -0
- package/dist/devportal/components/index.d.ts +1 -0
- package/dist/devportal/components/index.d.ts.map +1 -1
- package/dist/devportal/components/index.js +1 -0
- package/dist/devportal/pages/AdminReviewPage.d.ts.map +1 -1
- package/dist/devportal/pages/AdminReviewPage.js +192 -181
- package/dist/devportal/pages/AdminReviewPage.js.map +1 -1
- package/dist/devportal/pages/ApplicationVersionsPage.d.ts.map +1 -1
- package/dist/devportal/pages/ApplicationVersionsPage.js +117 -115
- package/dist/devportal/pages/ApplicationVersionsPage.js.map +1 -1
- package/dist/generated/global-operations.d.ts +1 -0
- package/dist/generated/global-operations.d.ts.map +1 -1
- package/dist/generated/global-operations.js +1 -0
- package/dist/generated/global-operations.js.map +1 -1
- package/dist/generated/global-types.d.ts +338 -8
- package/dist/generated/global-types.d.ts.map +1 -1
- package/dist/generated/global-types.js.map +1 -1
- package/package.json +1 -1
|
@@ -10,17 +10,18 @@ import { ConfirmDialog as i } from "../components/ConfirmDialog.js";
|
|
|
10
10
|
import { PermissionGuard as de } from "../components/PermissionGuard.js";
|
|
11
11
|
import { MarkdownEditor as a } from "../components/MarkdownEditor.js";
|
|
12
12
|
import { ManifestViewer as fe } from "../components/ManifestViewer.js";
|
|
13
|
+
import { PackageValidationPanel as pe } from "../components/PackageValidationPanel.js";
|
|
13
14
|
import "../components/index.js";
|
|
14
15
|
import { useDevportalPermission as o } from "../hooks/usePermission.js";
|
|
15
16
|
import "../hooks/index.js";
|
|
16
|
-
import { DEVPORTAL_PERMISSIONS as
|
|
17
|
-
import
|
|
18
|
-
import { usePackageUpload as
|
|
19
|
-
import { useCallback as s, useEffect as
|
|
20
|
-
import { AlertCircle as d, Archive as
|
|
21
|
-
import { useParams as
|
|
17
|
+
import { DEVPORTAL_PERMISSIONS as me } from "../constants/permissions.js";
|
|
18
|
+
import he from "../../node_modules/date-fns/format.js";
|
|
19
|
+
import { usePackageUpload as ge } from "../hooks/usePackageUpload.js";
|
|
20
|
+
import { useCallback as s, useEffect as _e, useMemo as c, useRef as l, useState as u } from "react";
|
|
21
|
+
import { AlertCircle as d, Archive as ve, CheckCircle as ye, Clock as be, Loader2 as xe, Package as Se, Plus as Ce, Send as f, Upload as p, XCircle as we } from "lucide-react";
|
|
22
|
+
import { useParams as Te } from "react-router";
|
|
22
23
|
import { Fragment as m, jsx as h, jsxs as g } from "react/jsx-runtime";
|
|
23
|
-
import { useI18n as
|
|
24
|
+
import { useI18n as Ee } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
24
25
|
//#region src/devportal/pages/ApplicationVersionsPage.tsx
|
|
25
26
|
var _ = (e) => {
|
|
26
27
|
if (e.trim()) try {
|
|
@@ -30,11 +31,11 @@ var _ = (e) => {
|
|
|
30
31
|
if (n && typeof n.version == "string" && n.version.trim()) return n.version.trim();
|
|
31
32
|
if (typeof t.version == "string" && t.version.trim()) return t.version.trim();
|
|
32
33
|
} catch {}
|
|
33
|
-
},
|
|
34
|
-
let { t:
|
|
35
|
-
let n =
|
|
34
|
+
}, De = () => {
|
|
35
|
+
let { t: De } = Ee(), v = (e, t) => {
|
|
36
|
+
let n = De(e);
|
|
36
37
|
return n === e ? t : n;
|
|
37
|
-
}, { allowed:
|
|
38
|
+
}, { allowed: Oe } = o(me.APP_VERSION_CREATE), { allowed: y } = o(me.APP_VERSION_PUBLISH), { allowed: b } = o(me.APP_VERSION_DEPRECATE), { appId: x } = Te(), { workspacesGatewayUrl: ke, authToken: Ae, workspaceId: je, getWorkspaceToken: Me } = e(), { upload: S, uploading: C, progress: Ne, error: w } = ge(ke, Ae, je, Me), Pe = l(null), Fe = l(null), Ie = l(null), Le = l(null), [Re, ze] = u(null), [Be, T] = u(null), [Ve, E] = u(!1), [D, O] = u(null), [k, A] = u({
|
|
38
39
|
version: "",
|
|
39
40
|
releaseNotes: "",
|
|
40
41
|
changelog: "",
|
|
@@ -42,7 +43,7 @@ var _ = (e) => {
|
|
|
42
43
|
packageSize: "",
|
|
43
44
|
manifestJson: "",
|
|
44
45
|
requiredScopes: ""
|
|
45
|
-
}), [
|
|
46
|
+
}), [He, j] = u(null), [Ue, M] = u(null), [We, N] = u(null), [Ge, P] = u(null), [F, I] = u(/* @__PURE__ */ new Set()), [L, Ke] = u(null), [R, z] = u(""), qe = s((e) => {
|
|
46
47
|
let t = e.target.files?.[0];
|
|
47
48
|
if (!t) return;
|
|
48
49
|
let n = new FileReader();
|
|
@@ -54,10 +55,10 @@ var _ = (e) => {
|
|
|
54
55
|
...t,
|
|
55
56
|
manifestJson: n,
|
|
56
57
|
...e ? { version: e } : {}
|
|
57
|
-
})),
|
|
58
|
+
})), ze(t.name);
|
|
58
59
|
}
|
|
59
60
|
}, n.readAsText(t), e.target.value = "";
|
|
60
|
-
}, []), [
|
|
61
|
+
}, []), [Je, B] = u(null), { data: V } = te({
|
|
61
62
|
variables: { id: x ?? "" },
|
|
62
63
|
skip: !x,
|
|
63
64
|
fetchPolicy: "cache-first"
|
|
@@ -66,18 +67,18 @@ var _ = (e) => {
|
|
|
66
67
|
"PARSER",
|
|
67
68
|
"WIDGET",
|
|
68
69
|
"DASHBOARD"
|
|
69
|
-
].includes(V?.application?.appType ?? ""),
|
|
70
|
-
|
|
70
|
+
].includes(V?.application?.appType ?? ""), Ye = !W && !U, G = V?.application, Xe = G?.pricingDetails ?? {}, Ze = G?.pricingType === "FREE" || G?.pricingType === "PAID" && typeof Xe.price == "number" && Xe.price > 0, Qe = !!G?.shortDescription?.trim() && !!G?.privacyPolicyUrl?.trim() && !!G?.termsOfServiceUrl?.trim(), K = Ze && Qe, $e = [...Qe ? [] : ["Complete your store listing (short description, privacy policy, terms of service)"], ...Ze ? [] : ["Set pricing in the Pricing tab"]];
|
|
71
|
+
_e(() => {
|
|
71
72
|
let e = V?.application?.name;
|
|
72
73
|
if (!x || !e) return;
|
|
73
74
|
let t = window.__breadcrumbRegistry;
|
|
74
75
|
return t?.register(x, e), () => t?.unregister(x);
|
|
75
76
|
}, [x, V?.application?.name]);
|
|
76
|
-
let { data: q, loading:
|
|
77
|
+
let { data: q, loading: et, error: tt } = ne({
|
|
77
78
|
variables: { applicationId: x },
|
|
78
79
|
skip: !x,
|
|
79
80
|
fetchPolicy: "cache-and-network"
|
|
80
|
-
}), [
|
|
81
|
+
}), [nt, { loading: rt }] = r({ refetchQueries: ["GetApplicationVersions"] }), [it, { loading: at }] = ae({ refetchQueries: ["GetApplicationVersions"] }), [ot] = re({ refetchQueries: ["GetApplicationVersions"] }), [st] = ee({ refetchQueries: ["GetApplicationVersions"] }), [ct] = n({ refetchQueries: ["GetApplicationVersions"] }), [lt] = ie({ refetchQueries: ["GetApplicationVersions"] }), J = c(() => q?.application?.versions?.edges?.map((e) => e.node) ?? [], [q?.application?.versions]), Y = c(() => J.filter((e) => F.has(e.id)), [J, F]), X = c(() => Y.filter((e) => e.status === "draft" || e.status === "rejected"), [Y]), Z = c(() => J.some((e) => e.status === "pending_review"), [J]), Q = c(() => Y.filter((e) => e.status?.toUpperCase() === "PUBLISHED" && !e.isLatest), [Y]), ut = J.length > 0 && J.every((e) => F.has(e.id)), dt = J.some((e) => F.has(e.id)) && !ut, ft = async () => {
|
|
81
82
|
if (!x || !k.version.trim()) return;
|
|
82
83
|
N(null);
|
|
83
84
|
let e;
|
|
@@ -113,9 +114,9 @@ var _ = (e) => {
|
|
|
113
114
|
N("Invalid JSON in manifest — please check your input.");
|
|
114
115
|
return;
|
|
115
116
|
}
|
|
116
|
-
let t =
|
|
117
|
+
let t = Ye && k.requiredScopes.trim() ? k.requiredScopes.split(",").map((e) => e.trim()).filter(Boolean) : void 0;
|
|
117
118
|
try {
|
|
118
|
-
await
|
|
119
|
+
await nt({ variables: {
|
|
119
120
|
applicationId: x,
|
|
120
121
|
input: {
|
|
121
122
|
version: k.version,
|
|
@@ -126,7 +127,7 @@ var _ = (e) => {
|
|
|
126
127
|
manifest: e,
|
|
127
128
|
requiredScopes: t
|
|
128
129
|
}
|
|
129
|
-
} }), E(!1),
|
|
130
|
+
} }), E(!1), ze(null), A({
|
|
130
131
|
version: "",
|
|
131
132
|
releaseNotes: "",
|
|
132
133
|
changelog: "",
|
|
@@ -138,7 +139,7 @@ var _ = (e) => {
|
|
|
138
139
|
} catch (e) {
|
|
139
140
|
j(e instanceof Error ? e.message : v("devportal.versionCreateFailed", "Failed to create version"));
|
|
140
141
|
}
|
|
141
|
-
},
|
|
142
|
+
}, pt = s(async (e) => {
|
|
142
143
|
let t = e.target.files?.[0];
|
|
143
144
|
if (t) {
|
|
144
145
|
e.target.value = "";
|
|
@@ -151,7 +152,7 @@ var _ = (e) => {
|
|
|
151
152
|
}));
|
|
152
153
|
} catch {}
|
|
153
154
|
}
|
|
154
|
-
}, [S]),
|
|
155
|
+
}, [S]), mt = s(async (e) => {
|
|
155
156
|
let t = e.target.files?.[0];
|
|
156
157
|
if (t) {
|
|
157
158
|
e.target.value = "";
|
|
@@ -164,7 +165,7 @@ var _ = (e) => {
|
|
|
164
165
|
});
|
|
165
166
|
} catch {}
|
|
166
167
|
}
|
|
167
|
-
}, [S]),
|
|
168
|
+
}, [S]), ht = s((e) => {
|
|
168
169
|
let t = e.target.files?.[0];
|
|
169
170
|
if (!t) return;
|
|
170
171
|
let n = new FileReader();
|
|
@@ -175,7 +176,7 @@ var _ = (e) => {
|
|
|
175
176
|
manifestJson: n
|
|
176
177
|
}), T(t.name));
|
|
177
178
|
}, n.readAsText(t), e.target.value = "";
|
|
178
|
-
}, []),
|
|
179
|
+
}, []), gt = async () => {
|
|
179
180
|
if (!D) return;
|
|
180
181
|
P(null);
|
|
181
182
|
let e = D.manifestJson.trim() !== D.originalManifestJson.trim(), t;
|
|
@@ -188,90 +189,90 @@ var _ = (e) => {
|
|
|
188
189
|
let n = {};
|
|
189
190
|
D.releaseNotes.trim() && (n.releaseNotes = D.releaseNotes), D.changelog.trim() && (n.changelog = D.changelog), D.newPackageUrl && (n.packageUrl = D.newPackageUrl, n.packageSize = D.newPackageSize), t && (n.manifest = t);
|
|
190
191
|
try {
|
|
191
|
-
await
|
|
192
|
+
await it({ variables: {
|
|
192
193
|
id: D.versionId,
|
|
193
194
|
input: n
|
|
194
195
|
} }), O(null), T(null), M(v("devportal.versionUpdatedSuccess", "Version updated successfully"));
|
|
195
196
|
} catch (e) {
|
|
196
197
|
j(e instanceof Error ? e.message : v("devportal.versionUpdateFailed", "Failed to update version"));
|
|
197
198
|
}
|
|
198
|
-
},
|
|
199
|
+
}, _t = async (e) => {
|
|
199
200
|
j(null), M(null);
|
|
200
201
|
try {
|
|
201
|
-
await
|
|
202
|
+
await ot({ variables: { id: e } }), M(v("devportal.versionSubmittedSuccess", "Version submitted for review — you'll be notified when approved"));
|
|
202
203
|
} catch (e) {
|
|
203
204
|
j(e instanceof Error ? e.message : v("devportal.versionPublishFailed", "Failed to submit version for review"));
|
|
204
205
|
}
|
|
205
|
-
},
|
|
206
|
+
}, vt = async (e) => {
|
|
206
207
|
j(null), M(null);
|
|
207
208
|
try {
|
|
208
|
-
await
|
|
209
|
+
await st({ variables: { id: e } }), M(v("devportal.versionDeprecatedSuccess", "Version deprecated successfully"));
|
|
209
210
|
} catch (e) {
|
|
210
211
|
j(e instanceof Error ? e.message : v("devportal.versionDeprecateFailed", "Failed to deprecate version"));
|
|
211
212
|
}
|
|
212
|
-
},
|
|
213
|
+
}, yt = async () => {
|
|
213
214
|
if (!(!L || !R.trim())) {
|
|
214
215
|
j(null), M(null);
|
|
215
216
|
try {
|
|
216
|
-
await
|
|
217
|
+
await lt({ variables: {
|
|
217
218
|
id: L.versionId,
|
|
218
219
|
reason: R
|
|
219
|
-
} }), M(v("devportal.versionRejectedSuccess", "Version rejected — developer has been notified")),
|
|
220
|
+
} }), M(v("devportal.versionRejectedSuccess", "Version rejected — developer has been notified")), Ke(null), z("");
|
|
220
221
|
} catch (e) {
|
|
221
222
|
j(e instanceof Error ? e.message : v("devportal.versionRejectFailed", "Failed to reject version"));
|
|
222
223
|
}
|
|
223
224
|
}
|
|
224
|
-
},
|
|
225
|
+
}, bt = (e) => e.status === "published" && e.isLatest ? /* @__PURE__ */ h(ye, {
|
|
225
226
|
size: 16,
|
|
226
227
|
className: "text-status-success-text"
|
|
227
228
|
}) : e.status === "pending_review" ? /* @__PURE__ */ h(f, {
|
|
228
229
|
size: 16,
|
|
229
230
|
className: "text-status-info-text"
|
|
230
|
-
}) : e.status === "rejected" ? /* @__PURE__ */ h(
|
|
231
|
+
}) : e.status === "rejected" ? /* @__PURE__ */ h(we, {
|
|
231
232
|
size: 16,
|
|
232
233
|
className: "text-status-error-text"
|
|
233
|
-
}) : e.status === "draft" ? /* @__PURE__ */ h(
|
|
234
|
+
}) : e.status === "draft" ? /* @__PURE__ */ h(be, {
|
|
234
235
|
size: 16,
|
|
235
236
|
className: "text-status-warning-text"
|
|
236
|
-
}) : e.status === "deprecated" ? /* @__PURE__ */ h(
|
|
237
|
+
}) : e.status === "deprecated" ? /* @__PURE__ */ h(ve, {
|
|
237
238
|
size: 16,
|
|
238
239
|
className: "text-text-secondary"
|
|
239
|
-
}) : /* @__PURE__ */ h(
|
|
240
|
+
}) : /* @__PURE__ */ h(Se, {
|
|
240
241
|
size: 16,
|
|
241
242
|
className: "text-accent-blue"
|
|
242
|
-
}),
|
|
243
|
+
}), xt = (e, t) => {
|
|
243
244
|
I((n) => {
|
|
244
245
|
let r = new Set(n);
|
|
245
246
|
return t ? r.add(e) : r.delete(e), r;
|
|
246
247
|
});
|
|
247
|
-
},
|
|
248
|
+
}, St = (e) => {
|
|
248
249
|
I((t) => {
|
|
249
250
|
let n = new Set(t);
|
|
250
251
|
return J.forEach((t) => {
|
|
251
252
|
e ? n.add(t.id) : n.delete(t.id);
|
|
252
253
|
}), n;
|
|
253
254
|
});
|
|
254
|
-
}, $ = () => I(/* @__PURE__ */ new Set()),
|
|
255
|
+
}, $ = () => I(/* @__PURE__ */ new Set()), Ct = async () => {
|
|
255
256
|
if (X.length === 0) return;
|
|
256
257
|
j(null);
|
|
257
|
-
let e = await Promise.allSettled(X.map((e) =>
|
|
258
|
+
let e = await Promise.allSettled(X.map((e) => ot({ variables: { id: e.id } }))), t = e.filter((e) => e.status === "fulfilled").length, n = e.length - t;
|
|
258
259
|
M(`Published ${t} version${t === 1 ? "" : "s"}${n > 0 ? ` • ${n} failed` : ""}`), $(), B(null);
|
|
259
|
-
},
|
|
260
|
+
}, wt = async () => {
|
|
260
261
|
if (Q.length === 0) return;
|
|
261
262
|
j(null);
|
|
262
|
-
let e = await Promise.allSettled(Q.map((e) =>
|
|
263
|
+
let e = await Promise.allSettled(Q.map((e) => st({ variables: { id: e.id } }))), t = e.filter((e) => e.status === "fulfilled").length, n = e.length - t;
|
|
263
264
|
M(`Deprecated ${t} version${t === 1 ? "" : "s"}${n > 0 ? ` • ${n} failed` : ""}`), $(), B(null);
|
|
264
|
-
},
|
|
265
|
-
return
|
|
265
|
+
}, Tt = _(k.manifestJson);
|
|
266
|
+
return et && !q ? /* @__PURE__ */ h(oe, {
|
|
266
267
|
title: v("devportal.versionManagement", "Version Management"),
|
|
267
268
|
description: v("devportal.versionManagementDescription", "Manage your application versions"),
|
|
268
269
|
backLink: `/apps/${x}`,
|
|
269
270
|
backLabel: v("devportal.backToApplication", "Back to Application"),
|
|
270
271
|
children: /* @__PURE__ */ h("div", {
|
|
271
272
|
className: "flex items-center justify-center py-16",
|
|
272
|
-
children: /* @__PURE__ */ h(
|
|
273
|
+
children: /* @__PURE__ */ h(xe, { className: "h-8 w-8 animate-spin text-text-secondary" })
|
|
273
274
|
})
|
|
274
|
-
}) :
|
|
275
|
+
}) : tt && !q ? /* @__PURE__ */ h(oe, {
|
|
275
276
|
title: v("devportal.versionManagement", "Version Management"),
|
|
276
277
|
description: v("devportal.versionManagementDescription", "Manage your application versions"),
|
|
277
278
|
backLink: `/apps/${x}`,
|
|
@@ -282,7 +283,7 @@ var _ = (e) => {
|
|
|
282
283
|
className: "text-status-error-text"
|
|
283
284
|
}),
|
|
284
285
|
title: v("devportal.failedToLoadVersions", "Failed to load versions"),
|
|
285
|
-
description:
|
|
286
|
+
description: tt.message || v("devportal.versionsLoadError", "An error occurred while loading versions")
|
|
286
287
|
})
|
|
287
288
|
}) : /* @__PURE__ */ h(de, {
|
|
288
289
|
authOnly: !0,
|
|
@@ -296,20 +297,20 @@ var _ = (e) => {
|
|
|
296
297
|
onClick: () => {
|
|
297
298
|
N(null), E(!0);
|
|
298
299
|
},
|
|
299
|
-
disabled: !
|
|
300
|
-
"aria-disabled": !
|
|
300
|
+
disabled: !Oe,
|
|
301
|
+
"aria-disabled": !Oe,
|
|
301
302
|
className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 disabled:opacity-50",
|
|
302
|
-
children: [/* @__PURE__ */ h(
|
|
303
|
+
children: [/* @__PURE__ */ h(Ce, { size: 16 }), v("devportal.newVersion", "New Version")]
|
|
303
304
|
}),
|
|
304
305
|
children: [
|
|
305
|
-
|
|
306
|
+
He && /* @__PURE__ */ g("div", {
|
|
306
307
|
className: "rounded-lg border border-border-subtle bg-status-error-bg-subtle p-3 flex items-center gap-2 text-sm text-status-error-text",
|
|
307
308
|
children: [
|
|
308
309
|
/* @__PURE__ */ h(d, {
|
|
309
310
|
size: 16,
|
|
310
311
|
className: "flex-shrink-0"
|
|
311
312
|
}),
|
|
312
|
-
|
|
313
|
+
He,
|
|
313
314
|
/* @__PURE__ */ h("button", {
|
|
314
315
|
onClick: () => j(null),
|
|
315
316
|
className: "ml-auto text-status-error-text hover:text-status-error-text",
|
|
@@ -317,14 +318,14 @@ var _ = (e) => {
|
|
|
317
318
|
})
|
|
318
319
|
]
|
|
319
320
|
}),
|
|
320
|
-
|
|
321
|
+
Ue && /* @__PURE__ */ g("div", {
|
|
321
322
|
className: "rounded-lg border border-border-subtle bg-status-success-bg-subtle p-3 flex items-center gap-2 text-sm text-status-success-text",
|
|
322
323
|
children: [
|
|
323
|
-
/* @__PURE__ */ h(
|
|
324
|
+
/* @__PURE__ */ h(ye, {
|
|
324
325
|
size: 16,
|
|
325
326
|
className: "flex-shrink-0"
|
|
326
327
|
}),
|
|
327
|
-
|
|
328
|
+
Ue,
|
|
328
329
|
/* @__PURE__ */ h("button", {
|
|
329
330
|
onClick: () => M(null),
|
|
330
331
|
className: "ml-auto text-status-success-text hover:text-status-success-text",
|
|
@@ -342,7 +343,7 @@ var _ = (e) => {
|
|
|
342
343
|
children: "Complete your app setup before submitting for review"
|
|
343
344
|
}), /* @__PURE__ */ h("ul", {
|
|
344
345
|
className: "mt-1 list-disc pl-4 text-xs opacity-80",
|
|
345
|
-
children:
|
|
346
|
+
children: $e.map((e) => /* @__PURE__ */ h("li", { children: e }, e))
|
|
346
347
|
})] })]
|
|
347
348
|
}),
|
|
348
349
|
G && G.status !== "PUBLISHED" && J.some((e) => e.status === "draft") && /* @__PURE__ */ g("div", {
|
|
@@ -384,9 +385,9 @@ var _ = (e) => {
|
|
|
384
385
|
children: [/* @__PURE__ */ g("div", {
|
|
385
386
|
className: "flex items-center gap-2",
|
|
386
387
|
children: [/* @__PURE__ */ h(ce, {
|
|
387
|
-
checked:
|
|
388
|
-
indeterminate:
|
|
389
|
-
onChange:
|
|
388
|
+
checked: ut,
|
|
389
|
+
indeterminate: dt,
|
|
390
|
+
onChange: St,
|
|
390
391
|
ariaLabel: "Select all visible versions"
|
|
391
392
|
}), /* @__PURE__ */ h("span", {
|
|
392
393
|
className: "text-sm font-medium",
|
|
@@ -408,7 +409,7 @@ var _ = (e) => {
|
|
|
408
409
|
onClick: () => B("publish"),
|
|
409
410
|
disabled: X.length === 0 || !y || !K || Z,
|
|
410
411
|
"aria-disabled": !y || !K || Z,
|
|
411
|
-
title: Z ? v("devportal.versionAlreadyPending", "A version is already pending review") : K ? void 0 :
|
|
412
|
+
title: Z ? v("devportal.versionAlreadyPending", "A version is already pending review") : K ? void 0 : $e.join(" · "),
|
|
412
413
|
className: "rounded-md border border-status-success-bg px-3 py-2 text-sm font-medium text-status-success-text hover:bg-status-success-bg-subtle disabled:cursor-not-allowed disabled:opacity-50",
|
|
413
414
|
children: [v("devportal.submitForReview", "Submit for Review"), X.length > 0 ? ` (${X.length})` : ""]
|
|
414
415
|
}),
|
|
@@ -430,9 +431,9 @@ var _ = (e) => {
|
|
|
430
431
|
{
|
|
431
432
|
key: "select",
|
|
432
433
|
header: /* @__PURE__ */ h(ce, {
|
|
433
|
-
checked:
|
|
434
|
-
indeterminate:
|
|
435
|
-
onChange:
|
|
434
|
+
checked: ut,
|
|
435
|
+
indeterminate: dt,
|
|
436
|
+
onChange: St,
|
|
436
437
|
ariaLabel: "Select all visible versions"
|
|
437
438
|
}),
|
|
438
439
|
className: "w-12",
|
|
@@ -440,7 +441,7 @@ var _ = (e) => {
|
|
|
440
441
|
onClick: (e) => e.stopPropagation(),
|
|
441
442
|
children: /* @__PURE__ */ h(ce, {
|
|
442
443
|
checked: F.has(e.id),
|
|
443
|
-
onChange: (t) =>
|
|
444
|
+
onChange: (t) => xt(e.id, t),
|
|
444
445
|
ariaLabel: `Select version ${e.version}`
|
|
445
446
|
})
|
|
446
447
|
})
|
|
@@ -451,7 +452,7 @@ var _ = (e) => {
|
|
|
451
452
|
render: (e) => /* @__PURE__ */ g("div", {
|
|
452
453
|
className: "flex items-center gap-2",
|
|
453
454
|
children: [
|
|
454
|
-
|
|
455
|
+
bt(e),
|
|
455
456
|
/* @__PURE__ */ h("span", {
|
|
456
457
|
className: "font-mono font-medium",
|
|
457
458
|
children: e.version
|
|
@@ -489,14 +490,15 @@ var _ = (e) => {
|
|
|
489
490
|
e.status === "rejected" && e.reviewNotes && /* @__PURE__ */ h("p", {
|
|
490
491
|
className: "text-xs text-status-error-text max-w-xs",
|
|
491
492
|
children: e.reviewNotes
|
|
492
|
-
})
|
|
493
|
+
}),
|
|
494
|
+
U && e.packageUrl && /* @__PURE__ */ h(pe, { metadata: e.metadata })
|
|
493
495
|
]
|
|
494
496
|
})
|
|
495
497
|
},
|
|
496
498
|
{
|
|
497
499
|
key: "publishedAt",
|
|
498
500
|
header: v("devportal.published", "Published"),
|
|
499
|
-
render: (e) => e.publishedAt ?
|
|
501
|
+
render: (e) => e.publishedAt ? he(new Date(e.publishedAt), "MMM d, yyyy") : "-"
|
|
500
502
|
},
|
|
501
503
|
{
|
|
502
504
|
key: "manifest",
|
|
@@ -516,7 +518,7 @@ var _ = (e) => {
|
|
|
516
518
|
render: (e) => /* @__PURE__ */ g("div", {
|
|
517
519
|
className: "flex flex-wrap gap-2",
|
|
518
520
|
children: [
|
|
519
|
-
(e.status === "draft" || e.status === "rejected") &&
|
|
521
|
+
(e.status === "draft" || e.status === "rejected") && Oe && /* @__PURE__ */ h("button", {
|
|
520
522
|
className: "inline-flex items-center gap-1 text-xs text-text-secondary hover:text-text-primary hover:underline",
|
|
521
523
|
onClick: () => {
|
|
522
524
|
let t = e.manifest ? JSON.stringify(e.manifest, null, 2) : "";
|
|
@@ -538,15 +540,15 @@ var _ = (e) => {
|
|
|
538
540
|
className: "inline-flex items-center gap-1 text-xs text-primary hover:underline disabled:opacity-50 disabled:cursor-not-allowed",
|
|
539
541
|
disabled: !y || !K || Z,
|
|
540
542
|
"aria-disabled": !y || !K || Z,
|
|
541
|
-
title: Z ? v("devportal.versionAlreadyPending", "A version is already pending review") : K ? void 0 :
|
|
542
|
-
onClick: () =>
|
|
543
|
+
title: Z ? v("devportal.versionAlreadyPending", "A version is already pending review") : K ? void 0 : $e.join(" · "),
|
|
544
|
+
onClick: () => _t(e.id),
|
|
543
545
|
children: [/* @__PURE__ */ h(f, { size: 11 }), v("devportal.submitForReview", "Submit for Review")]
|
|
544
546
|
}),
|
|
545
547
|
e.status === "published" && !e.isLatest && /* @__PURE__ */ h("button", {
|
|
546
548
|
className: "text-xs text-status-warning-text hover:underline disabled:opacity-50",
|
|
547
549
|
disabled: !b,
|
|
548
550
|
"aria-disabled": !b,
|
|
549
|
-
onClick: () =>
|
|
551
|
+
onClick: () => vt(e.id),
|
|
550
552
|
children: v("devportal.deprecate", "Deprecate")
|
|
551
553
|
})
|
|
552
554
|
]
|
|
@@ -562,26 +564,26 @@ var _ = (e) => {
|
|
|
562
564
|
N(null), E(!0);
|
|
563
565
|
},
|
|
564
566
|
className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90",
|
|
565
|
-
children: [/* @__PURE__ */ h(
|
|
567
|
+
children: [/* @__PURE__ */ h(Ce, { size: 16 }), v("devportal.createVersion", "Create Version")]
|
|
566
568
|
})
|
|
567
569
|
}),
|
|
568
|
-
|
|
569
|
-
open:
|
|
570
|
+
Ve && /* @__PURE__ */ h(i, {
|
|
571
|
+
open: Ve,
|
|
570
572
|
onOpenChange: (e) => {
|
|
571
573
|
E(e), e || N(null);
|
|
572
574
|
},
|
|
573
|
-
onConfirm:
|
|
575
|
+
onConfirm: ft,
|
|
574
576
|
title: v("devportal.createNewVersion", "Create New Version"),
|
|
575
|
-
confirmLabel:
|
|
577
|
+
confirmLabel: rt ? v("devportal.creating", "Creating...") : v("devportal.createVersion", "Create Version"),
|
|
576
578
|
children: /* @__PURE__ */ g("div", {
|
|
577
579
|
className: "space-y-4",
|
|
578
580
|
children: [
|
|
579
|
-
|
|
581
|
+
We && /* @__PURE__ */ g("div", {
|
|
580
582
|
className: "rounded-lg border border-status-error-bg bg-status-error-bg-subtle p-3 flex items-center gap-2 text-sm text-status-error-text",
|
|
581
583
|
children: [/* @__PURE__ */ h(d, {
|
|
582
584
|
size: 14,
|
|
583
585
|
className: "flex-shrink-0"
|
|
584
|
-
}),
|
|
586
|
+
}), We]
|
|
585
587
|
}),
|
|
586
588
|
/* @__PURE__ */ h(ue, {
|
|
587
589
|
label: v("devportal.versionNumber", "Version Number"),
|
|
@@ -591,8 +593,8 @@ var _ = (e) => {
|
|
|
591
593
|
version: e.target.value
|
|
592
594
|
}),
|
|
593
595
|
placeholder: "e.g., 2.2.0",
|
|
594
|
-
hint:
|
|
595
|
-
readOnly: !!
|
|
596
|
+
hint: Tt ? v("devportal.versionHintAutoFilled", "Filled in from the manifest's version — edit it there if this is wrong.") : v("devportal.versionHint", "Use semantic versioning (major.minor.patch). Upload a manifest.json/manifest with a version to fill this in automatically."),
|
|
597
|
+
readOnly: !!Tt,
|
|
596
598
|
required: !0
|
|
597
599
|
}),
|
|
598
600
|
W && /* @__PURE__ */ g("div", {
|
|
@@ -652,25 +654,25 @@ var _ = (e) => {
|
|
|
652
654
|
className: "flex gap-2 items-center",
|
|
653
655
|
children: [
|
|
654
656
|
/* @__PURE__ */ h("input", {
|
|
655
|
-
ref:
|
|
657
|
+
ref: Pe,
|
|
656
658
|
type: "file",
|
|
657
659
|
accept: ".zip",
|
|
658
660
|
className: "hidden",
|
|
659
|
-
onChange:
|
|
661
|
+
onChange: pt
|
|
660
662
|
}),
|
|
661
663
|
/* @__PURE__ */ h("button", {
|
|
662
664
|
type: "button",
|
|
663
665
|
disabled: C,
|
|
664
|
-
onClick: () =>
|
|
666
|
+
onClick: () => Pe.current?.click(),
|
|
665
667
|
className: "inline-flex items-center gap-1.5 rounded-md border px-3 py-1.5 text-sm font-medium hover:bg-bg-sunken transition-colors disabled:opacity-50",
|
|
666
668
|
children: C ? /* @__PURE__ */ g(m, { children: [
|
|
667
|
-
/* @__PURE__ */ h(
|
|
669
|
+
/* @__PURE__ */ h(xe, {
|
|
668
670
|
size: 14,
|
|
669
671
|
className: "animate-spin"
|
|
670
672
|
}),
|
|
671
673
|
" ",
|
|
672
674
|
"Uploading… ",
|
|
673
|
-
|
|
675
|
+
Ne,
|
|
674
676
|
"%"
|
|
675
677
|
] }) : /* @__PURE__ */ g(m, { children: [
|
|
676
678
|
/* @__PURE__ */ h(p, { size: 14 }),
|
|
@@ -712,20 +714,20 @@ var _ = (e) => {
|
|
|
712
714
|
}), /* @__PURE__ */ g("div", {
|
|
713
715
|
className: "flex items-center gap-2",
|
|
714
716
|
children: [
|
|
715
|
-
|
|
717
|
+
Re && /* @__PURE__ */ g("span", {
|
|
716
718
|
className: "text-xs text-status-success-text",
|
|
717
|
-
children: ["✓ ",
|
|
719
|
+
children: ["✓ ", Re]
|
|
718
720
|
}),
|
|
719
721
|
/* @__PURE__ */ h("input", {
|
|
720
|
-
ref:
|
|
722
|
+
ref: Fe,
|
|
721
723
|
type: "file",
|
|
722
724
|
accept: ".json,application/json",
|
|
723
725
|
className: "hidden",
|
|
724
|
-
onChange:
|
|
726
|
+
onChange: qe
|
|
725
727
|
}),
|
|
726
728
|
/* @__PURE__ */ g("button", {
|
|
727
729
|
type: "button",
|
|
728
|
-
onClick: () =>
|
|
730
|
+
onClick: () => Fe.current?.click(),
|
|
729
731
|
className: "inline-flex items-center gap-1.5 rounded-md border border-border-subtle px-2.5 py-1 text-xs font-medium hover:bg-bg-sunken transition-colors",
|
|
730
732
|
children: [/* @__PURE__ */ h(p, { size: 12 }), "Upload manifest.json"]
|
|
731
733
|
})
|
|
@@ -737,7 +739,7 @@ var _ = (e) => {
|
|
|
737
739
|
placeholder: "{\n \"manifestVersion\": \"1.0\",\n \"itemType\": \"node\",\n \"identity\": { \"version\": \"1.0.0\", \"displayName\": \"My Node\" }\n}",
|
|
738
740
|
value: k.manifestJson,
|
|
739
741
|
onChange: (e) => {
|
|
740
|
-
|
|
742
|
+
ze(null);
|
|
741
743
|
let t = _(e.target.value);
|
|
742
744
|
A({
|
|
743
745
|
...k,
|
|
@@ -757,7 +759,7 @@ var _ = (e) => {
|
|
|
757
759
|
})
|
|
758
760
|
]
|
|
759
761
|
}),
|
|
760
|
-
|
|
762
|
+
Ye && /* @__PURE__ */ g("div", {
|
|
761
763
|
className: "space-y-1",
|
|
762
764
|
children: [
|
|
763
765
|
/* @__PURE__ */ g("label", {
|
|
@@ -813,9 +815,9 @@ var _ = (e) => {
|
|
|
813
815
|
L && /* @__PURE__ */ h(i, {
|
|
814
816
|
open: !!L,
|
|
815
817
|
onOpenChange: (e) => {
|
|
816
|
-
e || (
|
|
818
|
+
e || (Ke(null), z(""));
|
|
817
819
|
},
|
|
818
|
-
onConfirm:
|
|
820
|
+
onConfirm: yt,
|
|
819
821
|
title: `Reject version ${L.version}`,
|
|
820
822
|
confirmLabel: "Reject Version",
|
|
821
823
|
cancelLabel: v("devportal.cancel", "Cancel"),
|
|
@@ -852,18 +854,18 @@ var _ = (e) => {
|
|
|
852
854
|
onOpenChange: (e) => {
|
|
853
855
|
e || (O(null), T(null), P(null));
|
|
854
856
|
},
|
|
855
|
-
onConfirm:
|
|
857
|
+
onConfirm: gt,
|
|
856
858
|
title: `Edit Version ${D.version}`,
|
|
857
|
-
confirmLabel:
|
|
859
|
+
confirmLabel: at ? "Saving…" : "Save Changes",
|
|
858
860
|
children: /* @__PURE__ */ g("div", {
|
|
859
861
|
className: "space-y-4",
|
|
860
862
|
children: [
|
|
861
|
-
|
|
863
|
+
Ge && /* @__PURE__ */ g("div", {
|
|
862
864
|
className: "rounded-lg border border-status-error-bg bg-status-error-bg-subtle p-3 flex items-center gap-2 text-sm text-status-error-text",
|
|
863
865
|
children: [/* @__PURE__ */ h(d, {
|
|
864
866
|
size: 14,
|
|
865
867
|
className: "flex-shrink-0"
|
|
866
|
-
}),
|
|
868
|
+
}), Ge]
|
|
867
869
|
}),
|
|
868
870
|
/* @__PURE__ */ h("div", {
|
|
869
871
|
className: "rounded-lg border border-status-info-bg bg-status-info-bg-subtle px-3 py-2 text-xs text-status-info-text",
|
|
@@ -880,25 +882,25 @@ var _ = (e) => {
|
|
|
880
882
|
className: "flex gap-2 items-center",
|
|
881
883
|
children: [
|
|
882
884
|
/* @__PURE__ */ h("input", {
|
|
883
|
-
ref:
|
|
885
|
+
ref: Ie,
|
|
884
886
|
type: "file",
|
|
885
887
|
accept: ".zip",
|
|
886
888
|
className: "hidden",
|
|
887
|
-
onChange:
|
|
889
|
+
onChange: mt
|
|
888
890
|
}),
|
|
889
891
|
/* @__PURE__ */ h("button", {
|
|
890
892
|
type: "button",
|
|
891
893
|
disabled: C,
|
|
892
|
-
onClick: () =>
|
|
894
|
+
onClick: () => Ie.current?.click(),
|
|
893
895
|
className: "inline-flex items-center gap-1.5 rounded-md border px-3 py-1.5 text-sm font-medium hover:bg-bg-sunken transition-colors disabled:opacity-50",
|
|
894
896
|
children: C ? /* @__PURE__ */ g(m, { children: [
|
|
895
|
-
/* @__PURE__ */ h(
|
|
897
|
+
/* @__PURE__ */ h(xe, {
|
|
896
898
|
size: 14,
|
|
897
899
|
className: "animate-spin"
|
|
898
900
|
}),
|
|
899
901
|
" ",
|
|
900
902
|
"Uploading… ",
|
|
901
|
-
|
|
903
|
+
Ne,
|
|
902
904
|
"%"
|
|
903
905
|
] }) : /* @__PURE__ */ g(m, { children: [/* @__PURE__ */ h(p, { size: 14 }), D.newPackageUrl ? "Replace zip again" : D.hasExistingZip ? "Replace zip" : "Upload zip"] })
|
|
904
906
|
}),
|
|
@@ -935,20 +937,20 @@ var _ = (e) => {
|
|
|
935
937
|
}), /* @__PURE__ */ g("div", {
|
|
936
938
|
className: "flex items-center gap-2",
|
|
937
939
|
children: [
|
|
938
|
-
|
|
940
|
+
Be && /* @__PURE__ */ g("span", {
|
|
939
941
|
className: "text-xs text-status-success-text",
|
|
940
|
-
children: ["✓ ",
|
|
942
|
+
children: ["✓ ", Be]
|
|
941
943
|
}),
|
|
942
944
|
/* @__PURE__ */ h("input", {
|
|
943
|
-
ref:
|
|
945
|
+
ref: Le,
|
|
944
946
|
type: "file",
|
|
945
947
|
accept: ".json,application/json",
|
|
946
948
|
className: "hidden",
|
|
947
|
-
onChange:
|
|
949
|
+
onChange: ht
|
|
948
950
|
}),
|
|
949
951
|
/* @__PURE__ */ g("button", {
|
|
950
952
|
type: "button",
|
|
951
|
-
onClick: () =>
|
|
953
|
+
onClick: () => Le.current?.click(),
|
|
952
954
|
className: "inline-flex items-center gap-1.5 rounded-md border border-border-subtle px-2.5 py-1 text-xs font-medium hover:bg-bg-sunken transition-colors",
|
|
953
955
|
children: [/* @__PURE__ */ h(p, { size: 12 }), " Upload manifest.json"]
|
|
954
956
|
})
|
|
@@ -1014,11 +1016,11 @@ var _ = (e) => {
|
|
|
1014
1016
|
})
|
|
1015
1017
|
}),
|
|
1016
1018
|
/* @__PURE__ */ h(i, {
|
|
1017
|
-
open:
|
|
1019
|
+
open: Je === "publish",
|
|
1018
1020
|
onOpenChange: (e) => {
|
|
1019
1021
|
e || B(null);
|
|
1020
1022
|
},
|
|
1021
|
-
onConfirm:
|
|
1023
|
+
onConfirm: Ct,
|
|
1022
1024
|
title: v("devportal.submitSelectedVersions", "Submit selected versions for review"),
|
|
1023
1025
|
description: `Submit ${X.length} selected version${X.length === 1 ? "" : "s"} for platform review?`,
|
|
1024
1026
|
confirmLabel: v("devportal.submitForReview", "Submit for Review"),
|
|
@@ -1026,11 +1028,11 @@ var _ = (e) => {
|
|
|
1026
1028
|
variant: "success"
|
|
1027
1029
|
}),
|
|
1028
1030
|
/* @__PURE__ */ h(i, {
|
|
1029
|
-
open:
|
|
1031
|
+
open: Je === "deprecate",
|
|
1030
1032
|
onOpenChange: (e) => {
|
|
1031
1033
|
e || B(null);
|
|
1032
1034
|
},
|
|
1033
|
-
onConfirm:
|
|
1035
|
+
onConfirm: wt,
|
|
1034
1036
|
title: v("devportal.deprecateSelectedVersions", "Deprecate selected versions"),
|
|
1035
1037
|
description: `${v("devportal.deprecate", "Deprecate")} ${Q.length} selected version${Q.length === 1 ? "" : "s"}? ${v("devportal.deprecateVersionsWarning", "Deprecated versions remain visible but should no longer be promoted.")}`,
|
|
1036
1038
|
confirmLabel: v("devportal.deprecate", "Deprecate"),
|
|
@@ -1042,6 +1044,6 @@ var _ = (e) => {
|
|
|
1042
1044
|
});
|
|
1043
1045
|
};
|
|
1044
1046
|
//#endregion
|
|
1045
|
-
export {
|
|
1047
|
+
export { De as ApplicationVersionsPage };
|
|
1046
1048
|
|
|
1047
1049
|
//# sourceMappingURL=ApplicationVersionsPage.js.map
|