@burdenoff/microfe-devportal 2026.1109.1 → 2026.1109.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/pages/ApplicationVersionsPage.js +229 -217
- package/dist/devportal/pages/ApplicationVersionsPage.js.map +1 -1
- package/dist/devportal/pages/NodeLifecyclePage.js +2 -0
- package/dist/devportal/pages/NodeLifecyclePage.js.map +1 -1
- package/dist/generated/global-operations.d.ts +21 -0
- package/dist/generated/global-operations.js.map +1 -1
- package/dist/generated/global-types.d.ts +24 -2
- package/dist/generated/global-types.js.map +1 -1
- package/package.json +1 -1
|
@@ -6,19 +6,19 @@ import { EmptyState as ce } from "../components/EmptyState.js";
|
|
|
6
6
|
import { InputField as le } from "../components/FormField.js";
|
|
7
7
|
import { MarkdownEditor as i } from "../components/MarkdownEditor.js";
|
|
8
8
|
import { ConfirmDialog as a } from "../components/ConfirmDialog.js";
|
|
9
|
-
import { SelectionCheckbox as
|
|
10
|
-
import { PermissionGuard as
|
|
11
|
-
import { ManifestViewer as
|
|
12
|
-
import { PackageValidationPanel as
|
|
13
|
-
import
|
|
9
|
+
import { SelectionCheckbox as o } from "../components/SelectionCheckbox.js";
|
|
10
|
+
import { PermissionGuard as ue } from "../components/PermissionGuard.js";
|
|
11
|
+
import { ManifestViewer as de } from "../components/ManifestViewer.js";
|
|
12
|
+
import { PackageValidationPanel as fe, readPackageValidationState as pe } from "../components/PackageValidationPanel.js";
|
|
13
|
+
import me from "../../node_modules/date-fns/format.js";
|
|
14
14
|
import "../hooks/index.js";
|
|
15
15
|
import "../components/index.js";
|
|
16
|
-
import { DEVPORTAL_PERMISSIONS as
|
|
17
|
-
import { useDevportalPermission as
|
|
18
|
-
import { useDevportal as
|
|
19
|
-
import { usePackageUpload as
|
|
20
|
-
import { useCallback as
|
|
21
|
-
import { AlertCircle as
|
|
16
|
+
import { DEVPORTAL_PERMISSIONS as he } from "../constants/permissions.js";
|
|
17
|
+
import { useDevportalPermission as ge } from "../hooks/usePermission.js";
|
|
18
|
+
import { useDevportal as _e } from "../providers/DevportalProvider.js";
|
|
19
|
+
import { usePackageUpload as ve } from "../hooks/usePackageUpload.js";
|
|
20
|
+
import { useCallback as s, useEffect as ye, useMemo as c, useRef as l, useState as u } from "react";
|
|
21
|
+
import { AlertCircle as d, Archive as be, Building2 as xe, CheckCircle as Se, Clock as Ce, Loader2 as we, Package as Te, Plus as Ee, Rocket as De, Send as f, Upload as p, XCircle as Oe } from "lucide-react";
|
|
22
22
|
import { useParams as ke } from "react-router";
|
|
23
23
|
import { Fragment as m, jsx as h, jsxs as g } from "react/jsx-runtime";
|
|
24
24
|
import { useI18n as Ae } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
@@ -41,15 +41,17 @@ var Me = () => {
|
|
|
41
41
|
let { t: Me } = Ae(), v = (e, t) => {
|
|
42
42
|
let n = Me(e);
|
|
43
43
|
return n === e ? t : n;
|
|
44
|
-
}, { allowed:
|
|
44
|
+
}, { allowed: y } = ge(he.APP_VERSION_CREATE), { allowed: b } = ge(he.APP_VERSION_PUBLISH), { allowed: x } = ge(he.APP_VERSION_DEPRECATE), { appId: S } = ke(), { workspacesGatewayUrl: Ne, authToken: Pe, workspaceId: C, getWorkspaceToken: Fe, navigate: Ie, basePath: Le } = _e(), { upload: w, uploading: T, progress: Re, error: E } = ve(Ne, Pe, C, Fe), ze = l(null), Be = l(null), Ve = l(null), He = l(null), [Ue, D] = u(null), [We, O] = u(null), [Ge, k] = u(!1), [A, j] = u(null), [M, N] = u({
|
|
45
45
|
version: "",
|
|
46
46
|
releaseNotes: "",
|
|
47
47
|
changelog: "",
|
|
48
48
|
packageUrl: "",
|
|
49
|
+
packageFileId: "",
|
|
50
|
+
packageWorkspaceId: "",
|
|
49
51
|
packageSize: "",
|
|
50
52
|
manifestJson: "",
|
|
51
53
|
requiredScopes: ""
|
|
52
|
-
}), [
|
|
54
|
+
}), [Ke, P] = u(null), [qe, F] = u(null), [Je, I] = u(null), [Ye, L] = u(null), [R, Xe] = u(/* @__PURE__ */ new Set()), [z, Ze] = u(null), [B, Qe] = u(""), $e = s((e) => {
|
|
53
55
|
let t = e.target.files?.[0];
|
|
54
56
|
if (!t) return;
|
|
55
57
|
let n = new FileReader();
|
|
@@ -57,16 +59,16 @@ var Me = () => {
|
|
|
57
59
|
let n = e.target?.result;
|
|
58
60
|
if (typeof n == "string") {
|
|
59
61
|
let e = _(n);
|
|
60
|
-
|
|
62
|
+
N((t) => ({
|
|
61
63
|
...t,
|
|
62
64
|
manifestJson: n,
|
|
63
65
|
...e ? { version: e } : {}
|
|
64
|
-
})),
|
|
66
|
+
})), D(t.name);
|
|
65
67
|
}
|
|
66
68
|
}, n.readAsText(t), e.target.value = "";
|
|
67
|
-
}, []), [et, V] =
|
|
68
|
-
variables: { id:
|
|
69
|
-
skip: !
|
|
69
|
+
}, []), [et, V] = u(null), [tt, nt] = u(null), { data: H } = te({
|
|
70
|
+
variables: { id: S ?? "" },
|
|
71
|
+
skip: !S,
|
|
70
72
|
fetchPolicy: "cache-first"
|
|
71
73
|
}), U = H?.application?.appType === "WORKFLOW", W = H?.application?.appType === "NODE", G = [
|
|
72
74
|
"WORKFLOW",
|
|
@@ -74,183 +76,191 @@ var Me = () => {
|
|
|
74
76
|
"WIDGET",
|
|
75
77
|
"DASHBOARD"
|
|
76
78
|
].includes(H?.application?.appType ?? ""), rt = !G && !W, it = W && H?.application?.visibility === "PRIVATE", K = H?.application, at = K?.pricingDetails ?? {}, ot = K?.pricingType === "FREE" || K?.pricingType === "PAID" && typeof at.price == "number" && at.price > 0, st = !!K?.shortDescription?.trim() && !!K?.privacyPolicyUrl?.trim() && !!K?.termsOfServiceUrl?.trim(), q = ot && st, ct = [...st ? [] : ["Complete your store listing (short description, privacy policy, terms of service)"], ...ot ? [] : ["Set pricing in the Pricing tab"]];
|
|
77
|
-
|
|
79
|
+
ye(() => {
|
|
78
80
|
let e = H?.application?.name;
|
|
79
|
-
if (!
|
|
81
|
+
if (!S || !e) return;
|
|
80
82
|
let t = window.__breadcrumbRegistry;
|
|
81
|
-
return t?.register(
|
|
82
|
-
}, [
|
|
83
|
+
return t?.register(S, e), () => t?.unregister(S);
|
|
84
|
+
}, [S, H?.application?.name]);
|
|
83
85
|
let { data: J, loading: lt, error: ut } = ne({
|
|
84
|
-
variables: { applicationId:
|
|
85
|
-
skip: !
|
|
86
|
+
variables: { applicationId: S },
|
|
87
|
+
skip: !S,
|
|
86
88
|
fetchPolicy: "cache-and-network"
|
|
87
|
-
}), [dt, { loading: ft }] = r({ refetchQueries: ["GetApplicationVersions"] }), [pt, { loading: mt }] = oe({ refetchQueries: ["GetApplicationVersions"] }), [ht] = re({ refetchQueries: ["GetApplicationVersions"] }), [gt, { loading: _t }] = ie({ refetchQueries: ["GetApplicationVersions", "GetApplication"] }), [vt] = ee({ refetchQueries: ["GetApplicationVersions"] }), [yt] = n({ refetchQueries: ["GetApplicationVersions"] }), [bt] = ae({ refetchQueries: ["GetApplicationVersions"] }), Y =
|
|
88
|
-
|
|
89
|
+
}), [dt, { loading: ft }] = r({ refetchQueries: ["GetApplicationVersions"] }), [pt, { loading: mt }] = oe({ refetchQueries: ["GetApplicationVersions"] }), [ht] = re({ refetchQueries: ["GetApplicationVersions"] }), [gt, { loading: _t }] = ie({ refetchQueries: ["GetApplicationVersions", "GetApplication"] }), [vt] = ee({ refetchQueries: ["GetApplicationVersions"] }), [yt] = n({ refetchQueries: ["GetApplicationVersions"] }), [bt] = ae({ refetchQueries: ["GetApplicationVersions"] }), Y = c(() => J?.application?.versions?.edges?.map((e) => e.node) ?? [], [J?.application?.versions]), X = c(() => Y.filter((e) => R.has(e.id)), [Y, R]), Z = c(() => X.filter((e) => e.status === "draft" || e.status === "rejected"), [X]), Q = c(() => Y.some((e) => e.status === "pending_review"), [Y]), $ = c(() => X.filter((e) => e.status?.toUpperCase() === "PUBLISHED" && !e.isLatest), [X]), xt = Y.length > 0 && Y.every((e) => R.has(e.id)), St = Y.some((e) => R.has(e.id)) && !xt, Ct = (e) => {
|
|
90
|
+
Ie?.(`${Le}/apps/${S}/versions/${e}/lifecycle`);
|
|
89
91
|
}, wt = async () => {
|
|
90
|
-
if (!
|
|
91
|
-
|
|
92
|
+
if (!S || !M.version.trim()) return;
|
|
93
|
+
I(null);
|
|
92
94
|
let e;
|
|
93
95
|
if (G) {
|
|
94
|
-
if (!
|
|
95
|
-
|
|
96
|
+
if (!M.manifestJson.trim()) {
|
|
97
|
+
I(U ? "Workflow Definition (JSON) is required — paste the {nodes, edges} object." : "Manifest (JSON) is required.");
|
|
96
98
|
return;
|
|
97
99
|
}
|
|
98
100
|
try {
|
|
99
|
-
e = JSON.parse(
|
|
101
|
+
e = JSON.parse(M.manifestJson);
|
|
100
102
|
} catch {
|
|
101
|
-
|
|
103
|
+
I(U ? "Invalid JSON in Workflow Definition — please check your input." : "Invalid JSON in Manifest — please check your input.");
|
|
102
104
|
return;
|
|
103
105
|
}
|
|
104
106
|
} else if (W) {
|
|
105
|
-
if (!
|
|
106
|
-
|
|
107
|
+
if (!M.packageUrl) {
|
|
108
|
+
I("Package zip is required for Node versions — upload a .zip file before creating.");
|
|
107
109
|
return;
|
|
108
110
|
}
|
|
109
|
-
if (!
|
|
110
|
-
|
|
111
|
+
if (!M.manifestJson.trim()) {
|
|
112
|
+
I("manifest.json is required for Node versions — upload or paste your manifest before creating.");
|
|
111
113
|
return;
|
|
112
114
|
}
|
|
113
115
|
try {
|
|
114
|
-
e = JSON.parse(
|
|
116
|
+
e = JSON.parse(M.manifestJson);
|
|
115
117
|
} catch {
|
|
116
|
-
|
|
118
|
+
I("Invalid JSON in manifest — please check your input.");
|
|
117
119
|
return;
|
|
118
120
|
}
|
|
119
|
-
} else if (
|
|
120
|
-
e = JSON.parse(
|
|
121
|
+
} else if (M.manifestJson.trim()) try {
|
|
122
|
+
e = JSON.parse(M.manifestJson);
|
|
121
123
|
} catch {
|
|
122
|
-
|
|
124
|
+
I("Invalid JSON in manifest — please check your input.");
|
|
123
125
|
return;
|
|
124
126
|
}
|
|
125
|
-
let t = rt &&
|
|
127
|
+
let t = rt && M.requiredScopes.trim() ? M.requiredScopes.split(",").map((e) => e.trim()).filter(Boolean) : void 0;
|
|
126
128
|
try {
|
|
127
129
|
let n = await dt({ variables: {
|
|
128
|
-
applicationId:
|
|
130
|
+
applicationId: S,
|
|
129
131
|
input: {
|
|
130
|
-
version:
|
|
131
|
-
releaseNotes:
|
|
132
|
-
changelog:
|
|
133
|
-
packageUrl:
|
|
134
|
-
|
|
132
|
+
version: M.version,
|
|
133
|
+
releaseNotes: M.releaseNotes || void 0,
|
|
134
|
+
changelog: M.changelog || void 0,
|
|
135
|
+
packageUrl: M.packageUrl || void 0,
|
|
136
|
+
packageFileId: M.packageFileId || void 0,
|
|
137
|
+
packageWorkspaceId: M.packageWorkspaceId || void 0,
|
|
138
|
+
packageSize: M.packageSize || void 0,
|
|
135
139
|
manifest: e,
|
|
136
140
|
requiredScopes: t
|
|
137
141
|
}
|
|
138
142
|
} });
|
|
139
|
-
|
|
143
|
+
k(!1), D(null), N({
|
|
140
144
|
version: "",
|
|
141
145
|
releaseNotes: "",
|
|
142
146
|
changelog: "",
|
|
143
147
|
packageUrl: "",
|
|
148
|
+
packageFileId: "",
|
|
149
|
+
packageWorkspaceId: "",
|
|
144
150
|
packageSize: "",
|
|
145
151
|
manifestJson: "",
|
|
146
152
|
requiredScopes: ""
|
|
147
|
-
}),
|
|
153
|
+
}), F(v("devportal.versionCreatedSuccess", "Version created successfully"));
|
|
148
154
|
let r = n.data?.createApplicationVersion?.id;
|
|
149
155
|
W && r && Ct(r);
|
|
150
156
|
} catch (e) {
|
|
151
|
-
|
|
157
|
+
P(e instanceof Error ? e.message : v("devportal.versionCreateFailed", "Failed to create version"));
|
|
152
158
|
}
|
|
153
|
-
}, Tt =
|
|
159
|
+
}, Tt = s(async (e) => {
|
|
154
160
|
let t = e.target.files?.[0];
|
|
155
161
|
if (t) {
|
|
156
162
|
e.target.value = "";
|
|
157
163
|
try {
|
|
158
|
-
let e = await
|
|
159
|
-
|
|
164
|
+
let e = await w(t);
|
|
165
|
+
N((n) => ({
|
|
160
166
|
...n,
|
|
161
167
|
packageUrl: e.downloadUrl,
|
|
168
|
+
packageFileId: e.fileId,
|
|
169
|
+
packageWorkspaceId: C ?? "",
|
|
162
170
|
packageSize: String(t.size)
|
|
163
171
|
}));
|
|
164
172
|
} catch {}
|
|
165
173
|
}
|
|
166
|
-
}, [C]), Et =
|
|
174
|
+
}, [w, C]), Et = s(async (e) => {
|
|
167
175
|
let t = e.target.files?.[0];
|
|
168
176
|
if (t) {
|
|
169
177
|
e.target.value = "";
|
|
170
178
|
try {
|
|
171
|
-
let e = await
|
|
172
|
-
|
|
179
|
+
let e = await w(t);
|
|
180
|
+
j((n) => n && {
|
|
173
181
|
...n,
|
|
174
182
|
newPackageUrl: e.downloadUrl,
|
|
183
|
+
newPackageFileId: e.fileId,
|
|
184
|
+
newPackageWorkspaceId: C ?? "",
|
|
175
185
|
newPackageSize: String(t.size)
|
|
176
186
|
});
|
|
177
187
|
} catch {}
|
|
178
188
|
}
|
|
179
|
-
}, [C]), Dt =
|
|
189
|
+
}, [w, C]), Dt = s((e) => {
|
|
180
190
|
let t = e.target.files?.[0];
|
|
181
191
|
if (!t) return;
|
|
182
192
|
let n = new FileReader();
|
|
183
193
|
n.onload = (e) => {
|
|
184
194
|
let n = e.target?.result;
|
|
185
|
-
typeof n == "string" && (
|
|
195
|
+
typeof n == "string" && (j((e) => e && {
|
|
186
196
|
...e,
|
|
187
197
|
manifestJson: n
|
|
188
|
-
}),
|
|
198
|
+
}), O(t.name));
|
|
189
199
|
}, n.readAsText(t), e.target.value = "";
|
|
190
200
|
}, []), Ot = async () => {
|
|
191
|
-
if (!
|
|
192
|
-
|
|
193
|
-
let e =
|
|
194
|
-
if (e &&
|
|
195
|
-
t = JSON.parse(
|
|
201
|
+
if (!A) return;
|
|
202
|
+
L(null);
|
|
203
|
+
let e = A.manifestJson.trim() !== A.originalManifestJson.trim(), t;
|
|
204
|
+
if (e && A.manifestJson.trim()) try {
|
|
205
|
+
t = JSON.parse(A.manifestJson);
|
|
196
206
|
} catch {
|
|
197
|
-
|
|
207
|
+
L("Invalid JSON in manifest — please check your input.");
|
|
198
208
|
return;
|
|
199
209
|
}
|
|
200
210
|
let n = {};
|
|
201
|
-
|
|
211
|
+
A.releaseNotes.trim() && (n.releaseNotes = A.releaseNotes), A.changelog.trim() && (n.changelog = A.changelog), A.newPackageUrl && (n.packageUrl = A.newPackageUrl, n.packageFileId = A.newPackageFileId || void 0, n.packageWorkspaceId = A.newPackageWorkspaceId || void 0, n.packageSize = A.newPackageSize), t && (n.manifest = t);
|
|
202
212
|
try {
|
|
203
213
|
await pt({ variables: {
|
|
204
|
-
id:
|
|
214
|
+
id: A.versionId,
|
|
205
215
|
input: n
|
|
206
|
-
} }),
|
|
216
|
+
} }), j(null), O(null), F(v("devportal.versionUpdatedSuccess", "Version updated successfully"));
|
|
207
217
|
} catch (e) {
|
|
208
|
-
|
|
218
|
+
P(e instanceof Error ? e.message : v("devportal.versionUpdateFailed", "Failed to update version"));
|
|
209
219
|
}
|
|
210
220
|
}, kt = async (e) => {
|
|
211
|
-
|
|
221
|
+
P(null), F(null);
|
|
212
222
|
try {
|
|
213
223
|
let t = await ht({ variables: { id: e } });
|
|
214
224
|
if (t.error || !t.data?.publishApplicationVersion) throw t.error ?? Error(v("devportal.versionPublishFailed", "Failed to submit version for review"));
|
|
215
|
-
|
|
225
|
+
F(v("devportal.versionSubmittedSuccess", "Version submitted for review — you'll be notified when approved"));
|
|
216
226
|
} catch (e) {
|
|
217
|
-
|
|
227
|
+
P(e instanceof Error ? e.message : v("devportal.versionPublishFailed", "Failed to submit version for review"));
|
|
218
228
|
}
|
|
219
229
|
}, At = async () => {
|
|
220
230
|
let e = tt;
|
|
221
|
-
if (nt(null), e &&
|
|
222
|
-
|
|
231
|
+
if (nt(null), e && C) {
|
|
232
|
+
P(null), F(null);
|
|
223
233
|
try {
|
|
224
234
|
let t = await gt({ variables: {
|
|
225
235
|
id: e.id,
|
|
226
|
-
workspaceId:
|
|
236
|
+
workspaceId: C
|
|
227
237
|
} });
|
|
228
238
|
if (t.error || !t.data?.publishApplicationVersionToOrganization) throw t.error ?? Error(v("devportal.versionPublishToOrganizationFailed", "Failed to publish the version to your organization"));
|
|
229
|
-
|
|
239
|
+
F(v("devportal.versionPublishedToOrganizationSuccess", "Version published to your organization. Workspace admins in your organization can now install it."));
|
|
230
240
|
} catch (e) {
|
|
231
|
-
|
|
241
|
+
P(e instanceof Error ? e.message : v("devportal.versionPublishToOrganizationFailed", "Failed to publish the version to your organization"));
|
|
232
242
|
}
|
|
233
243
|
}
|
|
234
244
|
}, jt = async (e) => {
|
|
235
|
-
|
|
245
|
+
P(null), F(null);
|
|
236
246
|
try {
|
|
237
|
-
await vt({ variables: { id: e } }),
|
|
247
|
+
await vt({ variables: { id: e } }), F(v("devportal.versionDeprecatedSuccess", "Version deprecated successfully"));
|
|
238
248
|
} catch (e) {
|
|
239
|
-
|
|
249
|
+
P(e instanceof Error ? e.message : v("devportal.versionDeprecateFailed", "Failed to deprecate version"));
|
|
240
250
|
}
|
|
241
251
|
}, Mt = async () => {
|
|
242
|
-
if (
|
|
243
|
-
|
|
252
|
+
if (z && B.trim()) {
|
|
253
|
+
P(null), F(null);
|
|
244
254
|
try {
|
|
245
255
|
await bt({ variables: {
|
|
246
|
-
id:
|
|
247
|
-
reason:
|
|
248
|
-
} }),
|
|
256
|
+
id: z.versionId,
|
|
257
|
+
reason: B
|
|
258
|
+
} }), F(v("devportal.versionRejectedSuccess", "Version rejected — developer has been notified")), Ze(null), Qe("");
|
|
249
259
|
} catch (e) {
|
|
250
|
-
|
|
260
|
+
P(e instanceof Error ? e.message : v("devportal.versionRejectFailed", "Failed to reject version"));
|
|
251
261
|
}
|
|
252
262
|
}
|
|
253
|
-
}, Nt = (e) => e.status === "published" && e.isLatest ? /* @__PURE__ */ h(
|
|
263
|
+
}, Nt = (e) => e.status === "published" && e.isLatest ? /* @__PURE__ */ h(Se, {
|
|
254
264
|
size: 16,
|
|
255
265
|
className: "text-status-success-text"
|
|
256
266
|
}) : e.status === "pending_review" ? /* @__PURE__ */ h(f, {
|
|
@@ -259,103 +269,103 @@ var Me = () => {
|
|
|
259
269
|
}) : e.status === "rejected" ? /* @__PURE__ */ h(Oe, {
|
|
260
270
|
size: 16,
|
|
261
271
|
className: "text-status-error-text"
|
|
262
|
-
}) : e.status === "draft" ? /* @__PURE__ */ h(
|
|
272
|
+
}) : e.status === "draft" ? /* @__PURE__ */ h(Ce, {
|
|
263
273
|
size: 16,
|
|
264
274
|
className: "text-status-warning-text"
|
|
265
|
-
}) : e.status === "deprecated" ? /* @__PURE__ */ h(
|
|
275
|
+
}) : e.status === "deprecated" ? /* @__PURE__ */ h(be, {
|
|
266
276
|
size: 16,
|
|
267
277
|
className: "text-text-secondary"
|
|
268
278
|
}) : /* @__PURE__ */ h(Te, {
|
|
269
279
|
size: 16,
|
|
270
280
|
className: "text-accent-blue"
|
|
271
281
|
}), Pt = (e, t) => {
|
|
272
|
-
|
|
282
|
+
Xe((n) => {
|
|
273
283
|
let r = new Set(n);
|
|
274
284
|
return t ? r.add(e) : r.delete(e), r;
|
|
275
285
|
});
|
|
276
286
|
}, Ft = (e) => {
|
|
277
|
-
|
|
287
|
+
Xe((t) => {
|
|
278
288
|
let n = new Set(t);
|
|
279
289
|
return Y.forEach((t) => {
|
|
280
290
|
e ? n.add(t.id) : n.delete(t.id);
|
|
281
291
|
}), n;
|
|
282
292
|
});
|
|
283
|
-
}, It = () =>
|
|
293
|
+
}, It = () => Xe(/* @__PURE__ */ new Set()), Lt = async () => {
|
|
284
294
|
if (Z.length === 0) return;
|
|
285
|
-
|
|
295
|
+
P(null);
|
|
286
296
|
let e = await Promise.allSettled(Z.map((e) => ht({ variables: { id: e.id } }))), t = e.filter((e) => e.status === "fulfilled").length, n = e.length - t;
|
|
287
|
-
|
|
297
|
+
F(`Published ${t} version${t === 1 ? "" : "s"}${n > 0 ? ` • ${n} failed` : ""}`), It(), V(null);
|
|
288
298
|
}, Rt = async () => {
|
|
289
299
|
if ($.length === 0) return;
|
|
290
|
-
|
|
300
|
+
P(null);
|
|
291
301
|
let e = await Promise.allSettled($.map((e) => vt({ variables: { id: e.id } }))), t = e.filter((e) => e.status === "fulfilled").length, n = e.length - t;
|
|
292
|
-
|
|
293
|
-
}, zt = _(
|
|
302
|
+
F(`Deprecated ${t} version${t === 1 ? "" : "s"}${n > 0 ? ` • ${n} failed` : ""}`), It(), V(null);
|
|
303
|
+
}, zt = _(M.manifestJson);
|
|
294
304
|
return lt && !J ? /* @__PURE__ */ h(e, {
|
|
295
305
|
title: v("devportal.versionManagement", "Version Management"),
|
|
296
306
|
description: v("devportal.versionManagementDescription", "Manage your application versions"),
|
|
297
|
-
backLink: `/apps/${
|
|
307
|
+
backLink: `/apps/${S}`,
|
|
298
308
|
backLabel: v("devportal.backToApplication", "Back to Application"),
|
|
299
309
|
children: /* @__PURE__ */ h("div", {
|
|
300
310
|
className: "flex items-center justify-center py-16",
|
|
301
|
-
children: /* @__PURE__ */ h(
|
|
311
|
+
children: /* @__PURE__ */ h(we, { className: "h-8 w-8 animate-spin text-text-secondary" })
|
|
302
312
|
})
|
|
303
313
|
}) : ut && !J ? /* @__PURE__ */ h(e, {
|
|
304
314
|
title: v("devportal.versionManagement", "Version Management"),
|
|
305
315
|
description: v("devportal.versionManagementDescription", "Manage your application versions"),
|
|
306
|
-
backLink: `/apps/${
|
|
316
|
+
backLink: `/apps/${S}`,
|
|
307
317
|
backLabel: v("devportal.backToApplication", "Back to Application"),
|
|
308
318
|
children: /* @__PURE__ */ h(ce, {
|
|
309
|
-
icon: /* @__PURE__ */ h(
|
|
319
|
+
icon: /* @__PURE__ */ h(d, {
|
|
310
320
|
size: 32,
|
|
311
321
|
className: "text-status-error-text"
|
|
312
322
|
}),
|
|
313
323
|
title: v("devportal.failedToLoadVersions", "Failed to load versions"),
|
|
314
324
|
description: ut.message || v("devportal.versionsLoadError", "An error occurred while loading versions")
|
|
315
325
|
})
|
|
316
|
-
}) : /* @__PURE__ */ h(
|
|
326
|
+
}) : /* @__PURE__ */ h(ue, {
|
|
317
327
|
authOnly: !0,
|
|
318
328
|
children: /* @__PURE__ */ g(e, {
|
|
319
329
|
title: v("devportal.versionManagement", "Version Management"),
|
|
320
330
|
description: v("devportal.versionManagementDescription", "Manage your application versions"),
|
|
321
331
|
purpose: U ? 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.") : W ? 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.") : G ? 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."),
|
|
322
|
-
backLink: `/apps/${
|
|
332
|
+
backLink: `/apps/${S}`,
|
|
323
333
|
backLabel: v("devportal.backToApplication", "Back to Application"),
|
|
324
334
|
actions: /* @__PURE__ */ g("button", {
|
|
325
335
|
onClick: () => {
|
|
326
|
-
|
|
336
|
+
I(null), k(!0);
|
|
327
337
|
},
|
|
328
|
-
disabled: !
|
|
329
|
-
"aria-disabled": !
|
|
338
|
+
disabled: !y,
|
|
339
|
+
"aria-disabled": !y,
|
|
330
340
|
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",
|
|
331
341
|
children: [/* @__PURE__ */ h(Ee, { size: 16 }), v("devportal.newVersion", "New Version")]
|
|
332
342
|
}),
|
|
333
343
|
children: [
|
|
334
|
-
|
|
344
|
+
Ke && /* @__PURE__ */ g("div", {
|
|
335
345
|
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",
|
|
336
346
|
children: [
|
|
337
|
-
/* @__PURE__ */ h(
|
|
347
|
+
/* @__PURE__ */ h(d, {
|
|
338
348
|
size: 16,
|
|
339
349
|
className: "flex-shrink-0"
|
|
340
350
|
}),
|
|
341
|
-
|
|
351
|
+
Ke,
|
|
342
352
|
/* @__PURE__ */ h("button", {
|
|
343
|
-
onClick: () =>
|
|
353
|
+
onClick: () => P(null),
|
|
344
354
|
className: "ml-auto text-status-error-text hover:text-status-error-text",
|
|
345
355
|
children: v("devportal.dismiss", "Dismiss")
|
|
346
356
|
})
|
|
347
357
|
]
|
|
348
358
|
}),
|
|
349
|
-
|
|
359
|
+
qe && /* @__PURE__ */ g("div", {
|
|
350
360
|
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",
|
|
351
361
|
children: [
|
|
352
|
-
/* @__PURE__ */ h(
|
|
362
|
+
/* @__PURE__ */ h(Se, {
|
|
353
363
|
size: 16,
|
|
354
364
|
className: "flex-shrink-0"
|
|
355
365
|
}),
|
|
356
|
-
|
|
366
|
+
qe,
|
|
357
367
|
/* @__PURE__ */ h("button", {
|
|
358
|
-
onClick: () =>
|
|
368
|
+
onClick: () => F(null),
|
|
359
369
|
className: "ml-auto text-status-success-text hover:text-status-success-text",
|
|
360
370
|
children: v("devportal.dismiss", "Dismiss")
|
|
361
371
|
})
|
|
@@ -363,7 +373,7 @@ var Me = () => {
|
|
|
363
373
|
}),
|
|
364
374
|
K && !q && /* @__PURE__ */ g("div", {
|
|
365
375
|
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",
|
|
366
|
-
children: [/* @__PURE__ */ h(
|
|
376
|
+
children: [/* @__PURE__ */ h(d, {
|
|
367
377
|
size: 16,
|
|
368
378
|
className: "mt-0.5 shrink-0"
|
|
369
379
|
}), /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("p", {
|
|
@@ -412,7 +422,7 @@ var Me = () => {
|
|
|
412
422
|
className: "flex flex-wrap items-center gap-3",
|
|
413
423
|
children: [/* @__PURE__ */ g("div", {
|
|
414
424
|
className: "flex items-center gap-2",
|
|
415
|
-
children: [/* @__PURE__ */ h(
|
|
425
|
+
children: [/* @__PURE__ */ h(o, {
|
|
416
426
|
checked: xt,
|
|
417
427
|
indeterminate: St,
|
|
418
428
|
onChange: Ft,
|
|
@@ -421,7 +431,7 @@ var Me = () => {
|
|
|
421
431
|
className: "text-sm font-medium",
|
|
422
432
|
children: v("devportal.selectAllVisible", "Select all visible")
|
|
423
433
|
})]
|
|
424
|
-
}),
|
|
434
|
+
}), R.size > 0 && /* @__PURE__ */ h("button", {
|
|
425
435
|
onClick: It,
|
|
426
436
|
className: "text-sm text-text-secondary hover:text-text-primary",
|
|
427
437
|
children: v("devportal.clearSelection", "Clear selection")
|
|
@@ -431,20 +441,20 @@ var Me = () => {
|
|
|
431
441
|
children: [
|
|
432
442
|
/* @__PURE__ */ g("span", {
|
|
433
443
|
className: "rounded-full bg-bg-sunken px-3 py-1 text-sm font-medium text-text-secondary",
|
|
434
|
-
children: [
|
|
444
|
+
children: [R.size, " selected"]
|
|
435
445
|
}),
|
|
436
446
|
/* @__PURE__ */ g("button", {
|
|
437
447
|
onClick: () => V("publish"),
|
|
438
|
-
disabled: Z.length === 0 || !
|
|
439
|
-
"aria-disabled": !
|
|
448
|
+
disabled: Z.length === 0 || !b || !q || Q,
|
|
449
|
+
"aria-disabled": !b || !q || Q,
|
|
440
450
|
title: Q ? v("devportal.versionAlreadyPending", "A version is already pending review") : q ? void 0 : ct.join(" · "),
|
|
441
451
|
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",
|
|
442
452
|
children: [v("devportal.submitForReview", "Submit for Review"), Z.length > 0 ? ` (${Z.length})` : ""]
|
|
443
453
|
}),
|
|
444
454
|
/* @__PURE__ */ g("button", {
|
|
445
455
|
onClick: () => V("deprecate"),
|
|
446
|
-
disabled: $.length === 0 || !
|
|
447
|
-
"aria-disabled": !
|
|
456
|
+
disabled: $.length === 0 || !x,
|
|
457
|
+
"aria-disabled": !x,
|
|
448
458
|
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",
|
|
449
459
|
children: [v("devportal.deprecateSelected", "Deprecate Selected"), $.length > 0 ? ` (${$.length})` : ""]
|
|
450
460
|
})
|
|
@@ -458,7 +468,7 @@ var Me = () => {
|
|
|
458
468
|
columns: [
|
|
459
469
|
{
|
|
460
470
|
key: "select",
|
|
461
|
-
header: /* @__PURE__ */ h(
|
|
471
|
+
header: /* @__PURE__ */ h(o, {
|
|
462
472
|
checked: xt,
|
|
463
473
|
indeterminate: St,
|
|
464
474
|
onChange: Ft,
|
|
@@ -467,8 +477,8 @@ var Me = () => {
|
|
|
467
477
|
className: "w-12",
|
|
468
478
|
render: (e) => /* @__PURE__ */ h("div", {
|
|
469
479
|
onClick: (e) => e.stopPropagation(),
|
|
470
|
-
children: /* @__PURE__ */ h(
|
|
471
|
-
checked:
|
|
480
|
+
children: /* @__PURE__ */ h(o, {
|
|
481
|
+
checked: R.has(e.id),
|
|
472
482
|
onChange: (t) => Pt(e.id, t),
|
|
473
483
|
ariaLabel: `Select version ${e.version}`
|
|
474
484
|
})
|
|
@@ -519,10 +529,10 @@ var Me = () => {
|
|
|
519
529
|
className: "text-xs text-status-error-text max-w-xs",
|
|
520
530
|
children: e.reviewNotes
|
|
521
531
|
}),
|
|
522
|
-
W && e.packageUrl && /* @__PURE__ */ h(
|
|
532
|
+
W && e.packageUrl && /* @__PURE__ */ h(fe, { metadata: e.metadata }),
|
|
523
533
|
it && je(e.metadata) && /* @__PURE__ */ g("p", {
|
|
524
534
|
className: "inline-flex items-center gap-1 text-xs text-status-success-text",
|
|
525
|
-
children: [/* @__PURE__ */ h(
|
|
535
|
+
children: [/* @__PURE__ */ h(xe, { size: 11 }), v("devportal.publishedToOrganization", "Published to your organization")]
|
|
526
536
|
})
|
|
527
537
|
]
|
|
528
538
|
})
|
|
@@ -530,12 +540,12 @@ var Me = () => {
|
|
|
530
540
|
{
|
|
531
541
|
key: "publishedAt",
|
|
532
542
|
header: v("devportal.published", "Published"),
|
|
533
|
-
render: (e) => e.publishedAt ?
|
|
543
|
+
render: (e) => e.publishedAt ? me(new Date(e.publishedAt), "MMM d, yyyy") : "-"
|
|
534
544
|
},
|
|
535
545
|
{
|
|
536
546
|
key: "manifest",
|
|
537
547
|
header: v("devportal.manifest", "Manifest"),
|
|
538
|
-
render: (e) => e.manifest ? /* @__PURE__ */ h(
|
|
548
|
+
render: (e) => e.manifest ? /* @__PURE__ */ h(de, {
|
|
539
549
|
manifest: e.manifest,
|
|
540
550
|
tr: v
|
|
541
551
|
}) : /* @__PURE__ */ h("span", {
|
|
@@ -556,44 +566,46 @@ var Me = () => {
|
|
|
556
566
|
onClick: () => Ct(e.id),
|
|
557
567
|
children: [/* @__PURE__ */ h(De, { size: 11 }), v("devportal.nodeLifecycle.open", "Lifecycle")]
|
|
558
568
|
}),
|
|
559
|
-
(e.status === "draft" || e.status === "rejected") &&
|
|
569
|
+
(e.status === "draft" || e.status === "rejected") && y && /* @__PURE__ */ h("button", {
|
|
560
570
|
className: "inline-flex items-center gap-1 text-xs text-text-secondary hover:text-text-primary hover:underline",
|
|
561
571
|
onClick: () => {
|
|
562
572
|
let t = e.manifest ? JSON.stringify(e.manifest, null, 2) : "";
|
|
563
|
-
|
|
573
|
+
j({
|
|
564
574
|
versionId: e.id,
|
|
565
575
|
version: e.version,
|
|
566
576
|
hasExistingZip: !!e.packageUrl,
|
|
567
577
|
newPackageUrl: "",
|
|
578
|
+
newPackageFileId: "",
|
|
579
|
+
newPackageWorkspaceId: "",
|
|
568
580
|
newPackageSize: "",
|
|
569
581
|
manifestJson: t,
|
|
570
582
|
originalManifestJson: t,
|
|
571
583
|
releaseNotes: e.releaseNotes ?? "",
|
|
572
584
|
changelog: e.changelog ?? ""
|
|
573
|
-
}),
|
|
585
|
+
}), O(null), L(null);
|
|
574
586
|
},
|
|
575
587
|
children: "Edit"
|
|
576
588
|
}),
|
|
577
589
|
(e.status === "draft" || e.status === "rejected") && K?.status === "PUBLISHED" && /* @__PURE__ */ g("button", {
|
|
578
590
|
className: "inline-flex items-center gap-1 text-xs text-primary hover:underline disabled:opacity-50 disabled:cursor-not-allowed",
|
|
579
|
-
disabled: !
|
|
580
|
-
"aria-disabled": !
|
|
591
|
+
disabled: !b || !q || Q,
|
|
592
|
+
"aria-disabled": !b || !q || Q,
|
|
581
593
|
title: Q ? v("devportal.versionAlreadyPending", "A version is already pending review") : q ? void 0 : ct.join(" · "),
|
|
582
594
|
onClick: () => kt(e.id),
|
|
583
595
|
children: [/* @__PURE__ */ h(f, { size: 11 }), v("devportal.submitForReview", "Submit for Review")]
|
|
584
596
|
}),
|
|
585
597
|
it && (e.status === "draft" || e.status === "rejected") && /* @__PURE__ */ g("button", {
|
|
586
598
|
className: "inline-flex items-center gap-1 text-xs text-primary hover:underline disabled:opacity-50 disabled:cursor-not-allowed",
|
|
587
|
-
disabled: !
|
|
588
|
-
"aria-disabled": !
|
|
589
|
-
title:
|
|
599
|
+
disabled: !b || !C || _t || pe(e.metadata).kind !== "passed",
|
|
600
|
+
"aria-disabled": !b || !C || _t || pe(e.metadata).kind !== "passed",
|
|
601
|
+
title: pe(e.metadata).kind === "passed" ? void 0 : v("devportal.publishToOrganizationNeedsValidation", "Upload a package that passes validation first"),
|
|
590
602
|
onClick: () => nt(e),
|
|
591
|
-
children: [/* @__PURE__ */ h(
|
|
603
|
+
children: [/* @__PURE__ */ h(xe, { size: 11 }), v("devportal.publishToOrganization", "Publish to my organization")]
|
|
592
604
|
}),
|
|
593
605
|
e.status === "published" && !e.isLatest && /* @__PURE__ */ h("button", {
|
|
594
606
|
className: "text-xs text-status-warning-text hover:underline disabled:opacity-50",
|
|
595
|
-
disabled: !
|
|
596
|
-
"aria-disabled": !
|
|
607
|
+
disabled: !x,
|
|
608
|
+
"aria-disabled": !x,
|
|
597
609
|
onClick: () => jt(e.id),
|
|
598
610
|
children: v("devportal.deprecate", "Deprecate")
|
|
599
611
|
})
|
|
@@ -607,16 +619,16 @@ var Me = () => {
|
|
|
607
619
|
description: v("devportal.noVersionsYetDescription", "Create your first version to start distributing your app"),
|
|
608
620
|
action: /* @__PURE__ */ g("button", {
|
|
609
621
|
onClick: () => {
|
|
610
|
-
|
|
622
|
+
I(null), k(!0);
|
|
611
623
|
},
|
|
612
624
|
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",
|
|
613
625
|
children: [/* @__PURE__ */ h(Ee, { size: 16 }), v("devportal.createVersion", "Create Version")]
|
|
614
626
|
})
|
|
615
627
|
}),
|
|
616
|
-
|
|
617
|
-
open:
|
|
628
|
+
Ge && /* @__PURE__ */ h(a, {
|
|
629
|
+
open: Ge,
|
|
618
630
|
onOpenChange: (e) => {
|
|
619
|
-
|
|
631
|
+
k(e), e || I(null);
|
|
620
632
|
},
|
|
621
633
|
onConfirm: wt,
|
|
622
634
|
title: v("devportal.createNewVersion", "Create New Version"),
|
|
@@ -624,18 +636,18 @@ var Me = () => {
|
|
|
624
636
|
children: /* @__PURE__ */ g("div", {
|
|
625
637
|
className: "space-y-4",
|
|
626
638
|
children: [
|
|
627
|
-
|
|
639
|
+
Je && /* @__PURE__ */ g("div", {
|
|
628
640
|
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",
|
|
629
|
-
children: [/* @__PURE__ */ h(
|
|
641
|
+
children: [/* @__PURE__ */ h(d, {
|
|
630
642
|
size: 14,
|
|
631
643
|
className: "flex-shrink-0"
|
|
632
|
-
}),
|
|
644
|
+
}), Je]
|
|
633
645
|
}),
|
|
634
646
|
/* @__PURE__ */ h(le, {
|
|
635
647
|
label: v("devportal.versionNumber", "Version Number"),
|
|
636
|
-
value:
|
|
637
|
-
onChange: (e) =>
|
|
638
|
-
...
|
|
648
|
+
value: M.version,
|
|
649
|
+
onChange: (e) => N({
|
|
650
|
+
...M,
|
|
639
651
|
version: e.target.value
|
|
640
652
|
}),
|
|
641
653
|
placeholder: "e.g., 2.2.0",
|
|
@@ -661,11 +673,11 @@ var Me = () => {
|
|
|
661
673
|
rows: 10,
|
|
662
674
|
required: !0,
|
|
663
675
|
placeholder: U ? "{\n \"nodes\": [],\n \"edges\": []\n}" : "{\n \"manifestVersion\": \"1.0\",\n \"identity\": { \"name\": \"My Item\", \"version\": \"1.0.0\" }\n}",
|
|
664
|
-
value:
|
|
676
|
+
value: M.manifestJson,
|
|
665
677
|
onChange: (e) => {
|
|
666
678
|
let t = _(e.target.value);
|
|
667
|
-
|
|
668
|
-
...
|
|
679
|
+
N({
|
|
680
|
+
...M,
|
|
669
681
|
manifestJson: e.target.value,
|
|
670
682
|
...t ? { version: t } : {}
|
|
671
683
|
});
|
|
@@ -700,7 +712,7 @@ var Me = () => {
|
|
|
700
712
|
className: "flex gap-2 items-center",
|
|
701
713
|
children: [
|
|
702
714
|
/* @__PURE__ */ h("input", {
|
|
703
|
-
ref:
|
|
715
|
+
ref: ze,
|
|
704
716
|
type: "file",
|
|
705
717
|
accept: ".zip",
|
|
706
718
|
className: "hidden",
|
|
@@ -708,33 +720,33 @@ var Me = () => {
|
|
|
708
720
|
}),
|
|
709
721
|
/* @__PURE__ */ h("button", {
|
|
710
722
|
type: "button",
|
|
711
|
-
disabled:
|
|
712
|
-
onClick: () =>
|
|
723
|
+
disabled: T,
|
|
724
|
+
onClick: () => ze.current?.click(),
|
|
713
725
|
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",
|
|
714
|
-
children:
|
|
715
|
-
/* @__PURE__ */ h(
|
|
726
|
+
children: T ? /* @__PURE__ */ g(m, { children: [
|
|
727
|
+
/* @__PURE__ */ h(we, {
|
|
716
728
|
size: 14,
|
|
717
729
|
className: "animate-spin"
|
|
718
730
|
}),
|
|
719
731
|
" ",
|
|
720
732
|
"Uploading… ",
|
|
721
|
-
|
|
733
|
+
Re,
|
|
722
734
|
"%"
|
|
723
735
|
] }) : /* @__PURE__ */ g(m, { children: [
|
|
724
736
|
/* @__PURE__ */ h(p, { size: 14 }),
|
|
725
737
|
" ",
|
|
726
|
-
|
|
738
|
+
M.packageUrl ? "Replace zip" : "Upload zip"
|
|
727
739
|
] })
|
|
728
740
|
}),
|
|
729
|
-
|
|
741
|
+
M.packageUrl && !T && /* @__PURE__ */ h("span", {
|
|
730
742
|
className: "text-xs text-status-success-text",
|
|
731
743
|
children: "✓ Uploaded"
|
|
732
744
|
})
|
|
733
745
|
]
|
|
734
746
|
}),
|
|
735
|
-
|
|
747
|
+
E && /* @__PURE__ */ h("p", {
|
|
736
748
|
className: "text-xs text-status-error-text",
|
|
737
|
-
children:
|
|
749
|
+
children: E
|
|
738
750
|
}),
|
|
739
751
|
/* @__PURE__ */ h("p", {
|
|
740
752
|
className: "text-xs text-text-tertiary",
|
|
@@ -760,12 +772,12 @@ var Me = () => {
|
|
|
760
772
|
}), /* @__PURE__ */ g("div", {
|
|
761
773
|
className: "flex items-center gap-2",
|
|
762
774
|
children: [
|
|
763
|
-
|
|
775
|
+
Ue && /* @__PURE__ */ g("span", {
|
|
764
776
|
className: "text-xs text-status-success-text",
|
|
765
|
-
children: ["✓ ",
|
|
777
|
+
children: ["✓ ", Ue]
|
|
766
778
|
}),
|
|
767
779
|
/* @__PURE__ */ h("input", {
|
|
768
|
-
ref:
|
|
780
|
+
ref: Be,
|
|
769
781
|
type: "file",
|
|
770
782
|
accept: ".json,application/json",
|
|
771
783
|
className: "hidden",
|
|
@@ -773,7 +785,7 @@ var Me = () => {
|
|
|
773
785
|
}),
|
|
774
786
|
/* @__PURE__ */ g("button", {
|
|
775
787
|
type: "button",
|
|
776
|
-
onClick: () =>
|
|
788
|
+
onClick: () => Be.current?.click(),
|
|
777
789
|
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",
|
|
778
790
|
children: [/* @__PURE__ */ h(p, { size: 12 }), "Upload manifest.json"]
|
|
779
791
|
})
|
|
@@ -783,12 +795,12 @@ var Me = () => {
|
|
|
783
795
|
/* @__PURE__ */ h("textarea", {
|
|
784
796
|
rows: 5,
|
|
785
797
|
placeholder: "{\n \"manifestVersion\": \"1.0\",\n \"itemType\": \"node\",\n \"identity\": { \"version\": \"1.0.0\", \"displayName\": \"My Node\" }\n}",
|
|
786
|
-
value:
|
|
798
|
+
value: M.manifestJson,
|
|
787
799
|
onChange: (e) => {
|
|
788
|
-
|
|
800
|
+
D(null);
|
|
789
801
|
let t = _(e.target.value);
|
|
790
|
-
|
|
791
|
-
...
|
|
802
|
+
N({
|
|
803
|
+
...M,
|
|
792
804
|
manifestJson: e.target.value,
|
|
793
805
|
...t ? { version: t } : {}
|
|
794
806
|
});
|
|
@@ -821,9 +833,9 @@ var Me = () => {
|
|
|
821
833
|
}),
|
|
822
834
|
/* @__PURE__ */ h("input", {
|
|
823
835
|
type: "text",
|
|
824
|
-
value:
|
|
825
|
-
onChange: (e) =>
|
|
826
|
-
...
|
|
836
|
+
value: M.requiredScopes,
|
|
837
|
+
onChange: (e) => N({
|
|
838
|
+
...M,
|
|
827
839
|
requiredScopes: e.target.value
|
|
828
840
|
}),
|
|
829
841
|
placeholder: "e.g. read:contacts, write:messages",
|
|
@@ -837,9 +849,9 @@ var Me = () => {
|
|
|
837
849
|
}),
|
|
838
850
|
/* @__PURE__ */ h(i, {
|
|
839
851
|
label: v("devportal.releaseNotes", "Release Notes"),
|
|
840
|
-
value:
|
|
841
|
-
onChange: (e) =>
|
|
842
|
-
...
|
|
852
|
+
value: M.releaseNotes,
|
|
853
|
+
onChange: (e) => N({
|
|
854
|
+
...M,
|
|
843
855
|
releaseNotes: e
|
|
844
856
|
}),
|
|
845
857
|
placeholder: v("devportal.releaseNotesPlaceholder", "What changed in this release?"),
|
|
@@ -847,9 +859,9 @@ var Me = () => {
|
|
|
847
859
|
}),
|
|
848
860
|
/* @__PURE__ */ h(i, {
|
|
849
861
|
label: v("devportal.changelog", "Changelog"),
|
|
850
|
-
value:
|
|
851
|
-
onChange: (e) =>
|
|
852
|
-
...
|
|
862
|
+
value: M.changelog,
|
|
863
|
+
onChange: (e) => N({
|
|
864
|
+
...M,
|
|
853
865
|
changelog: e
|
|
854
866
|
}),
|
|
855
867
|
placeholder: v("devportal.changelogPlaceholder", "Detailed changelog for this version..."),
|
|
@@ -858,13 +870,13 @@ var Me = () => {
|
|
|
858
870
|
]
|
|
859
871
|
})
|
|
860
872
|
}),
|
|
861
|
-
|
|
862
|
-
open: !!
|
|
873
|
+
z && /* @__PURE__ */ h(a, {
|
|
874
|
+
open: !!z,
|
|
863
875
|
onOpenChange: (e) => {
|
|
864
|
-
e || (
|
|
876
|
+
e || (Ze(null), Qe(""));
|
|
865
877
|
},
|
|
866
878
|
onConfirm: Mt,
|
|
867
|
-
title: `Reject version ${
|
|
879
|
+
title: `Reject version ${z.version}`,
|
|
868
880
|
confirmLabel: "Reject Version",
|
|
869
881
|
cancelLabel: v("devportal.cancel", "Cancel"),
|
|
870
882
|
variant: "danger",
|
|
@@ -887,31 +899,31 @@ var Me = () => {
|
|
|
887
899
|
]
|
|
888
900
|
}), /* @__PURE__ */ h("textarea", {
|
|
889
901
|
rows: 3,
|
|
890
|
-
value:
|
|
891
|
-
onChange: (e) =>
|
|
902
|
+
value: B,
|
|
903
|
+
onChange: (e) => Qe(e.target.value),
|
|
892
904
|
placeholder: "e.g. Manifest contains disallowed network calls to external domains...",
|
|
893
905
|
className: "w-full rounded-md border bg-transparent px-3 py-2 text-sm placeholder:text-text-secondary focus:outline-none focus:ring-1 focus:ring-[var(--color-focus-ring)]"
|
|
894
906
|
})]
|
|
895
907
|
})]
|
|
896
908
|
})
|
|
897
909
|
}),
|
|
898
|
-
|
|
899
|
-
open: !!
|
|
910
|
+
A && /* @__PURE__ */ h(a, {
|
|
911
|
+
open: !!A,
|
|
900
912
|
onOpenChange: (e) => {
|
|
901
|
-
e || (
|
|
913
|
+
e || (j(null), O(null), L(null));
|
|
902
914
|
},
|
|
903
915
|
onConfirm: Ot,
|
|
904
|
-
title: `Edit Version ${
|
|
916
|
+
title: `Edit Version ${A.version}`,
|
|
905
917
|
confirmLabel: mt ? "Saving…" : "Save Changes",
|
|
906
918
|
children: /* @__PURE__ */ g("div", {
|
|
907
919
|
className: "space-y-4",
|
|
908
920
|
children: [
|
|
909
|
-
|
|
921
|
+
Ye && /* @__PURE__ */ g("div", {
|
|
910
922
|
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",
|
|
911
|
-
children: [/* @__PURE__ */ h(
|
|
923
|
+
children: [/* @__PURE__ */ h(d, {
|
|
912
924
|
size: 14,
|
|
913
925
|
className: "flex-shrink-0"
|
|
914
|
-
}),
|
|
926
|
+
}), Ye]
|
|
915
927
|
}),
|
|
916
928
|
/* @__PURE__ */ h("div", {
|
|
917
929
|
className: "rounded-lg border border-status-info-bg bg-status-info-bg-subtle px-3 py-2 text-xs text-status-info-text",
|
|
@@ -928,7 +940,7 @@ var Me = () => {
|
|
|
928
940
|
className: "flex gap-2 items-center",
|
|
929
941
|
children: [
|
|
930
942
|
/* @__PURE__ */ h("input", {
|
|
931
|
-
ref:
|
|
943
|
+
ref: Ve,
|
|
932
944
|
type: "file",
|
|
933
945
|
accept: ".zip",
|
|
934
946
|
className: "hidden",
|
|
@@ -936,33 +948,33 @@ var Me = () => {
|
|
|
936
948
|
}),
|
|
937
949
|
/* @__PURE__ */ h("button", {
|
|
938
950
|
type: "button",
|
|
939
|
-
disabled:
|
|
940
|
-
onClick: () =>
|
|
951
|
+
disabled: T,
|
|
952
|
+
onClick: () => Ve.current?.click(),
|
|
941
953
|
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",
|
|
942
|
-
children:
|
|
943
|
-
/* @__PURE__ */ h(
|
|
954
|
+
children: T ? /* @__PURE__ */ g(m, { children: [
|
|
955
|
+
/* @__PURE__ */ h(we, {
|
|
944
956
|
size: 14,
|
|
945
957
|
className: "animate-spin"
|
|
946
958
|
}),
|
|
947
959
|
" ",
|
|
948
960
|
"Uploading… ",
|
|
949
|
-
|
|
961
|
+
Re,
|
|
950
962
|
"%"
|
|
951
|
-
] }) : /* @__PURE__ */ g(m, { children: [/* @__PURE__ */ h(p, { size: 14 }),
|
|
963
|
+
] }) : /* @__PURE__ */ g(m, { children: [/* @__PURE__ */ h(p, { size: 14 }), A.newPackageUrl ? "Replace zip again" : A.hasExistingZip ? "Replace zip" : "Upload zip"] })
|
|
952
964
|
}),
|
|
953
|
-
|
|
965
|
+
A.newPackageUrl && !T && /* @__PURE__ */ h("span", {
|
|
954
966
|
className: "text-xs text-status-success-text",
|
|
955
967
|
children: "✓ New zip ready"
|
|
956
968
|
}),
|
|
957
|
-
!
|
|
969
|
+
!A.newPackageUrl && A.hasExistingZip && /* @__PURE__ */ h("span", {
|
|
958
970
|
className: "text-xs text-text-secondary",
|
|
959
971
|
children: "Current zip kept"
|
|
960
972
|
})
|
|
961
973
|
]
|
|
962
974
|
}),
|
|
963
|
-
|
|
975
|
+
E && /* @__PURE__ */ h("p", {
|
|
964
976
|
className: "text-xs text-status-error-text",
|
|
965
|
-
children:
|
|
977
|
+
children: E
|
|
966
978
|
})
|
|
967
979
|
]
|
|
968
980
|
}),
|
|
@@ -983,12 +995,12 @@ var Me = () => {
|
|
|
983
995
|
}), /* @__PURE__ */ g("div", {
|
|
984
996
|
className: "flex items-center gap-2",
|
|
985
997
|
children: [
|
|
986
|
-
|
|
998
|
+
We && /* @__PURE__ */ g("span", {
|
|
987
999
|
className: "text-xs text-status-success-text",
|
|
988
|
-
children: ["✓ ",
|
|
1000
|
+
children: ["✓ ", We]
|
|
989
1001
|
}),
|
|
990
1002
|
/* @__PURE__ */ h("input", {
|
|
991
|
-
ref:
|
|
1003
|
+
ref: He,
|
|
992
1004
|
type: "file",
|
|
993
1005
|
accept: ".json,application/json",
|
|
994
1006
|
className: "hidden",
|
|
@@ -996,7 +1008,7 @@ var Me = () => {
|
|
|
996
1008
|
}),
|
|
997
1009
|
/* @__PURE__ */ g("button", {
|
|
998
1010
|
type: "button",
|
|
999
|
-
onClick: () =>
|
|
1011
|
+
onClick: () => He.current?.click(),
|
|
1000
1012
|
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",
|
|
1001
1013
|
children: [/* @__PURE__ */ h(p, { size: 12 }), " Upload manifest.json"]
|
|
1002
1014
|
})
|
|
@@ -1005,9 +1017,9 @@ var Me = () => {
|
|
|
1005
1017
|
}), /* @__PURE__ */ h("textarea", {
|
|
1006
1018
|
rows: 5,
|
|
1007
1019
|
placeholder: "{\n \"manifestVersion\": \"1.0\",\n \"itemType\": \"node\",\n \"identity\": { \"version\": \"1.0.0\", \"displayName\": \"My Node\" }\n}",
|
|
1008
|
-
value:
|
|
1020
|
+
value: A.manifestJson,
|
|
1009
1021
|
onChange: (e) => {
|
|
1010
|
-
|
|
1022
|
+
O(null), j((t) => t && {
|
|
1011
1023
|
...t,
|
|
1012
1024
|
manifestJson: e.target.value
|
|
1013
1025
|
});
|
|
@@ -1030,8 +1042,8 @@ var Me = () => {
|
|
|
1030
1042
|
}), /* @__PURE__ */ h("textarea", {
|
|
1031
1043
|
rows: 10,
|
|
1032
1044
|
placeholder: U ? "{\n \"nodes\": [],\n \"edges\": []\n}" : "{\n \"manifestVersion\": \"1.0\",\n \"identity\": { \"name\": \"My Item\", \"version\": \"1.0.0\" }\n}",
|
|
1033
|
-
value:
|
|
1034
|
-
onChange: (e) =>
|
|
1045
|
+
value: A.manifestJson,
|
|
1046
|
+
onChange: (e) => j((t) => t && {
|
|
1035
1047
|
...t,
|
|
1036
1048
|
manifestJson: e.target.value
|
|
1037
1049
|
}),
|
|
@@ -1040,8 +1052,8 @@ var Me = () => {
|
|
|
1040
1052
|
}),
|
|
1041
1053
|
/* @__PURE__ */ h(i, {
|
|
1042
1054
|
label: v("devportal.releaseNotes", "Release Notes"),
|
|
1043
|
-
value:
|
|
1044
|
-
onChange: (e) =>
|
|
1055
|
+
value: A.releaseNotes,
|
|
1056
|
+
onChange: (e) => j((t) => t && {
|
|
1045
1057
|
...t,
|
|
1046
1058
|
releaseNotes: e
|
|
1047
1059
|
}),
|
|
@@ -1050,8 +1062,8 @@ var Me = () => {
|
|
|
1050
1062
|
}),
|
|
1051
1063
|
/* @__PURE__ */ h(i, {
|
|
1052
1064
|
label: v("devportal.changelog", "Changelog"),
|
|
1053
|
-
value:
|
|
1054
|
-
onChange: (e) =>
|
|
1065
|
+
value: A.changelog,
|
|
1066
|
+
onChange: (e) => j((t) => t && {
|
|
1055
1067
|
...t,
|
|
1056
1068
|
changelog: e
|
|
1057
1069
|
}),
|