@burdenoff/microfe-devportal 2026.916.8 → 2026.917.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/devportal/components/ManifestViewer.d.ts +12 -0
- package/dist/devportal/components/ManifestViewer.d.ts.map +1 -0
- package/dist/devportal/components/ManifestViewer.js +58 -0
- package/dist/devportal/components/ManifestViewer.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/hooks/index.d.ts +1 -0
- package/dist/devportal/hooks/index.d.ts.map +1 -1
- package/dist/devportal/hooks/index.js +1 -0
- package/dist/devportal/hooks/useProducts.d.ts +18 -0
- package/dist/devportal/hooks/useProducts.d.ts.map +1 -0
- package/dist/devportal/hooks/useProducts.js +14 -0
- package/dist/devportal/hooks/useProducts.js.map +1 -0
- package/dist/devportal/pages/AdminReviewPage.d.ts.map +1 -1
- package/dist/devportal/pages/AdminReviewPage.js +54 -64
- 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 +304 -272
- package/dist/devportal/pages/ApplicationVersionsPage.js.map +1 -1
- package/dist/devportal/pages/CreateApplicationPage.d.ts.map +1 -1
- package/dist/devportal/pages/CreateApplicationPage.js +137 -156
- package/dist/devportal/pages/CreateApplicationPage.js.map +1 -1
- package/dist/devportal/pages/EditApplicationPage.d.ts.map +1 -1
- package/dist/devportal/pages/EditApplicationPage.js +271 -290
- package/dist/devportal/pages/EditApplicationPage.js.map +1 -1
- package/dist/generated/global-operations.d.ts +39 -0
- package/dist/generated/global-operations.d.ts.map +1 -1
- package/dist/generated/global-operations.js +72 -54
- package/dist/generated/global-operations.js.map +1 -1
- package/dist/translations/en.d.ts +4 -1
- package/dist/translations/en.d.ts.map +1 -1
- package/dist/translations/en.js +5 -2
- package/dist/translations/en.js.map +1 -1
- package/package.json +1 -1
|
@@ -9,23 +9,32 @@ import { InputField as ue } from "../components/FormField.js";
|
|
|
9
9
|
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
|
+
import { ManifestViewer as fe } from "../components/ManifestViewer.js";
|
|
12
13
|
import "../components/index.js";
|
|
13
|
-
import { useDevportalPermission as
|
|
14
|
+
import { useDevportalPermission as o } from "../hooks/usePermission.js";
|
|
14
15
|
import "../hooks/index.js";
|
|
15
16
|
import { DEVPORTAL_PERMISSIONS as pe } from "../constants/permissions.js";
|
|
16
17
|
import me from "../../node_modules/date-fns/format.js";
|
|
17
18
|
import { usePackageUpload as he } from "../hooks/usePackageUpload.js";
|
|
18
|
-
import { useCallback as
|
|
19
|
-
import { AlertCircle as
|
|
20
|
-
import { useParams as
|
|
19
|
+
import { useCallback as s, useEffect as ge, useMemo as c, useRef as l, useState as u } from "react";
|
|
20
|
+
import { AlertCircle as d, Archive as _e, CheckCircle as ve, Clock as ye, Loader2 as be, Package as xe, Plus as Se, Send as f, Upload as p, XCircle as Ce } from "lucide-react";
|
|
21
|
+
import { useParams as we } from "react-router";
|
|
21
22
|
import { Fragment as m, jsx as h, jsxs as g } from "react/jsx-runtime";
|
|
22
|
-
import { useI18n as
|
|
23
|
+
import { useI18n as Te } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
23
24
|
//#region src/devportal/pages/ApplicationVersionsPage.tsx
|
|
24
|
-
var
|
|
25
|
-
|
|
26
|
-
let
|
|
25
|
+
var _ = (e) => {
|
|
26
|
+
if (e.trim()) try {
|
|
27
|
+
let t = JSON.parse(e);
|
|
28
|
+
if (typeof t.nodeVersion == "string" && t.nodeVersion.trim()) return t.nodeVersion.trim();
|
|
29
|
+
let n = t.identity;
|
|
30
|
+
if (n && typeof n.version == "string" && n.version.trim()) return n.version.trim();
|
|
31
|
+
if (typeof t.version == "string" && t.version.trim()) return t.version.trim();
|
|
32
|
+
} catch {}
|
|
33
|
+
}, Ee = () => {
|
|
34
|
+
let { t: Ee } = Te(), v = (e, t) => {
|
|
35
|
+
let n = Ee(e);
|
|
27
36
|
return n === e ? t : n;
|
|
28
|
-
}, { allowed:
|
|
37
|
+
}, { allowed: De } = o(pe.APP_VERSION_CREATE), { allowed: y } = o(pe.APP_VERSION_PUBLISH), { allowed: b } = o(pe.APP_VERSION_DEPRECATE), { appId: x } = we(), { workspacesGatewayUrl: Oe, authToken: ke, workspaceId: Ae, getWorkspaceToken: je } = e(), { upload: S, uploading: C, progress: Me, error: w } = he(Oe, ke, Ae, je), Ne = l(null), Pe = l(null), Fe = l(null), Ie = l(null), [Le, Re] = u(null), [ze, T] = u(null), [Be, E] = u(!1), [D, O] = u(null), [k, A] = u({
|
|
29
38
|
version: "",
|
|
30
39
|
releaseNotes: "",
|
|
31
40
|
changelog: "",
|
|
@@ -33,18 +42,22 @@ var Te = () => {
|
|
|
33
42
|
packageSize: "",
|
|
34
43
|
manifestJson: "",
|
|
35
44
|
requiredScopes: ""
|
|
36
|
-
}), [
|
|
45
|
+
}), [Ve, j] = u(null), [He, M] = u(null), [Ue, N] = u(null), [We, P] = u(null), [F, I] = u(/* @__PURE__ */ new Set()), [L, Ge] = u(null), [R, z] = u(""), Ke = s((e) => {
|
|
37
46
|
let t = e.target.files?.[0];
|
|
38
47
|
if (!t) return;
|
|
39
48
|
let n = new FileReader();
|
|
40
49
|
n.onload = (e) => {
|
|
41
50
|
let n = e.target?.result;
|
|
42
|
-
typeof n == "string"
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
51
|
+
if (typeof n == "string") {
|
|
52
|
+
let e = _(n);
|
|
53
|
+
A((t) => ({
|
|
54
|
+
...t,
|
|
55
|
+
manifestJson: n,
|
|
56
|
+
...e ? { version: e } : {}
|
|
57
|
+
})), Re(t.name);
|
|
58
|
+
}
|
|
46
59
|
}, n.readAsText(t), e.target.value = "";
|
|
47
|
-
}, []), [
|
|
60
|
+
}, []), [qe, B] = u(null), { data: V } = te({
|
|
48
61
|
variables: { id: x ?? "" },
|
|
49
62
|
skip: !x,
|
|
50
63
|
fetchPolicy: "cache-first"
|
|
@@ -53,67 +66,67 @@ var Te = () => {
|
|
|
53
66
|
"PARSER",
|
|
54
67
|
"WIDGET",
|
|
55
68
|
"DASHBOARD"
|
|
56
|
-
].includes(V?.application?.appType ?? ""),
|
|
69
|
+
].includes(V?.application?.appType ?? ""), Je = !W && !U, G = V?.application, Ye = G?.pricingDetails ?? {}, Xe = G?.pricingType === "FREE" || G?.pricingType === "PAID" && typeof Ye.price == "number" && Ye.price > 0, Ze = !!G?.shortDescription?.trim() && !!G?.privacyPolicyUrl?.trim() && !!G?.termsOfServiceUrl?.trim(), K = Xe && Ze, Qe = [...Ze ? [] : ["Complete your store listing (short description, privacy policy, terms of service)"], ...Xe ? [] : ["Set pricing in the Pricing tab"]];
|
|
57
70
|
ge(() => {
|
|
58
71
|
let e = V?.application?.name;
|
|
59
72
|
if (!x || !e) return;
|
|
60
73
|
let t = window.__breadcrumbRegistry;
|
|
61
74
|
return t?.register(x, e), () => t?.unregister(x);
|
|
62
75
|
}, [x, V?.application?.name]);
|
|
63
|
-
let { data:
|
|
76
|
+
let { data: q, loading: $e, error: et } = ne({
|
|
64
77
|
variables: { applicationId: x },
|
|
65
78
|
skip: !x,
|
|
66
79
|
fetchPolicy: "cache-and-network"
|
|
67
|
-
}), [
|
|
68
|
-
if (!x || !
|
|
69
|
-
|
|
80
|
+
}), [tt, { loading: nt }] = r({ refetchQueries: ["GetApplicationVersions"] }), [rt, { loading: it }] = ae({ refetchQueries: ["GetApplicationVersions"] }), [at] = re({ refetchQueries: ["GetApplicationVersions"] }), [ot] = ee({ refetchQueries: ["GetApplicationVersions"] }), [st] = n({ refetchQueries: ["GetApplicationVersions"] }), [ct] = 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]), lt = J.length > 0 && J.every((e) => F.has(e.id)), ut = J.some((e) => F.has(e.id)) && !lt, dt = async () => {
|
|
81
|
+
if (!x || !k.version.trim()) return;
|
|
82
|
+
N(null);
|
|
70
83
|
let e;
|
|
71
84
|
if (W) {
|
|
72
|
-
if (!
|
|
73
|
-
|
|
85
|
+
if (!k.manifestJson.trim()) {
|
|
86
|
+
N(H ? "Workflow Definition (JSON) is required — paste the {nodes, edges} object." : "Manifest (JSON) is required.");
|
|
74
87
|
return;
|
|
75
88
|
}
|
|
76
89
|
try {
|
|
77
|
-
e = JSON.parse(
|
|
90
|
+
e = JSON.parse(k.manifestJson);
|
|
78
91
|
} catch {
|
|
79
|
-
|
|
92
|
+
N(H ? "Invalid JSON in Workflow Definition — please check your input." : "Invalid JSON in Manifest — please check your input.");
|
|
80
93
|
return;
|
|
81
94
|
}
|
|
82
95
|
} else if (U) {
|
|
83
|
-
if (!
|
|
84
|
-
|
|
96
|
+
if (!k.packageUrl) {
|
|
97
|
+
N("Package zip is required for Node versions — upload a .zip file before creating.");
|
|
85
98
|
return;
|
|
86
99
|
}
|
|
87
|
-
if (!
|
|
88
|
-
|
|
100
|
+
if (!k.manifestJson.trim()) {
|
|
101
|
+
N("manifest.json is required for Node versions — upload or paste your manifest before creating.");
|
|
89
102
|
return;
|
|
90
103
|
}
|
|
91
104
|
try {
|
|
92
|
-
e = JSON.parse(
|
|
105
|
+
e = JSON.parse(k.manifestJson);
|
|
93
106
|
} catch {
|
|
94
|
-
|
|
107
|
+
N("Invalid JSON in manifest — please check your input.");
|
|
95
108
|
return;
|
|
96
109
|
}
|
|
97
|
-
} else if (
|
|
98
|
-
e = JSON.parse(
|
|
110
|
+
} else if (k.manifestJson.trim()) try {
|
|
111
|
+
e = JSON.parse(k.manifestJson);
|
|
99
112
|
} catch {
|
|
100
|
-
|
|
113
|
+
N("Invalid JSON in manifest — please check your input.");
|
|
101
114
|
return;
|
|
102
115
|
}
|
|
103
|
-
let t =
|
|
116
|
+
let t = Je && k.requiredScopes.trim() ? k.requiredScopes.split(",").map((e) => e.trim()).filter(Boolean) : void 0;
|
|
104
117
|
try {
|
|
105
|
-
await
|
|
118
|
+
await tt({ variables: {
|
|
106
119
|
applicationId: x,
|
|
107
120
|
input: {
|
|
108
|
-
version:
|
|
109
|
-
releaseNotes:
|
|
110
|
-
changelog:
|
|
111
|
-
packageUrl:
|
|
112
|
-
packageSize:
|
|
121
|
+
version: k.version,
|
|
122
|
+
releaseNotes: k.releaseNotes || void 0,
|
|
123
|
+
changelog: k.changelog || void 0,
|
|
124
|
+
packageUrl: k.packageUrl || void 0,
|
|
125
|
+
packageSize: k.packageSize || void 0,
|
|
113
126
|
manifest: e,
|
|
114
127
|
requiredScopes: t
|
|
115
128
|
}
|
|
116
|
-
} }),
|
|
129
|
+
} }), E(!1), Re(null), A({
|
|
117
130
|
version: "",
|
|
118
131
|
releaseNotes: "",
|
|
119
132
|
changelog: "",
|
|
@@ -121,100 +134,100 @@ var Te = () => {
|
|
|
121
134
|
packageSize: "",
|
|
122
135
|
manifestJson: "",
|
|
123
136
|
requiredScopes: ""
|
|
124
|
-
}),
|
|
137
|
+
}), M(v("devportal.versionCreatedSuccess", "Version created successfully"));
|
|
125
138
|
} catch (e) {
|
|
126
|
-
|
|
139
|
+
j(e instanceof Error ? e.message : v("devportal.versionCreateFailed", "Failed to create version"));
|
|
127
140
|
}
|
|
128
|
-
},
|
|
141
|
+
}, ft = s(async (e) => {
|
|
129
142
|
let t = e.target.files?.[0];
|
|
130
143
|
if (t) {
|
|
131
144
|
e.target.value = "";
|
|
132
145
|
try {
|
|
133
146
|
let e = await S(t);
|
|
134
|
-
|
|
147
|
+
A((n) => ({
|
|
135
148
|
...n,
|
|
136
149
|
packageUrl: e.downloadUrl,
|
|
137
150
|
packageSize: String(t.size)
|
|
138
151
|
}));
|
|
139
152
|
} catch {}
|
|
140
153
|
}
|
|
141
|
-
}, [S]),
|
|
154
|
+
}, [S]), pt = s(async (e) => {
|
|
142
155
|
let t = e.target.files?.[0];
|
|
143
156
|
if (t) {
|
|
144
157
|
e.target.value = "";
|
|
145
158
|
try {
|
|
146
159
|
let e = await S(t);
|
|
147
|
-
|
|
160
|
+
O((n) => n && {
|
|
148
161
|
...n,
|
|
149
162
|
newPackageUrl: e.downloadUrl,
|
|
150
163
|
newPackageSize: String(t.size)
|
|
151
164
|
});
|
|
152
165
|
} catch {}
|
|
153
166
|
}
|
|
154
|
-
}, [S]),
|
|
167
|
+
}, [S]), mt = s((e) => {
|
|
155
168
|
let t = e.target.files?.[0];
|
|
156
169
|
if (!t) return;
|
|
157
170
|
let n = new FileReader();
|
|
158
171
|
n.onload = (e) => {
|
|
159
172
|
let n = e.target?.result;
|
|
160
|
-
typeof n == "string" && (
|
|
173
|
+
typeof n == "string" && (O((e) => e && {
|
|
161
174
|
...e,
|
|
162
175
|
manifestJson: n
|
|
163
|
-
}),
|
|
176
|
+
}), T(t.name));
|
|
164
177
|
}, n.readAsText(t), e.target.value = "";
|
|
165
|
-
}, []),
|
|
166
|
-
if (!
|
|
167
|
-
|
|
168
|
-
let e =
|
|
169
|
-
if (e &&
|
|
170
|
-
t = JSON.parse(
|
|
178
|
+
}, []), ht = async () => {
|
|
179
|
+
if (!D) return;
|
|
180
|
+
P(null);
|
|
181
|
+
let e = D.manifestJson.trim() !== D.originalManifestJson.trim(), t;
|
|
182
|
+
if (e && D.manifestJson.trim()) try {
|
|
183
|
+
t = JSON.parse(D.manifestJson);
|
|
171
184
|
} catch {
|
|
172
|
-
|
|
185
|
+
P("Invalid JSON in manifest — please check your input.");
|
|
173
186
|
return;
|
|
174
187
|
}
|
|
175
188
|
let n = {};
|
|
176
|
-
|
|
189
|
+
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);
|
|
177
190
|
try {
|
|
178
|
-
await
|
|
179
|
-
id:
|
|
191
|
+
await rt({ variables: {
|
|
192
|
+
id: D.versionId,
|
|
180
193
|
input: n
|
|
181
|
-
} }),
|
|
194
|
+
} }), O(null), T(null), M(v("devportal.versionUpdatedSuccess", "Version updated successfully"));
|
|
182
195
|
} catch (e) {
|
|
183
|
-
|
|
196
|
+
j(e instanceof Error ? e.message : v("devportal.versionUpdateFailed", "Failed to update version"));
|
|
184
197
|
}
|
|
185
|
-
},
|
|
186
|
-
|
|
198
|
+
}, gt = async (e) => {
|
|
199
|
+
j(null), M(null);
|
|
187
200
|
try {
|
|
188
|
-
await
|
|
201
|
+
await at({ variables: { id: e } }), M(v("devportal.versionSubmittedSuccess", "Version submitted for review — you'll be notified when approved"));
|
|
189
202
|
} catch (e) {
|
|
190
|
-
|
|
203
|
+
j(e instanceof Error ? e.message : v("devportal.versionPublishFailed", "Failed to submit version for review"));
|
|
191
204
|
}
|
|
192
|
-
},
|
|
193
|
-
|
|
205
|
+
}, _t = async (e) => {
|
|
206
|
+
j(null), M(null);
|
|
194
207
|
try {
|
|
195
|
-
await
|
|
208
|
+
await ot({ variables: { id: e } }), M(v("devportal.versionDeprecatedSuccess", "Version deprecated successfully"));
|
|
196
209
|
} catch (e) {
|
|
197
|
-
|
|
210
|
+
j(e instanceof Error ? e.message : v("devportal.versionDeprecateFailed", "Failed to deprecate version"));
|
|
198
211
|
}
|
|
199
|
-
},
|
|
212
|
+
}, vt = async () => {
|
|
200
213
|
if (!(!L || !R.trim())) {
|
|
201
|
-
|
|
214
|
+
j(null), M(null);
|
|
202
215
|
try {
|
|
203
|
-
await
|
|
216
|
+
await ct({ variables: {
|
|
204
217
|
id: L.versionId,
|
|
205
218
|
reason: R
|
|
206
|
-
} }),
|
|
219
|
+
} }), M(v("devportal.versionRejectedSuccess", "Version rejected — developer has been notified")), Ge(null), z("");
|
|
207
220
|
} catch (e) {
|
|
208
|
-
|
|
221
|
+
j(e instanceof Error ? e.message : v("devportal.versionRejectFailed", "Failed to reject version"));
|
|
209
222
|
}
|
|
210
223
|
}
|
|
211
|
-
},
|
|
224
|
+
}, yt = (e) => e.status === "published" && e.isLatest ? /* @__PURE__ */ h(ve, {
|
|
212
225
|
size: 16,
|
|
213
226
|
className: "text-status-success-text"
|
|
214
227
|
}) : e.status === "pending_review" ? /* @__PURE__ */ h(f, {
|
|
215
228
|
size: 16,
|
|
216
229
|
className: "text-status-info-text"
|
|
217
|
-
}) : e.status === "rejected" ? /* @__PURE__ */ h(
|
|
230
|
+
}) : e.status === "rejected" ? /* @__PURE__ */ h(Ce, {
|
|
218
231
|
size: 16,
|
|
219
232
|
className: "text-status-error-text"
|
|
220
233
|
}) : e.status === "draft" ? /* @__PURE__ */ h(ye, {
|
|
@@ -223,95 +236,105 @@ var Te = () => {
|
|
|
223
236
|
}) : e.status === "deprecated" ? /* @__PURE__ */ h(_e, {
|
|
224
237
|
size: 16,
|
|
225
238
|
className: "text-text-secondary"
|
|
226
|
-
}) : /* @__PURE__ */ h(
|
|
239
|
+
}) : /* @__PURE__ */ h(xe, {
|
|
227
240
|
size: 16,
|
|
228
241
|
className: "text-accent-blue"
|
|
229
|
-
}),
|
|
230
|
-
|
|
242
|
+
}), bt = (e, t) => {
|
|
243
|
+
I((n) => {
|
|
231
244
|
let r = new Set(n);
|
|
232
245
|
return t ? r.add(e) : r.delete(e), r;
|
|
233
246
|
});
|
|
234
|
-
},
|
|
235
|
-
|
|
247
|
+
}, xt = (e) => {
|
|
248
|
+
I((t) => {
|
|
236
249
|
let n = new Set(t);
|
|
237
|
-
return
|
|
250
|
+
return J.forEach((t) => {
|
|
238
251
|
e ? n.add(t.id) : n.delete(t.id);
|
|
239
252
|
}), n;
|
|
240
253
|
});
|
|
241
|
-
},
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
254
|
+
}, $ = () => I(/* @__PURE__ */ new Set()), St = async () => {
|
|
255
|
+
if (X.length === 0) return;
|
|
256
|
+
j(null);
|
|
257
|
+
let e = await Promise.allSettled(X.map((e) => at({ variables: { id: e.id } }))), t = e.filter((e) => e.status === "fulfilled").length, n = e.length - t;
|
|
258
|
+
M(`Published ${t} version${t === 1 ? "" : "s"}${n > 0 ? ` • ${n} failed` : ""}`), $(), B(null);
|
|
259
|
+
}, Ct = async () => {
|
|
260
|
+
if (Q.length === 0) return;
|
|
261
|
+
j(null);
|
|
262
|
+
let e = await Promise.allSettled(Q.map((e) => ot({ variables: { id: e.id } }))), t = e.filter((e) => e.status === "fulfilled").length, n = e.length - t;
|
|
263
|
+
M(`Deprecated ${t} version${t === 1 ? "" : "s"}${n > 0 ? ` • ${n} failed` : ""}`), $(), B(null);
|
|
264
|
+
}, wt = _(k.manifestJson);
|
|
265
|
+
return $e && !q ? /* @__PURE__ */ h(oe, {
|
|
266
|
+
title: v("devportal.versionManagement", "Version Management"),
|
|
267
|
+
description: v("devportal.versionManagementDescription", "Manage your application versions"),
|
|
245
268
|
backLink: `/apps/${x}`,
|
|
246
|
-
backLabel:
|
|
269
|
+
backLabel: v("devportal.backToApplication", "Back to Application"),
|
|
247
270
|
children: /* @__PURE__ */ h("div", {
|
|
248
271
|
className: "flex items-center justify-center py-16",
|
|
249
|
-
children: /* @__PURE__ */ h(
|
|
272
|
+
children: /* @__PURE__ */ h(be, { className: "h-8 w-8 animate-spin text-text-secondary" })
|
|
250
273
|
})
|
|
251
|
-
}) :
|
|
252
|
-
title:
|
|
253
|
-
description:
|
|
274
|
+
}) : et && !q ? /* @__PURE__ */ h(oe, {
|
|
275
|
+
title: v("devportal.versionManagement", "Version Management"),
|
|
276
|
+
description: v("devportal.versionManagementDescription", "Manage your application versions"),
|
|
254
277
|
backLink: `/apps/${x}`,
|
|
255
|
-
backLabel:
|
|
278
|
+
backLabel: v("devportal.backToApplication", "Back to Application"),
|
|
256
279
|
children: /* @__PURE__ */ h(t, {
|
|
257
|
-
icon: /* @__PURE__ */ h(
|
|
280
|
+
icon: /* @__PURE__ */ h(d, {
|
|
258
281
|
size: 32,
|
|
259
282
|
className: "text-status-error-text"
|
|
260
283
|
}),
|
|
261
|
-
title:
|
|
262
|
-
description:
|
|
284
|
+
title: v("devportal.failedToLoadVersions", "Failed to load versions"),
|
|
285
|
+
description: et.message || v("devportal.versionsLoadError", "An error occurred while loading versions")
|
|
263
286
|
})
|
|
264
287
|
}) : /* @__PURE__ */ h(de, {
|
|
265
288
|
authOnly: !0,
|
|
266
289
|
children: /* @__PURE__ */ g(oe, {
|
|
267
|
-
title:
|
|
268
|
-
description:
|
|
269
|
-
purpose: H ?
|
|
290
|
+
title: v("devportal.versionManagement", "Version Management"),
|
|
291
|
+
description: v("devportal.versionManagementDescription", "Manage your application versions"),
|
|
292
|
+
purpose: H ? v("devportal.versionManagementPurposeWorkflow", "Versions track releases of your workflow. Create a version for each significant change and paste the workflow definition JSON. No zip is needed — the manifest is the workflow.") : U ? v("devportal.versionManagementPurposeNode", "Versions are the releases of your node that users install. Upload a new zip whenever the node implementation changes, and update the manifest if the node's inputs, outputs, or operations change. Bump the version for any change users will see.") : W ? v("devportal.versionManagementPurposeManifestOnly", "Versions track releases of this item. Create a version for each significant change and paste the manifest JSON. No zip is needed.") : v("devportal.versionManagementPurposeIntegration", "Versions track permission and webhook changes for your integration. No zip or manifest is needed — create a new version whenever you add or change required scopes so users can review and accept the updated permissions."),
|
|
270
293
|
backLink: `/apps/${x}`,
|
|
271
|
-
backLabel:
|
|
294
|
+
backLabel: v("devportal.backToApplication", "Back to Application"),
|
|
272
295
|
actions: /* @__PURE__ */ g("button", {
|
|
273
296
|
onClick: () => {
|
|
274
|
-
|
|
297
|
+
N(null), E(!0);
|
|
275
298
|
},
|
|
276
|
-
disabled: !
|
|
277
|
-
"aria-disabled": !
|
|
299
|
+
disabled: !De,
|
|
300
|
+
"aria-disabled": !De,
|
|
278
301
|
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",
|
|
279
|
-
children: [/* @__PURE__ */ h(
|
|
302
|
+
children: [/* @__PURE__ */ h(Se, { size: 16 }), v("devportal.newVersion", "New Version")]
|
|
280
303
|
}),
|
|
281
304
|
children: [
|
|
282
|
-
|
|
305
|
+
Ve && /* @__PURE__ */ g("div", {
|
|
283
306
|
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",
|
|
284
307
|
children: [
|
|
285
|
-
/* @__PURE__ */ h(
|
|
308
|
+
/* @__PURE__ */ h(d, {
|
|
286
309
|
size: 16,
|
|
287
310
|
className: "flex-shrink-0"
|
|
288
311
|
}),
|
|
289
|
-
|
|
312
|
+
Ve,
|
|
290
313
|
/* @__PURE__ */ h("button", {
|
|
291
|
-
onClick: () =>
|
|
314
|
+
onClick: () => j(null),
|
|
292
315
|
className: "ml-auto text-status-error-text hover:text-status-error-text",
|
|
293
|
-
children:
|
|
316
|
+
children: v("devportal.dismiss", "Dismiss")
|
|
294
317
|
})
|
|
295
318
|
]
|
|
296
319
|
}),
|
|
297
|
-
|
|
320
|
+
He && /* @__PURE__ */ g("div", {
|
|
298
321
|
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",
|
|
299
322
|
children: [
|
|
300
323
|
/* @__PURE__ */ h(ve, {
|
|
301
324
|
size: 16,
|
|
302
325
|
className: "flex-shrink-0"
|
|
303
326
|
}),
|
|
304
|
-
|
|
327
|
+
He,
|
|
305
328
|
/* @__PURE__ */ h("button", {
|
|
306
|
-
onClick: () =>
|
|
329
|
+
onClick: () => M(null),
|
|
307
330
|
className: "ml-auto text-status-success-text hover:text-status-success-text",
|
|
308
|
-
children:
|
|
331
|
+
children: v("devportal.dismiss", "Dismiss")
|
|
309
332
|
})
|
|
310
333
|
]
|
|
311
334
|
}),
|
|
312
335
|
G && !K && /* @__PURE__ */ g("div", {
|
|
313
336
|
className: "flex items-start gap-3 rounded-lg border border-status-warning-bg bg-status-warning-bg-subtle px-4 py-3 text-sm text-status-warning-text",
|
|
314
|
-
children: [/* @__PURE__ */ h(
|
|
337
|
+
children: [/* @__PURE__ */ h(d, {
|
|
315
338
|
size: 16,
|
|
316
339
|
className: "mt-0.5 shrink-0"
|
|
317
340
|
}), /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("p", {
|
|
@@ -319,10 +342,10 @@ var Te = () => {
|
|
|
319
342
|
children: "Complete your app setup before submitting for review"
|
|
320
343
|
}), /* @__PURE__ */ h("ul", {
|
|
321
344
|
className: "mt-1 list-disc pl-4 text-xs opacity-80",
|
|
322
|
-
children:
|
|
345
|
+
children: Qe.map((e) => /* @__PURE__ */ h("li", { children: e }, e))
|
|
323
346
|
})] })]
|
|
324
347
|
}),
|
|
325
|
-
G && G.status !== "PUBLISHED" &&
|
|
348
|
+
G && G.status !== "PUBLISHED" && J.some((e) => e.status === "draft") && /* @__PURE__ */ g("div", {
|
|
326
349
|
className: "flex items-start gap-3 rounded-lg border border-status-info-bg bg-status-info-bg-subtle px-4 py-3 text-sm text-status-info-text",
|
|
327
350
|
children: [/* @__PURE__ */ h(f, {
|
|
328
351
|
size: 16,
|
|
@@ -339,20 +362,20 @@ var Te = () => {
|
|
|
339
362
|
]
|
|
340
363
|
})] })]
|
|
341
364
|
}),
|
|
342
|
-
G &&
|
|
365
|
+
G && Z && /* @__PURE__ */ g("div", {
|
|
343
366
|
className: "flex items-start gap-3 rounded-lg border border-status-warning-bg bg-status-warning-bg-subtle px-4 py-3 text-sm text-status-warning-text",
|
|
344
367
|
children: [/* @__PURE__ */ h(f, {
|
|
345
368
|
size: 16,
|
|
346
369
|
className: "mt-0.5 shrink-0"
|
|
347
370
|
}), /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("p", {
|
|
348
371
|
className: "font-medium",
|
|
349
|
-
children:
|
|
372
|
+
children: v("devportal.versionAlreadyPending", "A version is already pending review")
|
|
350
373
|
}), /* @__PURE__ */ h("p", {
|
|
351
374
|
className: "mt-1 text-xs opacity-80",
|
|
352
|
-
children:
|
|
375
|
+
children: v("devportal.versionAlreadyPendingDetail", "Submitting another version is disabled until it's approved or rejected.")
|
|
353
376
|
})] })]
|
|
354
377
|
}),
|
|
355
|
-
|
|
378
|
+
J.length > 0 && /* @__PURE__ */ h("div", {
|
|
356
379
|
className: "rounded-card border border-border-seam bg-bg-surface p-4",
|
|
357
380
|
children: /* @__PURE__ */ g("div", {
|
|
358
381
|
className: "flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between",
|
|
@@ -361,100 +384,100 @@ var Te = () => {
|
|
|
361
384
|
children: [/* @__PURE__ */ g("div", {
|
|
362
385
|
className: "flex items-center gap-2",
|
|
363
386
|
children: [/* @__PURE__ */ h(ce, {
|
|
364
|
-
checked:
|
|
365
|
-
indeterminate:
|
|
366
|
-
onChange:
|
|
387
|
+
checked: lt,
|
|
388
|
+
indeterminate: ut,
|
|
389
|
+
onChange: xt,
|
|
367
390
|
ariaLabel: "Select all visible versions"
|
|
368
391
|
}), /* @__PURE__ */ h("span", {
|
|
369
392
|
className: "text-sm font-medium",
|
|
370
|
-
children:
|
|
393
|
+
children: v("devportal.selectAllVisible", "Select all visible")
|
|
371
394
|
})]
|
|
372
|
-
}),
|
|
373
|
-
onClick:
|
|
395
|
+
}), F.size > 0 && /* @__PURE__ */ h("button", {
|
|
396
|
+
onClick: $,
|
|
374
397
|
className: "text-sm text-text-secondary hover:text-text-primary",
|
|
375
|
-
children:
|
|
398
|
+
children: v("devportal.clearSelection", "Clear selection")
|
|
376
399
|
})]
|
|
377
400
|
}), /* @__PURE__ */ g("div", {
|
|
378
401
|
className: "flex flex-wrap items-center gap-2",
|
|
379
402
|
children: [
|
|
380
403
|
/* @__PURE__ */ g("span", {
|
|
381
404
|
className: "rounded-full bg-bg-sunken px-3 py-1 text-sm font-medium text-text-secondary",
|
|
382
|
-
children: [
|
|
405
|
+
children: [F.size, " selected"]
|
|
383
406
|
}),
|
|
384
407
|
/* @__PURE__ */ g("button", {
|
|
385
408
|
onClick: () => B("publish"),
|
|
386
|
-
disabled:
|
|
387
|
-
"aria-disabled": !y || !K ||
|
|
388
|
-
title:
|
|
409
|
+
disabled: X.length === 0 || !y || !K || Z,
|
|
410
|
+
"aria-disabled": !y || !K || Z,
|
|
411
|
+
title: Z ? v("devportal.versionAlreadyPending", "A version is already pending review") : K ? void 0 : Qe.join(" · "),
|
|
389
412
|
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",
|
|
390
|
-
children: [
|
|
413
|
+
children: [v("devportal.submitForReview", "Submit for Review"), X.length > 0 ? ` (${X.length})` : ""]
|
|
391
414
|
}),
|
|
392
415
|
/* @__PURE__ */ g("button", {
|
|
393
416
|
onClick: () => B("deprecate"),
|
|
394
|
-
disabled:
|
|
417
|
+
disabled: Q.length === 0 || !b,
|
|
395
418
|
"aria-disabled": !b,
|
|
396
419
|
className: "rounded-md border border-status-warning-bg px-3 py-2 text-sm font-medium text-status-warning-text hover:bg-status-warning-bg-subtle disabled:cursor-not-allowed disabled:opacity-50",
|
|
397
|
-
children: [
|
|
420
|
+
children: [v("devportal.deprecateSelected", "Deprecate Selected"), Q.length > 0 ? ` (${Q.length})` : ""]
|
|
398
421
|
})
|
|
399
422
|
]
|
|
400
423
|
})]
|
|
401
424
|
})
|
|
402
425
|
}),
|
|
403
|
-
|
|
404
|
-
data:
|
|
426
|
+
J.length > 0 ? /* @__PURE__ */ h(le, {
|
|
427
|
+
data: J,
|
|
405
428
|
keyField: "id",
|
|
406
429
|
columns: [
|
|
407
430
|
{
|
|
408
431
|
key: "select",
|
|
409
432
|
header: /* @__PURE__ */ h(ce, {
|
|
410
|
-
checked:
|
|
411
|
-
indeterminate:
|
|
412
|
-
onChange:
|
|
433
|
+
checked: lt,
|
|
434
|
+
indeterminate: ut,
|
|
435
|
+
onChange: xt,
|
|
413
436
|
ariaLabel: "Select all visible versions"
|
|
414
437
|
}),
|
|
415
438
|
className: "w-12",
|
|
416
439
|
render: (e) => /* @__PURE__ */ h("div", {
|
|
417
440
|
onClick: (e) => e.stopPropagation(),
|
|
418
441
|
children: /* @__PURE__ */ h(ce, {
|
|
419
|
-
checked:
|
|
420
|
-
onChange: (t) =>
|
|
442
|
+
checked: F.has(e.id),
|
|
443
|
+
onChange: (t) => bt(e.id, t),
|
|
421
444
|
ariaLabel: `Select version ${e.version}`
|
|
422
445
|
})
|
|
423
446
|
})
|
|
424
447
|
},
|
|
425
448
|
{
|
|
426
449
|
key: "version",
|
|
427
|
-
header:
|
|
450
|
+
header: v("devportal.version", "Version"),
|
|
428
451
|
render: (e) => /* @__PURE__ */ g("div", {
|
|
429
452
|
className: "flex items-center gap-2",
|
|
430
453
|
children: [
|
|
431
|
-
|
|
454
|
+
yt(e),
|
|
432
455
|
/* @__PURE__ */ h("span", {
|
|
433
456
|
className: "font-mono font-medium",
|
|
434
457
|
children: e.version
|
|
435
458
|
}),
|
|
436
459
|
e.isLatest && /* @__PURE__ */ h("span", {
|
|
437
460
|
className: "rounded-full bg-status-success-bg-subtle px-2 py-0.5 text-xs text-status-success-text",
|
|
438
|
-
children:
|
|
461
|
+
children: v("devportal.latest", "Latest")
|
|
439
462
|
}),
|
|
440
463
|
!e.isStable && /* @__PURE__ */ h("span", {
|
|
441
464
|
className: "rounded-full bg-status-warning-bg-subtle px-2 py-0.5 text-xs text-status-warning-text",
|
|
442
|
-
children:
|
|
465
|
+
children: v("devportal.beta", "Beta")
|
|
443
466
|
})
|
|
444
467
|
]
|
|
445
468
|
})
|
|
446
469
|
},
|
|
447
470
|
{
|
|
448
471
|
key: "releaseNotes",
|
|
449
|
-
header:
|
|
472
|
+
header: v("devportal.releaseNotes", "Release Notes"),
|
|
450
473
|
render: (e) => /* @__PURE__ */ h("p", {
|
|
451
474
|
className: "max-w-md truncate text-sm text-text-secondary",
|
|
452
|
-
children: e.releaseNotes ||
|
|
475
|
+
children: e.releaseNotes || v("devportal.noReleaseNotes", "No release notes")
|
|
453
476
|
})
|
|
454
477
|
},
|
|
455
478
|
{
|
|
456
479
|
key: "status",
|
|
457
|
-
header:
|
|
480
|
+
header: v("devportal.status", "Status"),
|
|
458
481
|
render: (e) => /* @__PURE__ */ g("div", {
|
|
459
482
|
className: "space-y-1",
|
|
460
483
|
children: [
|
|
@@ -472,9 +495,20 @@ var Te = () => {
|
|
|
472
495
|
},
|
|
473
496
|
{
|
|
474
497
|
key: "publishedAt",
|
|
475
|
-
header:
|
|
498
|
+
header: v("devportal.published", "Published"),
|
|
476
499
|
render: (e) => e.publishedAt ? me(new Date(e.publishedAt), "MMM d, yyyy") : "-"
|
|
477
500
|
},
|
|
501
|
+
{
|
|
502
|
+
key: "manifest",
|
|
503
|
+
header: v("devportal.manifest", "Manifest"),
|
|
504
|
+
render: (e) => e.manifest ? /* @__PURE__ */ h(fe, {
|
|
505
|
+
manifest: e.manifest,
|
|
506
|
+
tr: v
|
|
507
|
+
}) : /* @__PURE__ */ h("span", {
|
|
508
|
+
className: "text-xs text-text-secondary",
|
|
509
|
+
children: v("devportal.noManifest", "No manifest")
|
|
510
|
+
})
|
|
511
|
+
},
|
|
478
512
|
{
|
|
479
513
|
key: "actions",
|
|
480
514
|
header: "",
|
|
@@ -482,11 +516,11 @@ var Te = () => {
|
|
|
482
516
|
render: (e) => /* @__PURE__ */ g("div", {
|
|
483
517
|
className: "flex flex-wrap gap-2",
|
|
484
518
|
children: [
|
|
485
|
-
(e.status === "draft" || e.status === "rejected") &&
|
|
519
|
+
(e.status === "draft" || e.status === "rejected") && De && /* @__PURE__ */ h("button", {
|
|
486
520
|
className: "inline-flex items-center gap-1 text-xs text-text-secondary hover:text-text-primary hover:underline",
|
|
487
521
|
onClick: () => {
|
|
488
522
|
let t = e.manifest ? JSON.stringify(e.manifest, null, 2) : "";
|
|
489
|
-
|
|
523
|
+
O({
|
|
490
524
|
versionId: e.id,
|
|
491
525
|
version: e.version,
|
|
492
526
|
hasExistingZip: !!e.packageUrl,
|
|
@@ -496,24 +530,24 @@ var Te = () => {
|
|
|
496
530
|
originalManifestJson: t,
|
|
497
531
|
releaseNotes: e.releaseNotes ?? "",
|
|
498
532
|
changelog: e.changelog ?? ""
|
|
499
|
-
}),
|
|
533
|
+
}), T(null), P(null);
|
|
500
534
|
},
|
|
501
535
|
children: "Edit"
|
|
502
536
|
}),
|
|
503
537
|
(e.status === "draft" || e.status === "rejected") && G?.status === "PUBLISHED" && /* @__PURE__ */ g("button", {
|
|
504
538
|
className: "inline-flex items-center gap-1 text-xs text-primary hover:underline disabled:opacity-50 disabled:cursor-not-allowed",
|
|
505
|
-
disabled: !y || !K ||
|
|
506
|
-
"aria-disabled": !y || !K ||
|
|
507
|
-
title:
|
|
508
|
-
onClick: () =>
|
|
509
|
-
children: [/* @__PURE__ */ h(f, { size: 11 }),
|
|
539
|
+
disabled: !y || !K || Z,
|
|
540
|
+
"aria-disabled": !y || !K || Z,
|
|
541
|
+
title: Z ? v("devportal.versionAlreadyPending", "A version is already pending review") : K ? void 0 : Qe.join(" · "),
|
|
542
|
+
onClick: () => gt(e.id),
|
|
543
|
+
children: [/* @__PURE__ */ h(f, { size: 11 }), v("devportal.submitForReview", "Submit for Review")]
|
|
510
544
|
}),
|
|
511
545
|
e.status === "published" && !e.isLatest && /* @__PURE__ */ h("button", {
|
|
512
546
|
className: "text-xs text-status-warning-text hover:underline disabled:opacity-50",
|
|
513
547
|
disabled: !b,
|
|
514
548
|
"aria-disabled": !b,
|
|
515
|
-
onClick: () =>
|
|
516
|
-
children:
|
|
549
|
+
onClick: () => _t(e.id),
|
|
550
|
+
children: v("devportal.deprecate", "Deprecate")
|
|
517
551
|
})
|
|
518
552
|
]
|
|
519
553
|
})
|
|
@@ -521,43 +555,44 @@ var Te = () => {
|
|
|
521
555
|
]
|
|
522
556
|
}) : /* @__PURE__ */ h(t, {
|
|
523
557
|
illustration: "empty-data",
|
|
524
|
-
title:
|
|
525
|
-
description:
|
|
558
|
+
title: v("devportal.noVersionsYet", "No versions yet"),
|
|
559
|
+
description: v("devportal.noVersionsYetDescription", "Create your first version to start distributing your app"),
|
|
526
560
|
action: /* @__PURE__ */ g("button", {
|
|
527
561
|
onClick: () => {
|
|
528
|
-
|
|
562
|
+
N(null), E(!0);
|
|
529
563
|
},
|
|
530
564
|
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",
|
|
531
|
-
children: [/* @__PURE__ */ h(
|
|
565
|
+
children: [/* @__PURE__ */ h(Se, { size: 16 }), v("devportal.createVersion", "Create Version")]
|
|
532
566
|
})
|
|
533
567
|
}),
|
|
534
|
-
|
|
535
|
-
open:
|
|
568
|
+
Be && /* @__PURE__ */ h(i, {
|
|
569
|
+
open: Be,
|
|
536
570
|
onOpenChange: (e) => {
|
|
537
|
-
|
|
571
|
+
E(e), e || N(null);
|
|
538
572
|
},
|
|
539
|
-
onConfirm:
|
|
540
|
-
title:
|
|
541
|
-
confirmLabel:
|
|
573
|
+
onConfirm: dt,
|
|
574
|
+
title: v("devportal.createNewVersion", "Create New Version"),
|
|
575
|
+
confirmLabel: nt ? v("devportal.creating", "Creating...") : v("devportal.createVersion", "Create Version"),
|
|
542
576
|
children: /* @__PURE__ */ g("div", {
|
|
543
577
|
className: "space-y-4",
|
|
544
578
|
children: [
|
|
545
|
-
|
|
579
|
+
Ue && /* @__PURE__ */ g("div", {
|
|
546
580
|
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",
|
|
547
|
-
children: [/* @__PURE__ */ h(
|
|
581
|
+
children: [/* @__PURE__ */ h(d, {
|
|
548
582
|
size: 14,
|
|
549
583
|
className: "flex-shrink-0"
|
|
550
|
-
}),
|
|
584
|
+
}), Ue]
|
|
551
585
|
}),
|
|
552
586
|
/* @__PURE__ */ h(ue, {
|
|
553
|
-
label:
|
|
554
|
-
value:
|
|
555
|
-
onChange: (e) =>
|
|
556
|
-
...
|
|
587
|
+
label: v("devportal.versionNumber", "Version Number"),
|
|
588
|
+
value: k.version,
|
|
589
|
+
onChange: (e) => A({
|
|
590
|
+
...k,
|
|
557
591
|
version: e.target.value
|
|
558
592
|
}),
|
|
559
593
|
placeholder: "e.g., 2.2.0",
|
|
560
|
-
hint:
|
|
594
|
+
hint: wt ? 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."),
|
|
595
|
+
readOnly: !!wt,
|
|
561
596
|
required: !0
|
|
562
597
|
}),
|
|
563
598
|
W && /* @__PURE__ */ g("div", {
|
|
@@ -578,11 +613,15 @@ var Te = () => {
|
|
|
578
613
|
rows: 10,
|
|
579
614
|
required: !0,
|
|
580
615
|
placeholder: H ? "{\n \"nodes\": [],\n \"edges\": []\n}" : "{\n \"manifestVersion\": \"1.0\",\n \"identity\": { \"name\": \"My Item\", \"version\": \"1.0.0\" }\n}",
|
|
581
|
-
value:
|
|
582
|
-
onChange: (e) =>
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
616
|
+
value: k.manifestJson,
|
|
617
|
+
onChange: (e) => {
|
|
618
|
+
let t = _(e.target.value);
|
|
619
|
+
A({
|
|
620
|
+
...k,
|
|
621
|
+
manifestJson: e.target.value,
|
|
622
|
+
...t ? { version: t } : {}
|
|
623
|
+
});
|
|
624
|
+
},
|
|
586
625
|
className: "w-full rounded-md border bg-transparent px-3 py-2 text-xs font-mono resize-y placeholder:text-text-secondary focus:outline-none focus:ring-1 focus:ring-[var(--color-focus-ring)]"
|
|
587
626
|
}),
|
|
588
627
|
/* @__PURE__ */ h("p", {
|
|
@@ -613,33 +652,33 @@ var Te = () => {
|
|
|
613
652
|
className: "flex gap-2 items-center",
|
|
614
653
|
children: [
|
|
615
654
|
/* @__PURE__ */ h("input", {
|
|
616
|
-
ref:
|
|
655
|
+
ref: Ne,
|
|
617
656
|
type: "file",
|
|
618
657
|
accept: ".zip",
|
|
619
658
|
className: "hidden",
|
|
620
|
-
onChange:
|
|
659
|
+
onChange: ft
|
|
621
660
|
}),
|
|
622
661
|
/* @__PURE__ */ h("button", {
|
|
623
662
|
type: "button",
|
|
624
663
|
disabled: C,
|
|
625
|
-
onClick: () =>
|
|
664
|
+
onClick: () => Ne.current?.click(),
|
|
626
665
|
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",
|
|
627
666
|
children: C ? /* @__PURE__ */ g(m, { children: [
|
|
628
|
-
/* @__PURE__ */ h(
|
|
667
|
+
/* @__PURE__ */ h(be, {
|
|
629
668
|
size: 14,
|
|
630
669
|
className: "animate-spin"
|
|
631
670
|
}),
|
|
632
671
|
" ",
|
|
633
672
|
"Uploading… ",
|
|
634
|
-
|
|
673
|
+
Me,
|
|
635
674
|
"%"
|
|
636
675
|
] }) : /* @__PURE__ */ g(m, { children: [
|
|
637
676
|
/* @__PURE__ */ h(p, { size: 14 }),
|
|
638
677
|
" ",
|
|
639
|
-
|
|
678
|
+
k.packageUrl ? "Replace zip" : "Upload zip"
|
|
640
679
|
] })
|
|
641
680
|
}),
|
|
642
|
-
|
|
681
|
+
k.packageUrl && !C && /* @__PURE__ */ h("span", {
|
|
643
682
|
className: "text-xs text-status-success-text",
|
|
644
683
|
children: "✓ Uploaded"
|
|
645
684
|
})
|
|
@@ -673,20 +712,20 @@ var Te = () => {
|
|
|
673
712
|
}), /* @__PURE__ */ g("div", {
|
|
674
713
|
className: "flex items-center gap-2",
|
|
675
714
|
children: [
|
|
676
|
-
|
|
715
|
+
Le && /* @__PURE__ */ g("span", {
|
|
677
716
|
className: "text-xs text-status-success-text",
|
|
678
|
-
children: ["✓ ",
|
|
717
|
+
children: ["✓ ", Le]
|
|
679
718
|
}),
|
|
680
719
|
/* @__PURE__ */ h("input", {
|
|
681
|
-
ref:
|
|
720
|
+
ref: Pe,
|
|
682
721
|
type: "file",
|
|
683
722
|
accept: ".json,application/json",
|
|
684
723
|
className: "hidden",
|
|
685
|
-
onChange:
|
|
724
|
+
onChange: Ke
|
|
686
725
|
}),
|
|
687
726
|
/* @__PURE__ */ g("button", {
|
|
688
727
|
type: "button",
|
|
689
|
-
onClick: () =>
|
|
728
|
+
onClick: () => Pe.current?.click(),
|
|
690
729
|
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",
|
|
691
730
|
children: [/* @__PURE__ */ h(p, { size: 12 }), "Upload manifest.json"]
|
|
692
731
|
})
|
|
@@ -696,11 +735,14 @@ var Te = () => {
|
|
|
696
735
|
/* @__PURE__ */ h("textarea", {
|
|
697
736
|
rows: 5,
|
|
698
737
|
placeholder: "{\n \"manifestVersion\": \"1.0\",\n \"itemType\": \"node\",\n \"identity\": { \"version\": \"1.0.0\", \"displayName\": \"My Node\" }\n}",
|
|
699
|
-
value:
|
|
738
|
+
value: k.manifestJson,
|
|
700
739
|
onChange: (e) => {
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
740
|
+
Re(null);
|
|
741
|
+
let t = _(e.target.value);
|
|
742
|
+
A({
|
|
743
|
+
...k,
|
|
744
|
+
manifestJson: e.target.value,
|
|
745
|
+
...t ? { version: t } : {}
|
|
704
746
|
});
|
|
705
747
|
},
|
|
706
748
|
className: "w-full rounded-md border bg-transparent px-3 py-2 text-xs font-mono resize-y placeholder:text-text-secondary focus:outline-none focus:ring-1 focus:ring-[var(--color-focus-ring)]"
|
|
@@ -715,7 +757,7 @@ var Te = () => {
|
|
|
715
757
|
})
|
|
716
758
|
]
|
|
717
759
|
}),
|
|
718
|
-
|
|
760
|
+
Je && /* @__PURE__ */ g("div", {
|
|
719
761
|
className: "space-y-1",
|
|
720
762
|
children: [
|
|
721
763
|
/* @__PURE__ */ g("label", {
|
|
@@ -731,9 +773,9 @@ var Te = () => {
|
|
|
731
773
|
}),
|
|
732
774
|
/* @__PURE__ */ h("input", {
|
|
733
775
|
type: "text",
|
|
734
|
-
value:
|
|
735
|
-
onChange: (e) =>
|
|
736
|
-
...
|
|
776
|
+
value: k.requiredScopes,
|
|
777
|
+
onChange: (e) => A({
|
|
778
|
+
...k,
|
|
737
779
|
requiredScopes: e.target.value
|
|
738
780
|
}),
|
|
739
781
|
placeholder: "e.g. read:contacts, write:messages",
|
|
@@ -746,23 +788,23 @@ var Te = () => {
|
|
|
746
788
|
]
|
|
747
789
|
}),
|
|
748
790
|
/* @__PURE__ */ h(a, {
|
|
749
|
-
label:
|
|
750
|
-
value:
|
|
751
|
-
onChange: (e) =>
|
|
752
|
-
...
|
|
791
|
+
label: v("devportal.releaseNotes", "Release Notes"),
|
|
792
|
+
value: k.releaseNotes,
|
|
793
|
+
onChange: (e) => A({
|
|
794
|
+
...k,
|
|
753
795
|
releaseNotes: e
|
|
754
796
|
}),
|
|
755
|
-
placeholder:
|
|
797
|
+
placeholder: v("devportal.releaseNotesPlaceholder", "What changed in this release?"),
|
|
756
798
|
rows: 3
|
|
757
799
|
}),
|
|
758
800
|
/* @__PURE__ */ h(a, {
|
|
759
|
-
label:
|
|
760
|
-
value:
|
|
761
|
-
onChange: (e) =>
|
|
762
|
-
...
|
|
801
|
+
label: v("devportal.changelog", "Changelog"),
|
|
802
|
+
value: k.changelog,
|
|
803
|
+
onChange: (e) => A({
|
|
804
|
+
...k,
|
|
763
805
|
changelog: e
|
|
764
806
|
}),
|
|
765
|
-
placeholder:
|
|
807
|
+
placeholder: v("devportal.changelogPlaceholder", "Detailed changelog for this version..."),
|
|
766
808
|
rows: 3
|
|
767
809
|
})
|
|
768
810
|
]
|
|
@@ -771,12 +813,12 @@ var Te = () => {
|
|
|
771
813
|
L && /* @__PURE__ */ h(i, {
|
|
772
814
|
open: !!L,
|
|
773
815
|
onOpenChange: (e) => {
|
|
774
|
-
e || (
|
|
816
|
+
e || (Ge(null), z(""));
|
|
775
817
|
},
|
|
776
|
-
onConfirm:
|
|
818
|
+
onConfirm: vt,
|
|
777
819
|
title: `Reject version ${L.version}`,
|
|
778
820
|
confirmLabel: "Reject Version",
|
|
779
|
-
cancelLabel:
|
|
821
|
+
cancelLabel: v("devportal.cancel", "Cancel"),
|
|
780
822
|
variant: "danger",
|
|
781
823
|
children: /* @__PURE__ */ g("div", {
|
|
782
824
|
className: "space-y-3",
|
|
@@ -805,23 +847,23 @@ var Te = () => {
|
|
|
805
847
|
})]
|
|
806
848
|
})
|
|
807
849
|
}),
|
|
808
|
-
|
|
809
|
-
open: !!
|
|
850
|
+
D && /* @__PURE__ */ h(i, {
|
|
851
|
+
open: !!D,
|
|
810
852
|
onOpenChange: (e) => {
|
|
811
|
-
e || (
|
|
853
|
+
e || (O(null), T(null), P(null));
|
|
812
854
|
},
|
|
813
|
-
onConfirm:
|
|
814
|
-
title: `Edit Version ${
|
|
815
|
-
confirmLabel:
|
|
855
|
+
onConfirm: ht,
|
|
856
|
+
title: `Edit Version ${D.version}`,
|
|
857
|
+
confirmLabel: it ? "Saving…" : "Save Changes",
|
|
816
858
|
children: /* @__PURE__ */ g("div", {
|
|
817
859
|
className: "space-y-4",
|
|
818
860
|
children: [
|
|
819
|
-
|
|
861
|
+
We && /* @__PURE__ */ g("div", {
|
|
820
862
|
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",
|
|
821
|
-
children: [/* @__PURE__ */ h(
|
|
863
|
+
children: [/* @__PURE__ */ h(d, {
|
|
822
864
|
size: 14,
|
|
823
865
|
className: "flex-shrink-0"
|
|
824
|
-
}),
|
|
866
|
+
}), We]
|
|
825
867
|
}),
|
|
826
868
|
/* @__PURE__ */ h("div", {
|
|
827
869
|
className: "rounded-lg border border-status-info-bg bg-status-info-bg-subtle px-3 py-2 text-xs text-status-info-text",
|
|
@@ -838,33 +880,33 @@ var Te = () => {
|
|
|
838
880
|
className: "flex gap-2 items-center",
|
|
839
881
|
children: [
|
|
840
882
|
/* @__PURE__ */ h("input", {
|
|
841
|
-
ref:
|
|
883
|
+
ref: Fe,
|
|
842
884
|
type: "file",
|
|
843
885
|
accept: ".zip",
|
|
844
886
|
className: "hidden",
|
|
845
|
-
onChange:
|
|
887
|
+
onChange: pt
|
|
846
888
|
}),
|
|
847
889
|
/* @__PURE__ */ h("button", {
|
|
848
890
|
type: "button",
|
|
849
891
|
disabled: C,
|
|
850
|
-
onClick: () =>
|
|
892
|
+
onClick: () => Fe.current?.click(),
|
|
851
893
|
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",
|
|
852
894
|
children: C ? /* @__PURE__ */ g(m, { children: [
|
|
853
|
-
/* @__PURE__ */ h(
|
|
895
|
+
/* @__PURE__ */ h(be, {
|
|
854
896
|
size: 14,
|
|
855
897
|
className: "animate-spin"
|
|
856
898
|
}),
|
|
857
899
|
" ",
|
|
858
900
|
"Uploading… ",
|
|
859
|
-
|
|
901
|
+
Me,
|
|
860
902
|
"%"
|
|
861
|
-
] }) : /* @__PURE__ */ g(m, { children: [/* @__PURE__ */ h(p, { size: 14 }),
|
|
903
|
+
] }) : /* @__PURE__ */ g(m, { children: [/* @__PURE__ */ h(p, { size: 14 }), D.newPackageUrl ? "Replace zip again" : D.hasExistingZip ? "Replace zip" : "Upload zip"] })
|
|
862
904
|
}),
|
|
863
|
-
|
|
905
|
+
D.newPackageUrl && !C && /* @__PURE__ */ h("span", {
|
|
864
906
|
className: "text-xs text-status-success-text",
|
|
865
907
|
children: "✓ New zip ready"
|
|
866
908
|
}),
|
|
867
|
-
!
|
|
909
|
+
!D.newPackageUrl && D.hasExistingZip && /* @__PURE__ */ h("span", {
|
|
868
910
|
className: "text-xs text-text-secondary",
|
|
869
911
|
children: "Current zip kept"
|
|
870
912
|
})
|
|
@@ -893,20 +935,20 @@ var Te = () => {
|
|
|
893
935
|
}), /* @__PURE__ */ g("div", {
|
|
894
936
|
className: "flex items-center gap-2",
|
|
895
937
|
children: [
|
|
896
|
-
|
|
938
|
+
ze && /* @__PURE__ */ g("span", {
|
|
897
939
|
className: "text-xs text-status-success-text",
|
|
898
|
-
children: ["✓ ",
|
|
940
|
+
children: ["✓ ", ze]
|
|
899
941
|
}),
|
|
900
942
|
/* @__PURE__ */ h("input", {
|
|
901
|
-
ref:
|
|
943
|
+
ref: Ie,
|
|
902
944
|
type: "file",
|
|
903
945
|
accept: ".json,application/json",
|
|
904
946
|
className: "hidden",
|
|
905
|
-
onChange:
|
|
947
|
+
onChange: mt
|
|
906
948
|
}),
|
|
907
949
|
/* @__PURE__ */ g("button", {
|
|
908
950
|
type: "button",
|
|
909
|
-
onClick: () =>
|
|
951
|
+
onClick: () => Ie.current?.click(),
|
|
910
952
|
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",
|
|
911
953
|
children: [/* @__PURE__ */ h(p, { size: 12 }), " Upload manifest.json"]
|
|
912
954
|
})
|
|
@@ -915,9 +957,9 @@ var Te = () => {
|
|
|
915
957
|
}), /* @__PURE__ */ h("textarea", {
|
|
916
958
|
rows: 5,
|
|
917
959
|
placeholder: "{\n \"manifestVersion\": \"1.0\",\n \"itemType\": \"node\",\n \"identity\": { \"version\": \"1.0.0\", \"displayName\": \"My Node\" }\n}",
|
|
918
|
-
value:
|
|
960
|
+
value: D.manifestJson,
|
|
919
961
|
onChange: (e) => {
|
|
920
|
-
|
|
962
|
+
T(null), O((t) => t && {
|
|
921
963
|
...t,
|
|
922
964
|
manifestJson: e.target.value
|
|
923
965
|
});
|
|
@@ -940,8 +982,8 @@ var Te = () => {
|
|
|
940
982
|
}), /* @__PURE__ */ h("textarea", {
|
|
941
983
|
rows: 10,
|
|
942
984
|
placeholder: H ? "{\n \"nodes\": [],\n \"edges\": []\n}" : "{\n \"manifestVersion\": \"1.0\",\n \"identity\": { \"name\": \"My Item\", \"version\": \"1.0.0\" }\n}",
|
|
943
|
-
value:
|
|
944
|
-
onChange: (e) =>
|
|
985
|
+
value: D.manifestJson,
|
|
986
|
+
onChange: (e) => O((t) => t && {
|
|
945
987
|
...t,
|
|
946
988
|
manifestJson: e.target.value
|
|
947
989
|
}),
|
|
@@ -949,60 +991,50 @@ var Te = () => {
|
|
|
949
991
|
})]
|
|
950
992
|
}),
|
|
951
993
|
/* @__PURE__ */ h(a, {
|
|
952
|
-
label:
|
|
953
|
-
value:
|
|
954
|
-
onChange: (e) =>
|
|
994
|
+
label: v("devportal.releaseNotes", "Release Notes"),
|
|
995
|
+
value: D.releaseNotes,
|
|
996
|
+
onChange: (e) => O((t) => t && {
|
|
955
997
|
...t,
|
|
956
998
|
releaseNotes: e
|
|
957
999
|
}),
|
|
958
|
-
placeholder:
|
|
1000
|
+
placeholder: v("devportal.releaseNotesPlaceholder", "What changed in this release?"),
|
|
959
1001
|
rows: 3
|
|
960
1002
|
}),
|
|
961
1003
|
/* @__PURE__ */ h(a, {
|
|
962
|
-
label:
|
|
963
|
-
value:
|
|
964
|
-
onChange: (e) =>
|
|
1004
|
+
label: v("devportal.changelog", "Changelog"),
|
|
1005
|
+
value: D.changelog,
|
|
1006
|
+
onChange: (e) => O((t) => t && {
|
|
965
1007
|
...t,
|
|
966
1008
|
changelog: e
|
|
967
1009
|
}),
|
|
968
|
-
placeholder:
|
|
1010
|
+
placeholder: v("devportal.changelogPlaceholder", "Detailed changelog for this version..."),
|
|
969
1011
|
rows: 3
|
|
970
1012
|
})
|
|
971
1013
|
]
|
|
972
1014
|
})
|
|
973
1015
|
}),
|
|
974
1016
|
/* @__PURE__ */ h(i, {
|
|
975
|
-
open:
|
|
1017
|
+
open: qe === "publish",
|
|
976
1018
|
onOpenChange: (e) => {
|
|
977
1019
|
e || B(null);
|
|
978
1020
|
},
|
|
979
|
-
onConfirm:
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
},
|
|
985
|
-
title: _("devportal.submitSelectedVersions", "Submit selected versions for review"),
|
|
986
|
-
description: `Submit ${Z.length} selected version${Z.length === 1 ? "" : "s"} for platform review?`,
|
|
987
|
-
confirmLabel: _("devportal.submitForReview", "Submit for Review"),
|
|
988
|
-
cancelLabel: _("devportal.cancel", "Cancel"),
|
|
1021
|
+
onConfirm: St,
|
|
1022
|
+
title: v("devportal.submitSelectedVersions", "Submit selected versions for review"),
|
|
1023
|
+
description: `Submit ${X.length} selected version${X.length === 1 ? "" : "s"} for platform review?`,
|
|
1024
|
+
confirmLabel: v("devportal.submitForReview", "Submit for Review"),
|
|
1025
|
+
cancelLabel: v("devportal.cancel", "Cancel"),
|
|
989
1026
|
variant: "success"
|
|
990
1027
|
}),
|
|
991
1028
|
/* @__PURE__ */ h(i, {
|
|
992
|
-
open:
|
|
1029
|
+
open: qe === "deprecate",
|
|
993
1030
|
onOpenChange: (e) => {
|
|
994
1031
|
e || B(null);
|
|
995
1032
|
},
|
|
996
|
-
onConfirm:
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
},
|
|
1002
|
-
title: _("devportal.deprecateSelectedVersions", "Deprecate selected versions"),
|
|
1003
|
-
description: `${_("devportal.deprecate", "Deprecate")} ${$.length} selected version${$.length === 1 ? "" : "s"}? ${_("devportal.deprecateVersionsWarning", "Deprecated versions remain visible but should no longer be promoted.")}`,
|
|
1004
|
-
confirmLabel: _("devportal.deprecate", "Deprecate"),
|
|
1005
|
-
cancelLabel: _("devportal.cancel", "Cancel"),
|
|
1033
|
+
onConfirm: Ct,
|
|
1034
|
+
title: v("devportal.deprecateSelectedVersions", "Deprecate selected versions"),
|
|
1035
|
+
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
|
+
confirmLabel: v("devportal.deprecate", "Deprecate"),
|
|
1037
|
+
cancelLabel: v("devportal.cancel", "Cancel"),
|
|
1006
1038
|
variant: "warning"
|
|
1007
1039
|
})
|
|
1008
1040
|
]
|
|
@@ -1010,6 +1042,6 @@ var Te = () => {
|
|
|
1010
1042
|
});
|
|
1011
1043
|
};
|
|
1012
1044
|
//#endregion
|
|
1013
|
-
export {
|
|
1045
|
+
export { Ee as ApplicationVersionsPage };
|
|
1014
1046
|
|
|
1015
1047
|
//# sourceMappingURL=ApplicationVersionsPage.js.map
|