@dsh-workbench/core 0.1.2 → 0.1.4
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/README.md +2 -2
- package/client.js +2266 -730
- package/dist/client/client.body.js +2265 -729
- package/dist/client/index.js +2258 -722
- package/dist/host/index.js +790 -2064
- package/dist/types/app/client.d.ts +776 -69
- package/dist/types/app/layouts/market/AddModuleDialog.d.ts +8 -0
- package/dist/types/app/layouts/market/AddModuleForm.d.ts +6 -0
- package/dist/types/app/layouts/market/AddModuleRegistry.d.ts +6 -0
- package/dist/types/app/layouts/market/AddModuleStages.d.ts +14 -0
- package/dist/types/app/layouts/market/SafetyNote.d.ts +4 -0
- package/dist/types/app/layouts/market/__tests__/add-module-mock.test.d.ts +1 -0
- package/dist/types/app/layouts/market/__tests__/add-module-text.test.d.ts +1 -0
- package/dist/types/app/layouts/market/add-module-mock.d.ts +14 -0
- package/dist/types/app/layouts/market/add-module-text.d.ts +31 -0
- package/dist/types/app/layouts/market/panel.d.ts +2 -2
- package/dist/types/app/layouts/market/use-add-module.d.ts +48 -0
- package/dist/types/app/layouts/rightbar/MarketView.d.ts +6 -1
- package/dist/types/app/layouts/rightbar/__tests__/market-installed.test.d.ts +1 -0
- package/dist/types/app/layouts/rightbar/market-mock.d.ts +11 -4
- package/dist/types/app/layouts/rightbar/market-rows.d.ts +25 -5
- package/dist/types/app/units/__tests__/fixture-unit-mock.test.d.ts +1 -0
- package/dist/types/app/units/fixture-unit-mock.d.ts +5 -0
- package/dist/types/app/units/registry.d.ts +2 -1
- package/dist/types/modules/panels/__tests__/market-bundle.test.d.ts +1 -0
- package/dist/types/modules/panels/__tests__/market-dispatch.test.d.ts +1 -0
- package/dist/types/modules/panels/model/handoff.d.ts +1 -1
- package/dist/types/modules/panels/model/market-dependency.d.ts +2 -1
- package/dist/types/modules/panels/model/market-dispatch.d.ts +19 -1
- package/dist/types/modules/panels/model/market.d.ts +39 -0
- package/dist/types/shared/api/bundle-install.d.ts +97 -0
- package/dist/types/shared/api/dsh-plugins.d.ts +11 -0
- package/dist/types/shared/api/dsh-plugins.test.d.ts +1 -0
- package/dist/types/shared/api/host/bundle-manager.d.ts +10 -0
- package/dist/types/shared/api/host/bundle-manager.test.d.ts +1 -0
- package/dist/types/shared/api/host/bundle-routes.d.ts +5 -0
- package/dist/types/shared/api/host/bundle-routes.test.d.ts +1 -0
- package/dist/types/shared/api/host/context-inject.d.ts +1 -1
- package/dist/types/shared/api/host/dsh-plugins.d.ts +5 -0
- package/dist/types/shared/api/host/dsh-plugins.test.d.ts +1 -0
- package/dist/types/shared/api/host/installed-module.d.ts +24 -0
- package/dist/types/shared/api/host/installed-module.test.d.ts +1 -0
- package/dist/types/shared/api/host/mount-units.d.ts +1 -1
- package/dist/types/shared/api/host/probe-libs.d.ts +1 -1
- package/dist/types/shared/components/PanelFoot.d.ts +7 -0
- package/dist/types/shared/components/Tip.d.ts +4 -0
- package/dist/types/shared/hooks/bundle-queries.d.ts +5 -0
- package/docs/OPERATIONS.md +10 -2
- package/package.json +4 -3
- package/dist/types/app/layouts/rightbar/MarketFreshLines.d.ts +0 -5
package/dist/host/index.js
CHANGED
|
@@ -1,47 +1,6 @@
|
|
|
1
1
|
import { createHash, randomUUID } from "node:crypto";
|
|
2
2
|
import fs, { readFileSync } from "node:fs";
|
|
3
3
|
import path, { join } from "node:path";
|
|
4
|
-
//#region \0rolldown/runtime.js
|
|
5
|
-
var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
|
|
6
|
-
var MARKER = new RegExp(`@工作台:([a-z][a-z0-9-]*:[A-Za-z0-9._~%#/-]+)`, "g");
|
|
7
|
-
var TRAILING_PUNCTUATION = /[.,;:!?]+$/;
|
|
8
|
-
function encodeRef(ref) {
|
|
9
|
-
return `${ref.kind}:${ref.parts.join("/")}`;
|
|
10
|
-
}
|
|
11
|
-
function decodeRef(text) {
|
|
12
|
-
const at = text.indexOf(":");
|
|
13
|
-
if (at <= 0 || at === text.length - 1) return void 0;
|
|
14
|
-
const kind = text.slice(0, at);
|
|
15
|
-
if (!/^[a-z][a-z0-9-]*$/.test(kind)) return void 0;
|
|
16
|
-
const parts = text.slice(at + 1).split("/").filter((part) => part !== "");
|
|
17
|
-
if (parts.length === 0) return void 0;
|
|
18
|
-
return {
|
|
19
|
-
kind,
|
|
20
|
-
parts
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
function parseMarkers(text) {
|
|
24
|
-
const seen = /* @__PURE__ */ new Set();
|
|
25
|
-
const refs = [];
|
|
26
|
-
for (const match of String(text ?? "").matchAll(MARKER)) {
|
|
27
|
-
const ref = decodeRef(match[1].replace(TRAILING_PUNCTUATION, ""));
|
|
28
|
-
if (ref === void 0) continue;
|
|
29
|
-
const key = encodeRef(ref);
|
|
30
|
-
if (seen.has(key)) continue;
|
|
31
|
-
seen.add(key);
|
|
32
|
-
refs.push(ref);
|
|
33
|
-
}
|
|
34
|
-
return refs;
|
|
35
|
-
}
|
|
36
|
-
function unitFactScope(unit) {
|
|
37
|
-
return `${unit}*`;
|
|
38
|
-
}
|
|
39
|
-
//#endregion
|
|
40
|
-
//#region ../shared/dist/api/long-task.js
|
|
41
|
-
function runsRouteOf(unit) {
|
|
42
|
-
return `${unit}/runs`;
|
|
43
|
-
}
|
|
44
|
-
//#endregion
|
|
45
4
|
//#region ../shared/dist/config/constants.js
|
|
46
5
|
var PLUGIN_ID = "@dsh-workbench/core";
|
|
47
6
|
var API_PREFIX = "/workbench/api";
|
|
@@ -58,1944 +17,44 @@ var INSTALL_TIMEOUT_MS = 3e5;
|
|
|
58
17
|
var VERSION_CHECK_TIMEOUT_MS = 1e4;
|
|
59
18
|
var PROBE_TTL_MS = 3e4;
|
|
60
19
|
var GIT_TIMEOUT_MS = 1e4;
|
|
20
|
+
var MARKER = new RegExp(`@工作台:([a-z][a-z0-9-]*:[A-Za-z0-9._~%#/-]+)`, "g");
|
|
21
|
+
var TRAILING_PUNCTUATION = /[.,;:!?]+$/;
|
|
22
|
+
function encodeRef(ref) {
|
|
23
|
+
return `${ref.kind}:${ref.parts.join("/")}`;
|
|
24
|
+
}
|
|
25
|
+
function decodeRef(text) {
|
|
26
|
+
const at = text.indexOf(":");
|
|
27
|
+
if (at <= 0 || at === text.length - 1) return void 0;
|
|
28
|
+
const kind = text.slice(0, at);
|
|
29
|
+
if (!/^[a-z][a-z0-9-]*$/.test(kind)) return void 0;
|
|
30
|
+
const parts = text.slice(at + 1).split("/").filter((part) => part !== "");
|
|
31
|
+
if (parts.length === 0) return void 0;
|
|
32
|
+
return {
|
|
33
|
+
kind,
|
|
34
|
+
parts
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function parseMarkers(text) {
|
|
38
|
+
const seen = /* @__PURE__ */ new Set();
|
|
39
|
+
const refs = [];
|
|
40
|
+
for (const match of String(text ?? "").matchAll(MARKER)) {
|
|
41
|
+
const ref = decodeRef(match[1].replace(TRAILING_PUNCTUATION, ""));
|
|
42
|
+
if (ref === void 0) continue;
|
|
43
|
+
const key = encodeRef(ref);
|
|
44
|
+
if (seen.has(key)) continue;
|
|
45
|
+
seen.add(key);
|
|
46
|
+
refs.push(ref);
|
|
47
|
+
}
|
|
48
|
+
return refs;
|
|
49
|
+
}
|
|
50
|
+
function unitFactScope(unit) {
|
|
51
|
+
return `${unit}*`;
|
|
52
|
+
}
|
|
61
53
|
//#endregion
|
|
62
|
-
//#region
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
*
|
|
67
|
-
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
68
|
-
*
|
|
69
|
-
* This source code is licensed under the MIT license found in the
|
|
70
|
-
* LICENSE file in the root directory of this source tree.
|
|
71
|
-
*/
|
|
72
|
-
var require_react_production_min = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
73
|
-
var l = Symbol.for("react.element");
|
|
74
|
-
var n = Symbol.for("react.portal");
|
|
75
|
-
var p = Symbol.for("react.fragment");
|
|
76
|
-
var q = Symbol.for("react.strict_mode");
|
|
77
|
-
var r = Symbol.for("react.profiler");
|
|
78
|
-
var t = Symbol.for("react.provider");
|
|
79
|
-
var u = Symbol.for("react.context");
|
|
80
|
-
var v = Symbol.for("react.forward_ref");
|
|
81
|
-
var w = Symbol.for("react.suspense");
|
|
82
|
-
var x = Symbol.for("react.memo");
|
|
83
|
-
var y = Symbol.for("react.lazy");
|
|
84
|
-
var z = Symbol.iterator;
|
|
85
|
-
function A(a) {
|
|
86
|
-
if (null === a || "object" !== typeof a) return null;
|
|
87
|
-
a = z && a[z] || a["@@iterator"];
|
|
88
|
-
return "function" === typeof a ? a : null;
|
|
89
|
-
}
|
|
90
|
-
var B = {
|
|
91
|
-
isMounted: function() {
|
|
92
|
-
return !1;
|
|
93
|
-
},
|
|
94
|
-
enqueueForceUpdate: function() {},
|
|
95
|
-
enqueueReplaceState: function() {},
|
|
96
|
-
enqueueSetState: function() {}
|
|
97
|
-
};
|
|
98
|
-
var C = Object.assign;
|
|
99
|
-
var D = {};
|
|
100
|
-
function E(a, b, e) {
|
|
101
|
-
this.props = a;
|
|
102
|
-
this.context = b;
|
|
103
|
-
this.refs = D;
|
|
104
|
-
this.updater = e || B;
|
|
105
|
-
}
|
|
106
|
-
E.prototype.isReactComponent = {};
|
|
107
|
-
E.prototype.setState = function(a, b) {
|
|
108
|
-
if ("object" !== typeof a && "function" !== typeof a && null != a) throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");
|
|
109
|
-
this.updater.enqueueSetState(this, a, b, "setState");
|
|
110
|
-
};
|
|
111
|
-
E.prototype.forceUpdate = function(a) {
|
|
112
|
-
this.updater.enqueueForceUpdate(this, a, "forceUpdate");
|
|
113
|
-
};
|
|
114
|
-
function F() {}
|
|
115
|
-
F.prototype = E.prototype;
|
|
116
|
-
function G(a, b, e) {
|
|
117
|
-
this.props = a;
|
|
118
|
-
this.context = b;
|
|
119
|
-
this.refs = D;
|
|
120
|
-
this.updater = e || B;
|
|
121
|
-
}
|
|
122
|
-
var H = G.prototype = new F();
|
|
123
|
-
H.constructor = G;
|
|
124
|
-
C(H, E.prototype);
|
|
125
|
-
H.isPureReactComponent = !0;
|
|
126
|
-
var I = Array.isArray;
|
|
127
|
-
var J = Object.prototype.hasOwnProperty;
|
|
128
|
-
var K = { current: null };
|
|
129
|
-
var L = {
|
|
130
|
-
key: !0,
|
|
131
|
-
ref: !0,
|
|
132
|
-
__self: !0,
|
|
133
|
-
__source: !0
|
|
134
|
-
};
|
|
135
|
-
function M(a, b, e) {
|
|
136
|
-
var d, c = {}, k = null, h = null;
|
|
137
|
-
if (null != b) for (d in void 0 !== b.ref && (h = b.ref), void 0 !== b.key && (k = "" + b.key), b) J.call(b, d) && !L.hasOwnProperty(d) && (c[d] = b[d]);
|
|
138
|
-
var g = arguments.length - 2;
|
|
139
|
-
if (1 === g) c.children = e;
|
|
140
|
-
else if (1 < g) {
|
|
141
|
-
for (var f = Array(g), m = 0; m < g; m++) f[m] = arguments[m + 2];
|
|
142
|
-
c.children = f;
|
|
143
|
-
}
|
|
144
|
-
if (a && a.defaultProps) for (d in g = a.defaultProps, g) void 0 === c[d] && (c[d] = g[d]);
|
|
145
|
-
return {
|
|
146
|
-
$$typeof: l,
|
|
147
|
-
type: a,
|
|
148
|
-
key: k,
|
|
149
|
-
ref: h,
|
|
150
|
-
props: c,
|
|
151
|
-
_owner: K.current
|
|
152
|
-
};
|
|
153
|
-
}
|
|
154
|
-
function N(a, b) {
|
|
155
|
-
return {
|
|
156
|
-
$$typeof: l,
|
|
157
|
-
type: a.type,
|
|
158
|
-
key: b,
|
|
159
|
-
ref: a.ref,
|
|
160
|
-
props: a.props,
|
|
161
|
-
_owner: a._owner
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
function O(a) {
|
|
165
|
-
return "object" === typeof a && null !== a && a.$$typeof === l;
|
|
166
|
-
}
|
|
167
|
-
function escape(a) {
|
|
168
|
-
var b = {
|
|
169
|
-
"=": "=0",
|
|
170
|
-
":": "=2"
|
|
171
|
-
};
|
|
172
|
-
return "$" + a.replace(/[=:]/g, function(a) {
|
|
173
|
-
return b[a];
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
var P = /\/+/g;
|
|
177
|
-
function Q(a, b) {
|
|
178
|
-
return "object" === typeof a && null !== a && null != a.key ? escape("" + a.key) : b.toString(36);
|
|
179
|
-
}
|
|
180
|
-
function R(a, b, e, d, c) {
|
|
181
|
-
var k = typeof a;
|
|
182
|
-
if ("undefined" === k || "boolean" === k) a = null;
|
|
183
|
-
var h = !1;
|
|
184
|
-
if (null === a) h = !0;
|
|
185
|
-
else switch (k) {
|
|
186
|
-
case "string":
|
|
187
|
-
case "number":
|
|
188
|
-
h = !0;
|
|
189
|
-
break;
|
|
190
|
-
case "object": switch (a.$$typeof) {
|
|
191
|
-
case l:
|
|
192
|
-
case n: h = !0;
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
if (h) return h = a, c = c(h), a = "" === d ? "." + Q(h, 0) : d, I(c) ? (e = "", null != a && (e = a.replace(P, "$&/") + "/"), R(c, b, e, "", function(a) {
|
|
196
|
-
return a;
|
|
197
|
-
})) : null != c && (O(c) && (c = N(c, e + (!c.key || h && h.key === c.key ? "" : ("" + c.key).replace(P, "$&/") + "/") + a)), b.push(c)), 1;
|
|
198
|
-
h = 0;
|
|
199
|
-
d = "" === d ? "." : d + ":";
|
|
200
|
-
if (I(a)) for (var g = 0; g < a.length; g++) {
|
|
201
|
-
k = a[g];
|
|
202
|
-
var f = d + Q(k, g);
|
|
203
|
-
h += R(k, b, e, f, c);
|
|
204
|
-
}
|
|
205
|
-
else if (f = A(a), "function" === typeof f) for (a = f.call(a), g = 0; !(k = a.next()).done;) k = k.value, f = d + Q(k, g++), h += R(k, b, e, f, c);
|
|
206
|
-
else if ("object" === k) throw b = String(a), Error("Objects are not valid as a React child (found: " + ("[object Object]" === b ? "object with keys {" + Object.keys(a).join(", ") + "}" : b) + "). If you meant to render a collection of children, use an array instead.");
|
|
207
|
-
return h;
|
|
208
|
-
}
|
|
209
|
-
function S(a, b, e) {
|
|
210
|
-
if (null == a) return a;
|
|
211
|
-
var d = [], c = 0;
|
|
212
|
-
R(a, d, "", "", function(a) {
|
|
213
|
-
return b.call(e, a, c++);
|
|
214
|
-
});
|
|
215
|
-
return d;
|
|
216
|
-
}
|
|
217
|
-
function T(a) {
|
|
218
|
-
if (-1 === a._status) {
|
|
219
|
-
var b = a._result;
|
|
220
|
-
b = b();
|
|
221
|
-
b.then(function(b) {
|
|
222
|
-
if (0 === a._status || -1 === a._status) a._status = 1, a._result = b;
|
|
223
|
-
}, function(b) {
|
|
224
|
-
if (0 === a._status || -1 === a._status) a._status = 2, a._result = b;
|
|
225
|
-
});
|
|
226
|
-
-1 === a._status && (a._status = 0, a._result = b);
|
|
227
|
-
}
|
|
228
|
-
if (1 === a._status) return a._result.default;
|
|
229
|
-
throw a._result;
|
|
230
|
-
}
|
|
231
|
-
var U = { current: null };
|
|
232
|
-
var V = { transition: null };
|
|
233
|
-
var W = {
|
|
234
|
-
ReactCurrentDispatcher: U,
|
|
235
|
-
ReactCurrentBatchConfig: V,
|
|
236
|
-
ReactCurrentOwner: K
|
|
237
|
-
};
|
|
238
|
-
function X() {
|
|
239
|
-
throw Error("act(...) is not supported in production builds of React.");
|
|
240
|
-
}
|
|
241
|
-
exports.Children = {
|
|
242
|
-
map: S,
|
|
243
|
-
forEach: function(a, b, e) {
|
|
244
|
-
S(a, function() {
|
|
245
|
-
b.apply(this, arguments);
|
|
246
|
-
}, e);
|
|
247
|
-
},
|
|
248
|
-
count: function(a) {
|
|
249
|
-
var b = 0;
|
|
250
|
-
S(a, function() {
|
|
251
|
-
b++;
|
|
252
|
-
});
|
|
253
|
-
return b;
|
|
254
|
-
},
|
|
255
|
-
toArray: function(a) {
|
|
256
|
-
return S(a, function(a) {
|
|
257
|
-
return a;
|
|
258
|
-
}) || [];
|
|
259
|
-
},
|
|
260
|
-
only: function(a) {
|
|
261
|
-
if (!O(a)) throw Error("React.Children.only expected to receive a single React element child.");
|
|
262
|
-
return a;
|
|
263
|
-
}
|
|
264
|
-
};
|
|
265
|
-
exports.Component = E;
|
|
266
|
-
exports.Fragment = p;
|
|
267
|
-
exports.Profiler = r;
|
|
268
|
-
exports.PureComponent = G;
|
|
269
|
-
exports.StrictMode = q;
|
|
270
|
-
exports.Suspense = w;
|
|
271
|
-
exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = W;
|
|
272
|
-
exports.act = X;
|
|
273
|
-
exports.cloneElement = function(a, b, e) {
|
|
274
|
-
if (null === a || void 0 === a) throw Error("React.cloneElement(...): The argument must be a React element, but you passed " + a + ".");
|
|
275
|
-
var d = C({}, a.props), c = a.key, k = a.ref, h = a._owner;
|
|
276
|
-
if (null != b) {
|
|
277
|
-
void 0 !== b.ref && (k = b.ref, h = K.current);
|
|
278
|
-
void 0 !== b.key && (c = "" + b.key);
|
|
279
|
-
if (a.type && a.type.defaultProps) var g = a.type.defaultProps;
|
|
280
|
-
for (f in b) J.call(b, f) && !L.hasOwnProperty(f) && (d[f] = void 0 === b[f] && void 0 !== g ? g[f] : b[f]);
|
|
281
|
-
}
|
|
282
|
-
var f = arguments.length - 2;
|
|
283
|
-
if (1 === f) d.children = e;
|
|
284
|
-
else if (1 < f) {
|
|
285
|
-
g = Array(f);
|
|
286
|
-
for (var m = 0; m < f; m++) g[m] = arguments[m + 2];
|
|
287
|
-
d.children = g;
|
|
288
|
-
}
|
|
289
|
-
return {
|
|
290
|
-
$$typeof: l,
|
|
291
|
-
type: a.type,
|
|
292
|
-
key: c,
|
|
293
|
-
ref: k,
|
|
294
|
-
props: d,
|
|
295
|
-
_owner: h
|
|
296
|
-
};
|
|
297
|
-
};
|
|
298
|
-
exports.createContext = function(a) {
|
|
299
|
-
a = {
|
|
300
|
-
$$typeof: u,
|
|
301
|
-
_currentValue: a,
|
|
302
|
-
_currentValue2: a,
|
|
303
|
-
_threadCount: 0,
|
|
304
|
-
Provider: null,
|
|
305
|
-
Consumer: null,
|
|
306
|
-
_defaultValue: null,
|
|
307
|
-
_globalName: null
|
|
308
|
-
};
|
|
309
|
-
a.Provider = {
|
|
310
|
-
$$typeof: t,
|
|
311
|
-
_context: a
|
|
312
|
-
};
|
|
313
|
-
return a.Consumer = a;
|
|
314
|
-
};
|
|
315
|
-
exports.createElement = M;
|
|
316
|
-
exports.createFactory = function(a) {
|
|
317
|
-
var b = M.bind(null, a);
|
|
318
|
-
b.type = a;
|
|
319
|
-
return b;
|
|
320
|
-
};
|
|
321
|
-
exports.createRef = function() {
|
|
322
|
-
return { current: null };
|
|
323
|
-
};
|
|
324
|
-
exports.forwardRef = function(a) {
|
|
325
|
-
return {
|
|
326
|
-
$$typeof: v,
|
|
327
|
-
render: a
|
|
328
|
-
};
|
|
329
|
-
};
|
|
330
|
-
exports.isValidElement = O;
|
|
331
|
-
exports.lazy = function(a) {
|
|
332
|
-
return {
|
|
333
|
-
$$typeof: y,
|
|
334
|
-
_payload: {
|
|
335
|
-
_status: -1,
|
|
336
|
-
_result: a
|
|
337
|
-
},
|
|
338
|
-
_init: T
|
|
339
|
-
};
|
|
340
|
-
};
|
|
341
|
-
exports.memo = function(a, b) {
|
|
342
|
-
return {
|
|
343
|
-
$$typeof: x,
|
|
344
|
-
type: a,
|
|
345
|
-
compare: void 0 === b ? null : b
|
|
346
|
-
};
|
|
347
|
-
};
|
|
348
|
-
exports.startTransition = function(a) {
|
|
349
|
-
var b = V.transition;
|
|
350
|
-
V.transition = {};
|
|
351
|
-
try {
|
|
352
|
-
a();
|
|
353
|
-
} finally {
|
|
354
|
-
V.transition = b;
|
|
355
|
-
}
|
|
356
|
-
};
|
|
357
|
-
exports.unstable_act = X;
|
|
358
|
-
exports.useCallback = function(a, b) {
|
|
359
|
-
return U.current.useCallback(a, b);
|
|
360
|
-
};
|
|
361
|
-
exports.useContext = function(a) {
|
|
362
|
-
return U.current.useContext(a);
|
|
363
|
-
};
|
|
364
|
-
exports.useDebugValue = function() {};
|
|
365
|
-
exports.useDeferredValue = function(a) {
|
|
366
|
-
return U.current.useDeferredValue(a);
|
|
367
|
-
};
|
|
368
|
-
exports.useEffect = function(a, b) {
|
|
369
|
-
return U.current.useEffect(a, b);
|
|
370
|
-
};
|
|
371
|
-
exports.useId = function() {
|
|
372
|
-
return U.current.useId();
|
|
373
|
-
};
|
|
374
|
-
exports.useImperativeHandle = function(a, b, e) {
|
|
375
|
-
return U.current.useImperativeHandle(a, b, e);
|
|
376
|
-
};
|
|
377
|
-
exports.useInsertionEffect = function(a, b) {
|
|
378
|
-
return U.current.useInsertionEffect(a, b);
|
|
379
|
-
};
|
|
380
|
-
exports.useLayoutEffect = function(a, b) {
|
|
381
|
-
return U.current.useLayoutEffect(a, b);
|
|
382
|
-
};
|
|
383
|
-
exports.useMemo = function(a, b) {
|
|
384
|
-
return U.current.useMemo(a, b);
|
|
385
|
-
};
|
|
386
|
-
exports.useReducer = function(a, b, e) {
|
|
387
|
-
return U.current.useReducer(a, b, e);
|
|
388
|
-
};
|
|
389
|
-
exports.useRef = function(a) {
|
|
390
|
-
return U.current.useRef(a);
|
|
391
|
-
};
|
|
392
|
-
exports.useState = function(a) {
|
|
393
|
-
return U.current.useState(a);
|
|
394
|
-
};
|
|
395
|
-
exports.useSyncExternalStore = function(a, b, e) {
|
|
396
|
-
return U.current.useSyncExternalStore(a, b, e);
|
|
397
|
-
};
|
|
398
|
-
exports.useTransition = function() {
|
|
399
|
-
return U.current.useTransition();
|
|
400
|
-
};
|
|
401
|
-
exports.version = "18.3.1";
|
|
402
|
-
}));
|
|
403
|
-
//#endregion
|
|
404
|
-
//#region ../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.development.js
|
|
405
|
-
/**
|
|
406
|
-
* @license React
|
|
407
|
-
* react.development.js
|
|
408
|
-
*
|
|
409
|
-
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
410
|
-
*
|
|
411
|
-
* This source code is licensed under the MIT license found in the
|
|
412
|
-
* LICENSE file in the root directory of this source tree.
|
|
413
|
-
*/
|
|
414
|
-
var require_react_development = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
415
|
-
if (process.env.NODE_ENV !== "production") (function() {
|
|
416
|
-
"use strict";
|
|
417
|
-
if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === "function") __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(/* @__PURE__ */ new Error());
|
|
418
|
-
var ReactVersion = "18.3.1";
|
|
419
|
-
var REACT_ELEMENT_TYPE = Symbol.for("react.element");
|
|
420
|
-
var REACT_PORTAL_TYPE = Symbol.for("react.portal");
|
|
421
|
-
var REACT_FRAGMENT_TYPE = Symbol.for("react.fragment");
|
|
422
|
-
var REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode");
|
|
423
|
-
var REACT_PROFILER_TYPE = Symbol.for("react.profiler");
|
|
424
|
-
var REACT_PROVIDER_TYPE = Symbol.for("react.provider");
|
|
425
|
-
var REACT_CONTEXT_TYPE = Symbol.for("react.context");
|
|
426
|
-
var REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref");
|
|
427
|
-
var REACT_SUSPENSE_TYPE = Symbol.for("react.suspense");
|
|
428
|
-
var REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list");
|
|
429
|
-
var REACT_MEMO_TYPE = Symbol.for("react.memo");
|
|
430
|
-
var REACT_LAZY_TYPE = Symbol.for("react.lazy");
|
|
431
|
-
var REACT_OFFSCREEN_TYPE = Symbol.for("react.offscreen");
|
|
432
|
-
var MAYBE_ITERATOR_SYMBOL = Symbol.iterator;
|
|
433
|
-
var FAUX_ITERATOR_SYMBOL = "@@iterator";
|
|
434
|
-
function getIteratorFn(maybeIterable) {
|
|
435
|
-
if (maybeIterable === null || typeof maybeIterable !== "object") return null;
|
|
436
|
-
var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];
|
|
437
|
-
if (typeof maybeIterator === "function") return maybeIterator;
|
|
438
|
-
return null;
|
|
439
|
-
}
|
|
440
|
-
/**
|
|
441
|
-
* Keeps track of the current dispatcher.
|
|
442
|
-
*/
|
|
443
|
-
var ReactCurrentDispatcher = {
|
|
444
|
-
/**
|
|
445
|
-
* @internal
|
|
446
|
-
* @type {ReactComponent}
|
|
447
|
-
*/
|
|
448
|
-
current: null };
|
|
449
|
-
/**
|
|
450
|
-
* Keeps track of the current batch's configuration such as how long an update
|
|
451
|
-
* should suspend for if it needs to.
|
|
452
|
-
*/
|
|
453
|
-
var ReactCurrentBatchConfig = { transition: null };
|
|
454
|
-
var ReactCurrentActQueue = {
|
|
455
|
-
current: null,
|
|
456
|
-
isBatchingLegacy: false,
|
|
457
|
-
didScheduleLegacyUpdate: false
|
|
458
|
-
};
|
|
459
|
-
/**
|
|
460
|
-
* Keeps track of the current owner.
|
|
461
|
-
*
|
|
462
|
-
* The current owner is the component who should own any components that are
|
|
463
|
-
* currently being constructed.
|
|
464
|
-
*/
|
|
465
|
-
var ReactCurrentOwner = {
|
|
466
|
-
/**
|
|
467
|
-
* @internal
|
|
468
|
-
* @type {ReactComponent}
|
|
469
|
-
*/
|
|
470
|
-
current: null };
|
|
471
|
-
var ReactDebugCurrentFrame = {};
|
|
472
|
-
var currentExtraStackFrame = null;
|
|
473
|
-
function setExtraStackFrame(stack) {
|
|
474
|
-
currentExtraStackFrame = stack;
|
|
475
|
-
}
|
|
476
|
-
ReactDebugCurrentFrame.setExtraStackFrame = function(stack) {
|
|
477
|
-
currentExtraStackFrame = stack;
|
|
478
|
-
};
|
|
479
|
-
ReactDebugCurrentFrame.getCurrentStack = null;
|
|
480
|
-
ReactDebugCurrentFrame.getStackAddendum = function() {
|
|
481
|
-
var stack = "";
|
|
482
|
-
if (currentExtraStackFrame) stack += currentExtraStackFrame;
|
|
483
|
-
var impl = ReactDebugCurrentFrame.getCurrentStack;
|
|
484
|
-
if (impl) stack += impl() || "";
|
|
485
|
-
return stack;
|
|
486
|
-
};
|
|
487
|
-
var enableScopeAPI = false;
|
|
488
|
-
var enableCacheElement = false;
|
|
489
|
-
var enableTransitionTracing = false;
|
|
490
|
-
var enableLegacyHidden = false;
|
|
491
|
-
var enableDebugTracing = false;
|
|
492
|
-
var ReactSharedInternals = {
|
|
493
|
-
ReactCurrentDispatcher,
|
|
494
|
-
ReactCurrentBatchConfig,
|
|
495
|
-
ReactCurrentOwner
|
|
496
|
-
};
|
|
497
|
-
ReactSharedInternals.ReactDebugCurrentFrame = ReactDebugCurrentFrame;
|
|
498
|
-
ReactSharedInternals.ReactCurrentActQueue = ReactCurrentActQueue;
|
|
499
|
-
function warn(format) {
|
|
500
|
-
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) args[_key - 1] = arguments[_key];
|
|
501
|
-
printWarning("warn", format, args);
|
|
502
|
-
}
|
|
503
|
-
function error(format) {
|
|
504
|
-
for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) args[_key2 - 1] = arguments[_key2];
|
|
505
|
-
printWarning("error", format, args);
|
|
506
|
-
}
|
|
507
|
-
function printWarning(level, format, args) {
|
|
508
|
-
var stack = ReactSharedInternals.ReactDebugCurrentFrame.getStackAddendum();
|
|
509
|
-
if (stack !== "") {
|
|
510
|
-
format += "%s";
|
|
511
|
-
args = args.concat([stack]);
|
|
512
|
-
}
|
|
513
|
-
var argsWithFormat = args.map(function(item) {
|
|
514
|
-
return String(item);
|
|
515
|
-
});
|
|
516
|
-
argsWithFormat.unshift("Warning: " + format);
|
|
517
|
-
Function.prototype.apply.call(console[level], console, argsWithFormat);
|
|
518
|
-
}
|
|
519
|
-
var didWarnStateUpdateForUnmountedComponent = {};
|
|
520
|
-
function warnNoop(publicInstance, callerName) {
|
|
521
|
-
var _constructor = publicInstance.constructor;
|
|
522
|
-
var componentName = _constructor && (_constructor.displayName || _constructor.name) || "ReactClass";
|
|
523
|
-
var warningKey = componentName + "." + callerName;
|
|
524
|
-
if (didWarnStateUpdateForUnmountedComponent[warningKey]) return;
|
|
525
|
-
error("Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.", callerName, componentName);
|
|
526
|
-
didWarnStateUpdateForUnmountedComponent[warningKey] = true;
|
|
527
|
-
}
|
|
528
|
-
/**
|
|
529
|
-
* This is the abstract API for an update queue.
|
|
530
|
-
*/
|
|
531
|
-
var ReactNoopUpdateQueue = {
|
|
532
|
-
/**
|
|
533
|
-
* Checks whether or not this composite component is mounted.
|
|
534
|
-
* @param {ReactClass} publicInstance The instance we want to test.
|
|
535
|
-
* @return {boolean} True if mounted, false otherwise.
|
|
536
|
-
* @protected
|
|
537
|
-
* @final
|
|
538
|
-
*/
|
|
539
|
-
isMounted: function(publicInstance) {
|
|
540
|
-
return false;
|
|
541
|
-
},
|
|
542
|
-
/**
|
|
543
|
-
* Forces an update. This should only be invoked when it is known with
|
|
544
|
-
* certainty that we are **not** in a DOM transaction.
|
|
545
|
-
*
|
|
546
|
-
* You may want to call this when you know that some deeper aspect of the
|
|
547
|
-
* component's state has changed but `setState` was not called.
|
|
548
|
-
*
|
|
549
|
-
* This will not invoke `shouldComponentUpdate`, but it will invoke
|
|
550
|
-
* `componentWillUpdate` and `componentDidUpdate`.
|
|
551
|
-
*
|
|
552
|
-
* @param {ReactClass} publicInstance The instance that should rerender.
|
|
553
|
-
* @param {?function} callback Called after component is updated.
|
|
554
|
-
* @param {?string} callerName name of the calling function in the public API.
|
|
555
|
-
* @internal
|
|
556
|
-
*/
|
|
557
|
-
enqueueForceUpdate: function(publicInstance, callback, callerName) {
|
|
558
|
-
warnNoop(publicInstance, "forceUpdate");
|
|
559
|
-
},
|
|
560
|
-
/**
|
|
561
|
-
* Replaces all of the state. Always use this or `setState` to mutate state.
|
|
562
|
-
* You should treat `this.state` as immutable.
|
|
563
|
-
*
|
|
564
|
-
* There is no guarantee that `this.state` will be immediately updated, so
|
|
565
|
-
* accessing `this.state` after calling this method may return the old value.
|
|
566
|
-
*
|
|
567
|
-
* @param {ReactClass} publicInstance The instance that should rerender.
|
|
568
|
-
* @param {object} completeState Next state.
|
|
569
|
-
* @param {?function} callback Called after component is updated.
|
|
570
|
-
* @param {?string} callerName name of the calling function in the public API.
|
|
571
|
-
* @internal
|
|
572
|
-
*/
|
|
573
|
-
enqueueReplaceState: function(publicInstance, completeState, callback, callerName) {
|
|
574
|
-
warnNoop(publicInstance, "replaceState");
|
|
575
|
-
},
|
|
576
|
-
/**
|
|
577
|
-
* Sets a subset of the state. This only exists because _pendingState is
|
|
578
|
-
* internal. This provides a merging strategy that is not available to deep
|
|
579
|
-
* properties which is confusing. TODO: Expose pendingState or don't use it
|
|
580
|
-
* during the merge.
|
|
581
|
-
*
|
|
582
|
-
* @param {ReactClass} publicInstance The instance that should rerender.
|
|
583
|
-
* @param {object} partialState Next partial state to be merged with state.
|
|
584
|
-
* @param {?function} callback Called after component is updated.
|
|
585
|
-
* @param {?string} Name of the calling function in the public API.
|
|
586
|
-
* @internal
|
|
587
|
-
*/
|
|
588
|
-
enqueueSetState: function(publicInstance, partialState, callback, callerName) {
|
|
589
|
-
warnNoop(publicInstance, "setState");
|
|
590
|
-
}
|
|
591
|
-
};
|
|
592
|
-
var assign = Object.assign;
|
|
593
|
-
var emptyObject = {};
|
|
594
|
-
Object.freeze(emptyObject);
|
|
595
|
-
/**
|
|
596
|
-
* Base class helpers for the updating state of a component.
|
|
597
|
-
*/
|
|
598
|
-
function Component(props, context, updater) {
|
|
599
|
-
this.props = props;
|
|
600
|
-
this.context = context;
|
|
601
|
-
this.refs = emptyObject;
|
|
602
|
-
this.updater = updater || ReactNoopUpdateQueue;
|
|
603
|
-
}
|
|
604
|
-
Component.prototype.isReactComponent = {};
|
|
605
|
-
/**
|
|
606
|
-
* Sets a subset of the state. Always use this to mutate
|
|
607
|
-
* state. You should treat `this.state` as immutable.
|
|
608
|
-
*
|
|
609
|
-
* There is no guarantee that `this.state` will be immediately updated, so
|
|
610
|
-
* accessing `this.state` after calling this method may return the old value.
|
|
611
|
-
*
|
|
612
|
-
* There is no guarantee that calls to `setState` will run synchronously,
|
|
613
|
-
* as they may eventually be batched together. You can provide an optional
|
|
614
|
-
* callback that will be executed when the call to setState is actually
|
|
615
|
-
* completed.
|
|
616
|
-
*
|
|
617
|
-
* When a function is provided to setState, it will be called at some point in
|
|
618
|
-
* the future (not synchronously). It will be called with the up to date
|
|
619
|
-
* component arguments (state, props, context). These values can be different
|
|
620
|
-
* from this.* because your function may be called after receiveProps but before
|
|
621
|
-
* shouldComponentUpdate, and this new state, props, and context will not yet be
|
|
622
|
-
* assigned to this.
|
|
623
|
-
*
|
|
624
|
-
* @param {object|function} partialState Next partial state or function to
|
|
625
|
-
* produce next partial state to be merged with current state.
|
|
626
|
-
* @param {?function} callback Called after state is updated.
|
|
627
|
-
* @final
|
|
628
|
-
* @protected
|
|
629
|
-
*/
|
|
630
|
-
Component.prototype.setState = function(partialState, callback) {
|
|
631
|
-
if (typeof partialState !== "object" && typeof partialState !== "function" && partialState != null) throw new Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");
|
|
632
|
-
this.updater.enqueueSetState(this, partialState, callback, "setState");
|
|
633
|
-
};
|
|
634
|
-
/**
|
|
635
|
-
* Forces an update. This should only be invoked when it is known with
|
|
636
|
-
* certainty that we are **not** in a DOM transaction.
|
|
637
|
-
*
|
|
638
|
-
* You may want to call this when you know that some deeper aspect of the
|
|
639
|
-
* component's state has changed but `setState` was not called.
|
|
640
|
-
*
|
|
641
|
-
* This will not invoke `shouldComponentUpdate`, but it will invoke
|
|
642
|
-
* `componentWillUpdate` and `componentDidUpdate`.
|
|
643
|
-
*
|
|
644
|
-
* @param {?function} callback Called after update is complete.
|
|
645
|
-
* @final
|
|
646
|
-
* @protected
|
|
647
|
-
*/
|
|
648
|
-
Component.prototype.forceUpdate = function(callback) {
|
|
649
|
-
this.updater.enqueueForceUpdate(this, callback, "forceUpdate");
|
|
650
|
-
};
|
|
651
|
-
var deprecatedAPIs = {
|
|
652
|
-
isMounted: ["isMounted", "Instead, make sure to clean up subscriptions and pending requests in componentWillUnmount to prevent memory leaks."],
|
|
653
|
-
replaceState: ["replaceState", "Refactor your code to use setState instead (see https://github.com/facebook/react/issues/3236)."]
|
|
654
|
-
};
|
|
655
|
-
var defineDeprecationWarning = function(methodName, info) {
|
|
656
|
-
Object.defineProperty(Component.prototype, methodName, { get: function() {
|
|
657
|
-
warn("%s(...) is deprecated in plain JavaScript React classes. %s", info[0], info[1]);
|
|
658
|
-
} });
|
|
659
|
-
};
|
|
660
|
-
for (var fnName in deprecatedAPIs) if (deprecatedAPIs.hasOwnProperty(fnName)) defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);
|
|
661
|
-
function ComponentDummy() {}
|
|
662
|
-
ComponentDummy.prototype = Component.prototype;
|
|
663
|
-
/**
|
|
664
|
-
* Convenience component with default shallow equality check for sCU.
|
|
665
|
-
*/
|
|
666
|
-
function PureComponent(props, context, updater) {
|
|
667
|
-
this.props = props;
|
|
668
|
-
this.context = context;
|
|
669
|
-
this.refs = emptyObject;
|
|
670
|
-
this.updater = updater || ReactNoopUpdateQueue;
|
|
671
|
-
}
|
|
672
|
-
var pureComponentPrototype = PureComponent.prototype = new ComponentDummy();
|
|
673
|
-
pureComponentPrototype.constructor = PureComponent;
|
|
674
|
-
assign(pureComponentPrototype, Component.prototype);
|
|
675
|
-
pureComponentPrototype.isPureReactComponent = true;
|
|
676
|
-
function createRef() {
|
|
677
|
-
var refObject = { current: null };
|
|
678
|
-
Object.seal(refObject);
|
|
679
|
-
return refObject;
|
|
680
|
-
}
|
|
681
|
-
var isArrayImpl = Array.isArray;
|
|
682
|
-
function isArray(a) {
|
|
683
|
-
return isArrayImpl(a);
|
|
684
|
-
}
|
|
685
|
-
function typeName(value) {
|
|
686
|
-
return typeof Symbol === "function" && Symbol.toStringTag && value[Symbol.toStringTag] || value.constructor.name || "Object";
|
|
687
|
-
}
|
|
688
|
-
function willCoercionThrow(value) {
|
|
689
|
-
try {
|
|
690
|
-
testStringCoercion(value);
|
|
691
|
-
return false;
|
|
692
|
-
} catch (e) {
|
|
693
|
-
return true;
|
|
694
|
-
}
|
|
695
|
-
}
|
|
696
|
-
function testStringCoercion(value) {
|
|
697
|
-
return "" + value;
|
|
698
|
-
}
|
|
699
|
-
function checkKeyStringCoercion(value) {
|
|
700
|
-
if (willCoercionThrow(value)) {
|
|
701
|
-
error("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.", typeName(value));
|
|
702
|
-
return testStringCoercion(value);
|
|
703
|
-
}
|
|
704
|
-
}
|
|
705
|
-
function getWrappedName(outerType, innerType, wrapperName) {
|
|
706
|
-
var displayName = outerType.displayName;
|
|
707
|
-
if (displayName) return displayName;
|
|
708
|
-
var functionName = innerType.displayName || innerType.name || "";
|
|
709
|
-
return functionName !== "" ? wrapperName + "(" + functionName + ")" : wrapperName;
|
|
710
|
-
}
|
|
711
|
-
function getContextName(type) {
|
|
712
|
-
return type.displayName || "Context";
|
|
713
|
-
}
|
|
714
|
-
function getComponentNameFromType(type) {
|
|
715
|
-
if (type == null) return null;
|
|
716
|
-
if (typeof type.tag === "number") error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.");
|
|
717
|
-
if (typeof type === "function") return type.displayName || type.name || null;
|
|
718
|
-
if (typeof type === "string") return type;
|
|
719
|
-
switch (type) {
|
|
720
|
-
case REACT_FRAGMENT_TYPE: return "Fragment";
|
|
721
|
-
case REACT_PORTAL_TYPE: return "Portal";
|
|
722
|
-
case REACT_PROFILER_TYPE: return "Profiler";
|
|
723
|
-
case REACT_STRICT_MODE_TYPE: return "StrictMode";
|
|
724
|
-
case REACT_SUSPENSE_TYPE: return "Suspense";
|
|
725
|
-
case REACT_SUSPENSE_LIST_TYPE: return "SuspenseList";
|
|
726
|
-
}
|
|
727
|
-
if (typeof type === "object") switch (type.$$typeof) {
|
|
728
|
-
case REACT_CONTEXT_TYPE: return getContextName(type) + ".Consumer";
|
|
729
|
-
case REACT_PROVIDER_TYPE: return getContextName(type._context) + ".Provider";
|
|
730
|
-
case REACT_FORWARD_REF_TYPE: return getWrappedName(type, type.render, "ForwardRef");
|
|
731
|
-
case REACT_MEMO_TYPE:
|
|
732
|
-
var outerName = type.displayName || null;
|
|
733
|
-
if (outerName !== null) return outerName;
|
|
734
|
-
return getComponentNameFromType(type.type) || "Memo";
|
|
735
|
-
case REACT_LAZY_TYPE:
|
|
736
|
-
var lazyComponent = type;
|
|
737
|
-
var payload = lazyComponent._payload;
|
|
738
|
-
var init = lazyComponent._init;
|
|
739
|
-
try {
|
|
740
|
-
return getComponentNameFromType(init(payload));
|
|
741
|
-
} catch (x) {
|
|
742
|
-
return null;
|
|
743
|
-
}
|
|
744
|
-
}
|
|
745
|
-
return null;
|
|
746
|
-
}
|
|
747
|
-
var hasOwnProperty = Object.prototype.hasOwnProperty;
|
|
748
|
-
var RESERVED_PROPS = {
|
|
749
|
-
key: true,
|
|
750
|
-
ref: true,
|
|
751
|
-
__self: true,
|
|
752
|
-
__source: true
|
|
753
|
-
};
|
|
754
|
-
var specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs = {};
|
|
755
|
-
function hasValidRef(config) {
|
|
756
|
-
if (hasOwnProperty.call(config, "ref")) {
|
|
757
|
-
var getter = Object.getOwnPropertyDescriptor(config, "ref").get;
|
|
758
|
-
if (getter && getter.isReactWarning) return false;
|
|
759
|
-
}
|
|
760
|
-
return config.ref !== void 0;
|
|
761
|
-
}
|
|
762
|
-
function hasValidKey(config) {
|
|
763
|
-
if (hasOwnProperty.call(config, "key")) {
|
|
764
|
-
var getter = Object.getOwnPropertyDescriptor(config, "key").get;
|
|
765
|
-
if (getter && getter.isReactWarning) return false;
|
|
766
|
-
}
|
|
767
|
-
return config.key !== void 0;
|
|
768
|
-
}
|
|
769
|
-
function defineKeyPropWarningGetter(props, displayName) {
|
|
770
|
-
var warnAboutAccessingKey = function() {
|
|
771
|
-
if (!specialPropKeyWarningShown) {
|
|
772
|
-
specialPropKeyWarningShown = true;
|
|
773
|
-
error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", displayName);
|
|
774
|
-
}
|
|
775
|
-
};
|
|
776
|
-
warnAboutAccessingKey.isReactWarning = true;
|
|
777
|
-
Object.defineProperty(props, "key", {
|
|
778
|
-
get: warnAboutAccessingKey,
|
|
779
|
-
configurable: true
|
|
780
|
-
});
|
|
781
|
-
}
|
|
782
|
-
function defineRefPropWarningGetter(props, displayName) {
|
|
783
|
-
var warnAboutAccessingRef = function() {
|
|
784
|
-
if (!specialPropRefWarningShown) {
|
|
785
|
-
specialPropRefWarningShown = true;
|
|
786
|
-
error("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", displayName);
|
|
787
|
-
}
|
|
788
|
-
};
|
|
789
|
-
warnAboutAccessingRef.isReactWarning = true;
|
|
790
|
-
Object.defineProperty(props, "ref", {
|
|
791
|
-
get: warnAboutAccessingRef,
|
|
792
|
-
configurable: true
|
|
793
|
-
});
|
|
794
|
-
}
|
|
795
|
-
function warnIfStringRefCannotBeAutoConverted(config) {
|
|
796
|
-
if (typeof config.ref === "string" && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) {
|
|
797
|
-
var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);
|
|
798
|
-
if (!didWarnAboutStringRefs[componentName]) {
|
|
799
|
-
error("Component \"%s\" contains the string ref \"%s\". Support for string refs will be removed in a future major release. This case cannot be automatically converted to an arrow function. We ask you to manually fix this case by using useRef() or createRef() instead. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-string-ref", componentName, config.ref);
|
|
800
|
-
didWarnAboutStringRefs[componentName] = true;
|
|
801
|
-
}
|
|
802
|
-
}
|
|
803
|
-
}
|
|
804
|
-
/**
|
|
805
|
-
* Factory method to create a new React element. This no longer adheres to
|
|
806
|
-
* the class pattern, so do not use new to call it. Also, instanceof check
|
|
807
|
-
* will not work. Instead test $$typeof field against Symbol.for('react.element') to check
|
|
808
|
-
* if something is a React Element.
|
|
809
|
-
*
|
|
810
|
-
* @param {*} type
|
|
811
|
-
* @param {*} props
|
|
812
|
-
* @param {*} key
|
|
813
|
-
* @param {string|object} ref
|
|
814
|
-
* @param {*} owner
|
|
815
|
-
* @param {*} self A *temporary* helper to detect places where `this` is
|
|
816
|
-
* different from the `owner` when React.createElement is called, so that we
|
|
817
|
-
* can warn. We want to get rid of owner and replace string `ref`s with arrow
|
|
818
|
-
* functions, and as long as `this` and owner are the same, there will be no
|
|
819
|
-
* change in behavior.
|
|
820
|
-
* @param {*} source An annotation object (added by a transpiler or otherwise)
|
|
821
|
-
* indicating filename, line number, and/or other information.
|
|
822
|
-
* @internal
|
|
823
|
-
*/
|
|
824
|
-
var ReactElement = function(type, key, ref, self, source, owner, props) {
|
|
825
|
-
var element = {
|
|
826
|
-
$$typeof: REACT_ELEMENT_TYPE,
|
|
827
|
-
type,
|
|
828
|
-
key,
|
|
829
|
-
ref,
|
|
830
|
-
props,
|
|
831
|
-
_owner: owner
|
|
832
|
-
};
|
|
833
|
-
element._store = {};
|
|
834
|
-
Object.defineProperty(element._store, "validated", {
|
|
835
|
-
configurable: false,
|
|
836
|
-
enumerable: false,
|
|
837
|
-
writable: true,
|
|
838
|
-
value: false
|
|
839
|
-
});
|
|
840
|
-
Object.defineProperty(element, "_self", {
|
|
841
|
-
configurable: false,
|
|
842
|
-
enumerable: false,
|
|
843
|
-
writable: false,
|
|
844
|
-
value: self
|
|
845
|
-
});
|
|
846
|
-
Object.defineProperty(element, "_source", {
|
|
847
|
-
configurable: false,
|
|
848
|
-
enumerable: false,
|
|
849
|
-
writable: false,
|
|
850
|
-
value: source
|
|
851
|
-
});
|
|
852
|
-
if (Object.freeze) {
|
|
853
|
-
Object.freeze(element.props);
|
|
854
|
-
Object.freeze(element);
|
|
855
|
-
}
|
|
856
|
-
return element;
|
|
857
|
-
};
|
|
858
|
-
/**
|
|
859
|
-
* Create and return a new ReactElement of the given type.
|
|
860
|
-
* See https://reactjs.org/docs/react-api.html#createelement
|
|
861
|
-
*/
|
|
862
|
-
function createElement(type, config, children) {
|
|
863
|
-
var propName;
|
|
864
|
-
var props = {};
|
|
865
|
-
var key = null;
|
|
866
|
-
var ref = null;
|
|
867
|
-
var self = null;
|
|
868
|
-
var source = null;
|
|
869
|
-
if (config != null) {
|
|
870
|
-
if (hasValidRef(config)) {
|
|
871
|
-
ref = config.ref;
|
|
872
|
-
warnIfStringRefCannotBeAutoConverted(config);
|
|
873
|
-
}
|
|
874
|
-
if (hasValidKey(config)) {
|
|
875
|
-
checkKeyStringCoercion(config.key);
|
|
876
|
-
key = "" + config.key;
|
|
877
|
-
}
|
|
878
|
-
self = config.__self === void 0 ? null : config.__self;
|
|
879
|
-
source = config.__source === void 0 ? null : config.__source;
|
|
880
|
-
for (propName in config) if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) props[propName] = config[propName];
|
|
881
|
-
}
|
|
882
|
-
var childrenLength = arguments.length - 2;
|
|
883
|
-
if (childrenLength === 1) props.children = children;
|
|
884
|
-
else if (childrenLength > 1) {
|
|
885
|
-
var childArray = Array(childrenLength);
|
|
886
|
-
for (var i = 0; i < childrenLength; i++) childArray[i] = arguments[i + 2];
|
|
887
|
-
if (Object.freeze) Object.freeze(childArray);
|
|
888
|
-
props.children = childArray;
|
|
889
|
-
}
|
|
890
|
-
if (type && type.defaultProps) {
|
|
891
|
-
var defaultProps = type.defaultProps;
|
|
892
|
-
for (propName in defaultProps) if (props[propName] === void 0) props[propName] = defaultProps[propName];
|
|
893
|
-
}
|
|
894
|
-
if (key || ref) {
|
|
895
|
-
var displayName = typeof type === "function" ? type.displayName || type.name || "Unknown" : type;
|
|
896
|
-
if (key) defineKeyPropWarningGetter(props, displayName);
|
|
897
|
-
if (ref) defineRefPropWarningGetter(props, displayName);
|
|
898
|
-
}
|
|
899
|
-
return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);
|
|
900
|
-
}
|
|
901
|
-
function cloneAndReplaceKey(oldElement, newKey) {
|
|
902
|
-
return ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);
|
|
903
|
-
}
|
|
904
|
-
/**
|
|
905
|
-
* Clone and return a new ReactElement using element as the starting point.
|
|
906
|
-
* See https://reactjs.org/docs/react-api.html#cloneelement
|
|
907
|
-
*/
|
|
908
|
-
function cloneElement(element, config, children) {
|
|
909
|
-
if (element === null || element === void 0) throw new Error("React.cloneElement(...): The argument must be a React element, but you passed " + element + ".");
|
|
910
|
-
var propName;
|
|
911
|
-
var props = assign({}, element.props);
|
|
912
|
-
var key = element.key;
|
|
913
|
-
var ref = element.ref;
|
|
914
|
-
var self = element._self;
|
|
915
|
-
var source = element._source;
|
|
916
|
-
var owner = element._owner;
|
|
917
|
-
if (config != null) {
|
|
918
|
-
if (hasValidRef(config)) {
|
|
919
|
-
ref = config.ref;
|
|
920
|
-
owner = ReactCurrentOwner.current;
|
|
921
|
-
}
|
|
922
|
-
if (hasValidKey(config)) {
|
|
923
|
-
checkKeyStringCoercion(config.key);
|
|
924
|
-
key = "" + config.key;
|
|
925
|
-
}
|
|
926
|
-
var defaultProps;
|
|
927
|
-
if (element.type && element.type.defaultProps) defaultProps = element.type.defaultProps;
|
|
928
|
-
for (propName in config) if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {
|
|
929
|
-
if (config[propName] === void 0 && defaultProps !== void 0) props[propName] = defaultProps[propName];
|
|
930
|
-
else props[propName] = config[propName];
|
|
931
|
-
}
|
|
932
|
-
}
|
|
933
|
-
var childrenLength = arguments.length - 2;
|
|
934
|
-
if (childrenLength === 1) props.children = children;
|
|
935
|
-
else if (childrenLength > 1) {
|
|
936
|
-
var childArray = Array(childrenLength);
|
|
937
|
-
for (var i = 0; i < childrenLength; i++) childArray[i] = arguments[i + 2];
|
|
938
|
-
props.children = childArray;
|
|
939
|
-
}
|
|
940
|
-
return ReactElement(element.type, key, ref, self, source, owner, props);
|
|
941
|
-
}
|
|
942
|
-
/**
|
|
943
|
-
* Verifies the object is a ReactElement.
|
|
944
|
-
* See https://reactjs.org/docs/react-api.html#isvalidelement
|
|
945
|
-
* @param {?object} object
|
|
946
|
-
* @return {boolean} True if `object` is a ReactElement.
|
|
947
|
-
* @final
|
|
948
|
-
*/
|
|
949
|
-
function isValidElement(object) {
|
|
950
|
-
return typeof object === "object" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
|
|
951
|
-
}
|
|
952
|
-
var SEPARATOR = ".";
|
|
953
|
-
var SUBSEPARATOR = ":";
|
|
954
|
-
/**
|
|
955
|
-
* Escape and wrap key so it is safe to use as a reactid
|
|
956
|
-
*
|
|
957
|
-
* @param {string} key to be escaped.
|
|
958
|
-
* @return {string} the escaped key.
|
|
959
|
-
*/
|
|
960
|
-
function escape(key) {
|
|
961
|
-
var escapeRegex = /[=:]/g;
|
|
962
|
-
var escaperLookup = {
|
|
963
|
-
"=": "=0",
|
|
964
|
-
":": "=2"
|
|
965
|
-
};
|
|
966
|
-
return "$" + key.replace(escapeRegex, function(match) {
|
|
967
|
-
return escaperLookup[match];
|
|
968
|
-
});
|
|
969
|
-
}
|
|
970
|
-
/**
|
|
971
|
-
* TODO: Test that a single child and an array with one item have the same key
|
|
972
|
-
* pattern.
|
|
973
|
-
*/
|
|
974
|
-
var didWarnAboutMaps = false;
|
|
975
|
-
var userProvidedKeyEscapeRegex = /\/+/g;
|
|
976
|
-
function escapeUserProvidedKey(text) {
|
|
977
|
-
return text.replace(userProvidedKeyEscapeRegex, "$&/");
|
|
978
|
-
}
|
|
979
|
-
/**
|
|
980
|
-
* Generate a key string that identifies a element within a set.
|
|
981
|
-
*
|
|
982
|
-
* @param {*} element A element that could contain a manual key.
|
|
983
|
-
* @param {number} index Index that is used if a manual key is not provided.
|
|
984
|
-
* @return {string}
|
|
985
|
-
*/
|
|
986
|
-
function getElementKey(element, index) {
|
|
987
|
-
if (typeof element === "object" && element !== null && element.key != null) {
|
|
988
|
-
checkKeyStringCoercion(element.key);
|
|
989
|
-
return escape("" + element.key);
|
|
990
|
-
}
|
|
991
|
-
return index.toString(36);
|
|
992
|
-
}
|
|
993
|
-
function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {
|
|
994
|
-
var type = typeof children;
|
|
995
|
-
if (type === "undefined" || type === "boolean") children = null;
|
|
996
|
-
var invokeCallback = false;
|
|
997
|
-
if (children === null) invokeCallback = true;
|
|
998
|
-
else switch (type) {
|
|
999
|
-
case "string":
|
|
1000
|
-
case "number":
|
|
1001
|
-
invokeCallback = true;
|
|
1002
|
-
break;
|
|
1003
|
-
case "object": switch (children.$$typeof) {
|
|
1004
|
-
case REACT_ELEMENT_TYPE:
|
|
1005
|
-
case REACT_PORTAL_TYPE: invokeCallback = true;
|
|
1006
|
-
}
|
|
1007
|
-
}
|
|
1008
|
-
if (invokeCallback) {
|
|
1009
|
-
var _child = children;
|
|
1010
|
-
var mappedChild = callback(_child);
|
|
1011
|
-
var childKey = nameSoFar === "" ? SEPARATOR + getElementKey(_child, 0) : nameSoFar;
|
|
1012
|
-
if (isArray(mappedChild)) {
|
|
1013
|
-
var escapedChildKey = "";
|
|
1014
|
-
if (childKey != null) escapedChildKey = escapeUserProvidedKey(childKey) + "/";
|
|
1015
|
-
mapIntoArray(mappedChild, array, escapedChildKey, "", function(c) {
|
|
1016
|
-
return c;
|
|
1017
|
-
});
|
|
1018
|
-
} else if (mappedChild != null) {
|
|
1019
|
-
if (isValidElement(mappedChild)) {
|
|
1020
|
-
if (mappedChild.key && (!_child || _child.key !== mappedChild.key)) checkKeyStringCoercion(mappedChild.key);
|
|
1021
|
-
mappedChild = cloneAndReplaceKey(mappedChild, escapedPrefix + (mappedChild.key && (!_child || _child.key !== mappedChild.key) ? escapeUserProvidedKey("" + mappedChild.key) + "/" : "") + childKey);
|
|
1022
|
-
}
|
|
1023
|
-
array.push(mappedChild);
|
|
1024
|
-
}
|
|
1025
|
-
return 1;
|
|
1026
|
-
}
|
|
1027
|
-
var child;
|
|
1028
|
-
var nextName;
|
|
1029
|
-
var subtreeCount = 0;
|
|
1030
|
-
var nextNamePrefix = nameSoFar === "" ? SEPARATOR : nameSoFar + SUBSEPARATOR;
|
|
1031
|
-
if (isArray(children)) for (var i = 0; i < children.length; i++) {
|
|
1032
|
-
child = children[i];
|
|
1033
|
-
nextName = nextNamePrefix + getElementKey(child, i);
|
|
1034
|
-
subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);
|
|
1035
|
-
}
|
|
1036
|
-
else {
|
|
1037
|
-
var iteratorFn = getIteratorFn(children);
|
|
1038
|
-
if (typeof iteratorFn === "function") {
|
|
1039
|
-
var iterableChildren = children;
|
|
1040
|
-
if (iteratorFn === iterableChildren.entries) {
|
|
1041
|
-
if (!didWarnAboutMaps) warn("Using Maps as children is not supported. Use an array of keyed ReactElements instead.");
|
|
1042
|
-
didWarnAboutMaps = true;
|
|
1043
|
-
}
|
|
1044
|
-
var iterator = iteratorFn.call(iterableChildren);
|
|
1045
|
-
var step;
|
|
1046
|
-
var ii = 0;
|
|
1047
|
-
while (!(step = iterator.next()).done) {
|
|
1048
|
-
child = step.value;
|
|
1049
|
-
nextName = nextNamePrefix + getElementKey(child, ii++);
|
|
1050
|
-
subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);
|
|
1051
|
-
}
|
|
1052
|
-
} else if (type === "object") {
|
|
1053
|
-
var childrenString = String(children);
|
|
1054
|
-
throw new Error("Objects are not valid as a React child (found: " + (childrenString === "[object Object]" ? "object with keys {" + Object.keys(children).join(", ") + "}" : childrenString) + "). If you meant to render a collection of children, use an array instead.");
|
|
1055
|
-
}
|
|
1056
|
-
}
|
|
1057
|
-
return subtreeCount;
|
|
1058
|
-
}
|
|
1059
|
-
/**
|
|
1060
|
-
* Maps children that are typically specified as `props.children`.
|
|
1061
|
-
*
|
|
1062
|
-
* See https://reactjs.org/docs/react-api.html#reactchildrenmap
|
|
1063
|
-
*
|
|
1064
|
-
* The provided mapFunction(child, index) will be called for each
|
|
1065
|
-
* leaf child.
|
|
1066
|
-
*
|
|
1067
|
-
* @param {?*} children Children tree container.
|
|
1068
|
-
* @param {function(*, int)} func The map function.
|
|
1069
|
-
* @param {*} context Context for mapFunction.
|
|
1070
|
-
* @return {object} Object containing the ordered map of results.
|
|
1071
|
-
*/
|
|
1072
|
-
function mapChildren(children, func, context) {
|
|
1073
|
-
if (children == null) return children;
|
|
1074
|
-
var result = [];
|
|
1075
|
-
var count = 0;
|
|
1076
|
-
mapIntoArray(children, result, "", "", function(child) {
|
|
1077
|
-
return func.call(context, child, count++);
|
|
1078
|
-
});
|
|
1079
|
-
return result;
|
|
1080
|
-
}
|
|
1081
|
-
/**
|
|
1082
|
-
* Count the number of children that are typically specified as
|
|
1083
|
-
* `props.children`.
|
|
1084
|
-
*
|
|
1085
|
-
* See https://reactjs.org/docs/react-api.html#reactchildrencount
|
|
1086
|
-
*
|
|
1087
|
-
* @param {?*} children Children tree container.
|
|
1088
|
-
* @return {number} The number of children.
|
|
1089
|
-
*/
|
|
1090
|
-
function countChildren(children) {
|
|
1091
|
-
var n = 0;
|
|
1092
|
-
mapChildren(children, function() {
|
|
1093
|
-
n++;
|
|
1094
|
-
});
|
|
1095
|
-
return n;
|
|
1096
|
-
}
|
|
1097
|
-
/**
|
|
1098
|
-
* Iterates through children that are typically specified as `props.children`.
|
|
1099
|
-
*
|
|
1100
|
-
* See https://reactjs.org/docs/react-api.html#reactchildrenforeach
|
|
1101
|
-
*
|
|
1102
|
-
* The provided forEachFunc(child, index) will be called for each
|
|
1103
|
-
* leaf child.
|
|
1104
|
-
*
|
|
1105
|
-
* @param {?*} children Children tree container.
|
|
1106
|
-
* @param {function(*, int)} forEachFunc
|
|
1107
|
-
* @param {*} forEachContext Context for forEachContext.
|
|
1108
|
-
*/
|
|
1109
|
-
function forEachChildren(children, forEachFunc, forEachContext) {
|
|
1110
|
-
mapChildren(children, function() {
|
|
1111
|
-
forEachFunc.apply(this, arguments);
|
|
1112
|
-
}, forEachContext);
|
|
1113
|
-
}
|
|
1114
|
-
/**
|
|
1115
|
-
* Flatten a children object (typically specified as `props.children`) and
|
|
1116
|
-
* return an array with appropriately re-keyed children.
|
|
1117
|
-
*
|
|
1118
|
-
* See https://reactjs.org/docs/react-api.html#reactchildrentoarray
|
|
1119
|
-
*/
|
|
1120
|
-
function toArray(children) {
|
|
1121
|
-
return mapChildren(children, function(child) {
|
|
1122
|
-
return child;
|
|
1123
|
-
}) || [];
|
|
1124
|
-
}
|
|
1125
|
-
/**
|
|
1126
|
-
* Returns the first child in a collection of children and verifies that there
|
|
1127
|
-
* is only one child in the collection.
|
|
1128
|
-
*
|
|
1129
|
-
* See https://reactjs.org/docs/react-api.html#reactchildrenonly
|
|
1130
|
-
*
|
|
1131
|
-
* The current implementation of this function assumes that a single child gets
|
|
1132
|
-
* passed without a wrapper, but the purpose of this helper function is to
|
|
1133
|
-
* abstract away the particular structure of children.
|
|
1134
|
-
*
|
|
1135
|
-
* @param {?object} children Child collection structure.
|
|
1136
|
-
* @return {ReactElement} The first and only `ReactElement` contained in the
|
|
1137
|
-
* structure.
|
|
1138
|
-
*/
|
|
1139
|
-
function onlyChild(children) {
|
|
1140
|
-
if (!isValidElement(children)) throw new Error("React.Children.only expected to receive a single React element child.");
|
|
1141
|
-
return children;
|
|
1142
|
-
}
|
|
1143
|
-
function createContext(defaultValue) {
|
|
1144
|
-
var context = {
|
|
1145
|
-
$$typeof: REACT_CONTEXT_TYPE,
|
|
1146
|
-
_currentValue: defaultValue,
|
|
1147
|
-
_currentValue2: defaultValue,
|
|
1148
|
-
_threadCount: 0,
|
|
1149
|
-
Provider: null,
|
|
1150
|
-
Consumer: null,
|
|
1151
|
-
_defaultValue: null,
|
|
1152
|
-
_globalName: null
|
|
1153
|
-
};
|
|
1154
|
-
context.Provider = {
|
|
1155
|
-
$$typeof: REACT_PROVIDER_TYPE,
|
|
1156
|
-
_context: context
|
|
1157
|
-
};
|
|
1158
|
-
var hasWarnedAboutUsingNestedContextConsumers = false;
|
|
1159
|
-
var hasWarnedAboutUsingConsumerProvider = false;
|
|
1160
|
-
var hasWarnedAboutDisplayNameOnConsumer = false;
|
|
1161
|
-
var Consumer = {
|
|
1162
|
-
$$typeof: REACT_CONTEXT_TYPE,
|
|
1163
|
-
_context: context
|
|
1164
|
-
};
|
|
1165
|
-
Object.defineProperties(Consumer, {
|
|
1166
|
-
Provider: {
|
|
1167
|
-
get: function() {
|
|
1168
|
-
if (!hasWarnedAboutUsingConsumerProvider) {
|
|
1169
|
-
hasWarnedAboutUsingConsumerProvider = true;
|
|
1170
|
-
error("Rendering <Context.Consumer.Provider> is not supported and will be removed in a future major release. Did you mean to render <Context.Provider> instead?");
|
|
1171
|
-
}
|
|
1172
|
-
return context.Provider;
|
|
1173
|
-
},
|
|
1174
|
-
set: function(_Provider) {
|
|
1175
|
-
context.Provider = _Provider;
|
|
1176
|
-
}
|
|
1177
|
-
},
|
|
1178
|
-
_currentValue: {
|
|
1179
|
-
get: function() {
|
|
1180
|
-
return context._currentValue;
|
|
1181
|
-
},
|
|
1182
|
-
set: function(_currentValue) {
|
|
1183
|
-
context._currentValue = _currentValue;
|
|
1184
|
-
}
|
|
1185
|
-
},
|
|
1186
|
-
_currentValue2: {
|
|
1187
|
-
get: function() {
|
|
1188
|
-
return context._currentValue2;
|
|
1189
|
-
},
|
|
1190
|
-
set: function(_currentValue2) {
|
|
1191
|
-
context._currentValue2 = _currentValue2;
|
|
1192
|
-
}
|
|
1193
|
-
},
|
|
1194
|
-
_threadCount: {
|
|
1195
|
-
get: function() {
|
|
1196
|
-
return context._threadCount;
|
|
1197
|
-
},
|
|
1198
|
-
set: function(_threadCount) {
|
|
1199
|
-
context._threadCount = _threadCount;
|
|
1200
|
-
}
|
|
1201
|
-
},
|
|
1202
|
-
Consumer: { get: function() {
|
|
1203
|
-
if (!hasWarnedAboutUsingNestedContextConsumers) {
|
|
1204
|
-
hasWarnedAboutUsingNestedContextConsumers = true;
|
|
1205
|
-
error("Rendering <Context.Consumer.Consumer> is not supported and will be removed in a future major release. Did you mean to render <Context.Consumer> instead?");
|
|
1206
|
-
}
|
|
1207
|
-
return context.Consumer;
|
|
1208
|
-
} },
|
|
1209
|
-
displayName: {
|
|
1210
|
-
get: function() {
|
|
1211
|
-
return context.displayName;
|
|
1212
|
-
},
|
|
1213
|
-
set: function(displayName) {
|
|
1214
|
-
if (!hasWarnedAboutDisplayNameOnConsumer) {
|
|
1215
|
-
warn("Setting `displayName` on Context.Consumer has no effect. You should set it directly on the context with Context.displayName = '%s'.", displayName);
|
|
1216
|
-
hasWarnedAboutDisplayNameOnConsumer = true;
|
|
1217
|
-
}
|
|
1218
|
-
}
|
|
1219
|
-
}
|
|
1220
|
-
});
|
|
1221
|
-
context.Consumer = Consumer;
|
|
1222
|
-
context._currentRenderer = null;
|
|
1223
|
-
context._currentRenderer2 = null;
|
|
1224
|
-
return context;
|
|
1225
|
-
}
|
|
1226
|
-
var Uninitialized = -1;
|
|
1227
|
-
var Pending = 0;
|
|
1228
|
-
var Resolved = 1;
|
|
1229
|
-
var Rejected = 2;
|
|
1230
|
-
function lazyInitializer(payload) {
|
|
1231
|
-
if (payload._status === Uninitialized) {
|
|
1232
|
-
var ctor = payload._result;
|
|
1233
|
-
var thenable = ctor();
|
|
1234
|
-
thenable.then(function(moduleObject) {
|
|
1235
|
-
if (payload._status === Pending || payload._status === Uninitialized) {
|
|
1236
|
-
var resolved = payload;
|
|
1237
|
-
resolved._status = Resolved;
|
|
1238
|
-
resolved._result = moduleObject;
|
|
1239
|
-
}
|
|
1240
|
-
}, function(error) {
|
|
1241
|
-
if (payload._status === Pending || payload._status === Uninitialized) {
|
|
1242
|
-
var rejected = payload;
|
|
1243
|
-
rejected._status = Rejected;
|
|
1244
|
-
rejected._result = error;
|
|
1245
|
-
}
|
|
1246
|
-
});
|
|
1247
|
-
if (payload._status === Uninitialized) {
|
|
1248
|
-
var pending = payload;
|
|
1249
|
-
pending._status = Pending;
|
|
1250
|
-
pending._result = thenable;
|
|
1251
|
-
}
|
|
1252
|
-
}
|
|
1253
|
-
if (payload._status === Resolved) {
|
|
1254
|
-
var moduleObject = payload._result;
|
|
1255
|
-
if (moduleObject === void 0) error("lazy: Expected the result of a dynamic import() call. Instead received: %s\n\nYour code should look like: \n const MyComponent = lazy(() => import('./MyComponent'))\n\nDid you accidentally put curly braces around the import?", moduleObject);
|
|
1256
|
-
if (!("default" in moduleObject)) error("lazy: Expected the result of a dynamic import() call. Instead received: %s\n\nYour code should look like: \n const MyComponent = lazy(() => import('./MyComponent'))", moduleObject);
|
|
1257
|
-
return moduleObject.default;
|
|
1258
|
-
} else throw payload._result;
|
|
1259
|
-
}
|
|
1260
|
-
function lazy(ctor) {
|
|
1261
|
-
var lazyType = {
|
|
1262
|
-
$$typeof: REACT_LAZY_TYPE,
|
|
1263
|
-
_payload: {
|
|
1264
|
-
_status: Uninitialized,
|
|
1265
|
-
_result: ctor
|
|
1266
|
-
},
|
|
1267
|
-
_init: lazyInitializer
|
|
1268
|
-
};
|
|
1269
|
-
var defaultProps;
|
|
1270
|
-
var propTypes;
|
|
1271
|
-
Object.defineProperties(lazyType, {
|
|
1272
|
-
defaultProps: {
|
|
1273
|
-
configurable: true,
|
|
1274
|
-
get: function() {
|
|
1275
|
-
return defaultProps;
|
|
1276
|
-
},
|
|
1277
|
-
set: function(newDefaultProps) {
|
|
1278
|
-
error("React.lazy(...): It is not supported to assign `defaultProps` to a lazy component import. Either specify them where the component is defined, or create a wrapping component around it.");
|
|
1279
|
-
defaultProps = newDefaultProps;
|
|
1280
|
-
Object.defineProperty(lazyType, "defaultProps", { enumerable: true });
|
|
1281
|
-
}
|
|
1282
|
-
},
|
|
1283
|
-
propTypes: {
|
|
1284
|
-
configurable: true,
|
|
1285
|
-
get: function() {
|
|
1286
|
-
return propTypes;
|
|
1287
|
-
},
|
|
1288
|
-
set: function(newPropTypes) {
|
|
1289
|
-
error("React.lazy(...): It is not supported to assign `propTypes` to a lazy component import. Either specify them where the component is defined, or create a wrapping component around it.");
|
|
1290
|
-
propTypes = newPropTypes;
|
|
1291
|
-
Object.defineProperty(lazyType, "propTypes", { enumerable: true });
|
|
1292
|
-
}
|
|
1293
|
-
}
|
|
1294
|
-
});
|
|
1295
|
-
return lazyType;
|
|
1296
|
-
}
|
|
1297
|
-
function forwardRef(render) {
|
|
1298
|
-
if (render != null && render.$$typeof === REACT_MEMO_TYPE) error("forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...)).");
|
|
1299
|
-
else if (typeof render !== "function") error("forwardRef requires a render function but was given %s.", render === null ? "null" : typeof render);
|
|
1300
|
-
else if (render.length !== 0 && render.length !== 2) error("forwardRef render functions accept exactly two parameters: props and ref. %s", render.length === 1 ? "Did you forget to use the ref parameter?" : "Any additional parameter will be undefined.");
|
|
1301
|
-
if (render != null) {
|
|
1302
|
-
if (render.defaultProps != null || render.propTypes != null) error("forwardRef render functions do not support propTypes or defaultProps. Did you accidentally pass a React component?");
|
|
1303
|
-
}
|
|
1304
|
-
var elementType = {
|
|
1305
|
-
$$typeof: REACT_FORWARD_REF_TYPE,
|
|
1306
|
-
render
|
|
1307
|
-
};
|
|
1308
|
-
var ownName;
|
|
1309
|
-
Object.defineProperty(elementType, "displayName", {
|
|
1310
|
-
enumerable: false,
|
|
1311
|
-
configurable: true,
|
|
1312
|
-
get: function() {
|
|
1313
|
-
return ownName;
|
|
1314
|
-
},
|
|
1315
|
-
set: function(name) {
|
|
1316
|
-
ownName = name;
|
|
1317
|
-
if (!render.name && !render.displayName) render.displayName = name;
|
|
1318
|
-
}
|
|
1319
|
-
});
|
|
1320
|
-
return elementType;
|
|
1321
|
-
}
|
|
1322
|
-
var REACT_MODULE_REFERENCE = Symbol.for("react.module.reference");
|
|
1323
|
-
function isValidElementType(type) {
|
|
1324
|
-
if (typeof type === "string" || typeof type === "function") return true;
|
|
1325
|
-
if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing) return true;
|
|
1326
|
-
if (typeof type === "object" && type !== null) {
|
|
1327
|
-
if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== void 0) return true;
|
|
1328
|
-
}
|
|
1329
|
-
return false;
|
|
1330
|
-
}
|
|
1331
|
-
function memo(type, compare) {
|
|
1332
|
-
if (!isValidElementType(type)) error("memo: The first argument must be a component. Instead received: %s", type === null ? "null" : typeof type);
|
|
1333
|
-
var elementType = {
|
|
1334
|
-
$$typeof: REACT_MEMO_TYPE,
|
|
1335
|
-
type,
|
|
1336
|
-
compare: compare === void 0 ? null : compare
|
|
1337
|
-
};
|
|
1338
|
-
var ownName;
|
|
1339
|
-
Object.defineProperty(elementType, "displayName", {
|
|
1340
|
-
enumerable: false,
|
|
1341
|
-
configurable: true,
|
|
1342
|
-
get: function() {
|
|
1343
|
-
return ownName;
|
|
1344
|
-
},
|
|
1345
|
-
set: function(name) {
|
|
1346
|
-
ownName = name;
|
|
1347
|
-
if (!type.name && !type.displayName) type.displayName = name;
|
|
1348
|
-
}
|
|
1349
|
-
});
|
|
1350
|
-
return elementType;
|
|
1351
|
-
}
|
|
1352
|
-
function resolveDispatcher() {
|
|
1353
|
-
var dispatcher = ReactCurrentDispatcher.current;
|
|
1354
|
-
if (dispatcher === null) error("Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.");
|
|
1355
|
-
return dispatcher;
|
|
1356
|
-
}
|
|
1357
|
-
function useContext(Context) {
|
|
1358
|
-
var dispatcher = resolveDispatcher();
|
|
1359
|
-
if (Context._context !== void 0) {
|
|
1360
|
-
var realContext = Context._context;
|
|
1361
|
-
if (realContext.Consumer === Context) error("Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be removed in a future major release. Did you mean to call useContext(Context) instead?");
|
|
1362
|
-
else if (realContext.Provider === Context) error("Calling useContext(Context.Provider) is not supported. Did you mean to call useContext(Context) instead?");
|
|
1363
|
-
}
|
|
1364
|
-
return dispatcher.useContext(Context);
|
|
1365
|
-
}
|
|
1366
|
-
function useState(initialState) {
|
|
1367
|
-
return resolveDispatcher().useState(initialState);
|
|
1368
|
-
}
|
|
1369
|
-
function useReducer(reducer, initialArg, init) {
|
|
1370
|
-
return resolveDispatcher().useReducer(reducer, initialArg, init);
|
|
1371
|
-
}
|
|
1372
|
-
function useRef(initialValue) {
|
|
1373
|
-
return resolveDispatcher().useRef(initialValue);
|
|
1374
|
-
}
|
|
1375
|
-
function useEffect(create, deps) {
|
|
1376
|
-
return resolveDispatcher().useEffect(create, deps);
|
|
1377
|
-
}
|
|
1378
|
-
function useInsertionEffect(create, deps) {
|
|
1379
|
-
return resolveDispatcher().useInsertionEffect(create, deps);
|
|
1380
|
-
}
|
|
1381
|
-
function useLayoutEffect(create, deps) {
|
|
1382
|
-
return resolveDispatcher().useLayoutEffect(create, deps);
|
|
1383
|
-
}
|
|
1384
|
-
function useCallback(callback, deps) {
|
|
1385
|
-
return resolveDispatcher().useCallback(callback, deps);
|
|
1386
|
-
}
|
|
1387
|
-
function useMemo(create, deps) {
|
|
1388
|
-
return resolveDispatcher().useMemo(create, deps);
|
|
1389
|
-
}
|
|
1390
|
-
function useImperativeHandle(ref, create, deps) {
|
|
1391
|
-
return resolveDispatcher().useImperativeHandle(ref, create, deps);
|
|
1392
|
-
}
|
|
1393
|
-
function useDebugValue(value, formatterFn) {
|
|
1394
|
-
return resolveDispatcher().useDebugValue(value, formatterFn);
|
|
1395
|
-
}
|
|
1396
|
-
function useTransition() {
|
|
1397
|
-
return resolveDispatcher().useTransition();
|
|
1398
|
-
}
|
|
1399
|
-
function useDeferredValue(value) {
|
|
1400
|
-
return resolveDispatcher().useDeferredValue(value);
|
|
1401
|
-
}
|
|
1402
|
-
function useId() {
|
|
1403
|
-
return resolveDispatcher().useId();
|
|
1404
|
-
}
|
|
1405
|
-
function useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {
|
|
1406
|
-
return resolveDispatcher().useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
|
|
1407
|
-
}
|
|
1408
|
-
var disabledDepth = 0;
|
|
1409
|
-
var prevLog;
|
|
1410
|
-
var prevInfo;
|
|
1411
|
-
var prevWarn;
|
|
1412
|
-
var prevError;
|
|
1413
|
-
var prevGroup;
|
|
1414
|
-
var prevGroupCollapsed;
|
|
1415
|
-
var prevGroupEnd;
|
|
1416
|
-
function disabledLog() {}
|
|
1417
|
-
disabledLog.__reactDisabledLog = true;
|
|
1418
|
-
function disableLogs() {
|
|
1419
|
-
if (disabledDepth === 0) {
|
|
1420
|
-
prevLog = console.log;
|
|
1421
|
-
prevInfo = console.info;
|
|
1422
|
-
prevWarn = console.warn;
|
|
1423
|
-
prevError = console.error;
|
|
1424
|
-
prevGroup = console.group;
|
|
1425
|
-
prevGroupCollapsed = console.groupCollapsed;
|
|
1426
|
-
prevGroupEnd = console.groupEnd;
|
|
1427
|
-
var props = {
|
|
1428
|
-
configurable: true,
|
|
1429
|
-
enumerable: true,
|
|
1430
|
-
value: disabledLog,
|
|
1431
|
-
writable: true
|
|
1432
|
-
};
|
|
1433
|
-
Object.defineProperties(console, {
|
|
1434
|
-
info: props,
|
|
1435
|
-
log: props,
|
|
1436
|
-
warn: props,
|
|
1437
|
-
error: props,
|
|
1438
|
-
group: props,
|
|
1439
|
-
groupCollapsed: props,
|
|
1440
|
-
groupEnd: props
|
|
1441
|
-
});
|
|
1442
|
-
}
|
|
1443
|
-
disabledDepth++;
|
|
1444
|
-
}
|
|
1445
|
-
function reenableLogs() {
|
|
1446
|
-
disabledDepth--;
|
|
1447
|
-
if (disabledDepth === 0) {
|
|
1448
|
-
var props = {
|
|
1449
|
-
configurable: true,
|
|
1450
|
-
enumerable: true,
|
|
1451
|
-
writable: true
|
|
1452
|
-
};
|
|
1453
|
-
Object.defineProperties(console, {
|
|
1454
|
-
log: assign({}, props, { value: prevLog }),
|
|
1455
|
-
info: assign({}, props, { value: prevInfo }),
|
|
1456
|
-
warn: assign({}, props, { value: prevWarn }),
|
|
1457
|
-
error: assign({}, props, { value: prevError }),
|
|
1458
|
-
group: assign({}, props, { value: prevGroup }),
|
|
1459
|
-
groupCollapsed: assign({}, props, { value: prevGroupCollapsed }),
|
|
1460
|
-
groupEnd: assign({}, props, { value: prevGroupEnd })
|
|
1461
|
-
});
|
|
1462
|
-
}
|
|
1463
|
-
if (disabledDepth < 0) error("disabledDepth fell below zero. This is a bug in React. Please file an issue.");
|
|
1464
|
-
}
|
|
1465
|
-
var ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher;
|
|
1466
|
-
var prefix;
|
|
1467
|
-
function describeBuiltInComponentFrame(name, source, ownerFn) {
|
|
1468
|
-
if (prefix === void 0) try {
|
|
1469
|
-
throw Error();
|
|
1470
|
-
} catch (x) {
|
|
1471
|
-
var match = x.stack.trim().match(/\n( *(at )?)/);
|
|
1472
|
-
prefix = match && match[1] || "";
|
|
1473
|
-
}
|
|
1474
|
-
return "\n" + prefix + name;
|
|
1475
|
-
}
|
|
1476
|
-
var reentry = false;
|
|
1477
|
-
var componentFrameCache = new (typeof WeakMap === "function" ? WeakMap : Map)();
|
|
1478
|
-
function describeNativeComponentFrame(fn, construct) {
|
|
1479
|
-
if (!fn || reentry) return "";
|
|
1480
|
-
var frame = componentFrameCache.get(fn);
|
|
1481
|
-
if (frame !== void 0) return frame;
|
|
1482
|
-
var control;
|
|
1483
|
-
reentry = true;
|
|
1484
|
-
var previousPrepareStackTrace = Error.prepareStackTrace;
|
|
1485
|
-
Error.prepareStackTrace = void 0;
|
|
1486
|
-
var previousDispatcher = ReactCurrentDispatcher$1.current;
|
|
1487
|
-
ReactCurrentDispatcher$1.current = null;
|
|
1488
|
-
disableLogs();
|
|
1489
|
-
try {
|
|
1490
|
-
if (construct) {
|
|
1491
|
-
var Fake = function() {
|
|
1492
|
-
throw Error();
|
|
1493
|
-
};
|
|
1494
|
-
Object.defineProperty(Fake.prototype, "props", { set: function() {
|
|
1495
|
-
throw Error();
|
|
1496
|
-
} });
|
|
1497
|
-
if (typeof Reflect === "object" && Reflect.construct) {
|
|
1498
|
-
try {
|
|
1499
|
-
Reflect.construct(Fake, []);
|
|
1500
|
-
} catch (x) {
|
|
1501
|
-
control = x;
|
|
1502
|
-
}
|
|
1503
|
-
Reflect.construct(fn, [], Fake);
|
|
1504
|
-
} else {
|
|
1505
|
-
try {
|
|
1506
|
-
Fake.call();
|
|
1507
|
-
} catch (x) {
|
|
1508
|
-
control = x;
|
|
1509
|
-
}
|
|
1510
|
-
fn.call(Fake.prototype);
|
|
1511
|
-
}
|
|
1512
|
-
} else {
|
|
1513
|
-
try {
|
|
1514
|
-
throw Error();
|
|
1515
|
-
} catch (x) {
|
|
1516
|
-
control = x;
|
|
1517
|
-
}
|
|
1518
|
-
fn();
|
|
1519
|
-
}
|
|
1520
|
-
} catch (sample) {
|
|
1521
|
-
if (sample && control && typeof sample.stack === "string") {
|
|
1522
|
-
var sampleLines = sample.stack.split("\n");
|
|
1523
|
-
var controlLines = control.stack.split("\n");
|
|
1524
|
-
var s = sampleLines.length - 1;
|
|
1525
|
-
var c = controlLines.length - 1;
|
|
1526
|
-
while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) c--;
|
|
1527
|
-
for (; s >= 1 && c >= 0; s--, c--) if (sampleLines[s] !== controlLines[c]) {
|
|
1528
|
-
if (s !== 1 || c !== 1) do {
|
|
1529
|
-
s--;
|
|
1530
|
-
c--;
|
|
1531
|
-
if (c < 0 || sampleLines[s] !== controlLines[c]) {
|
|
1532
|
-
var _frame = "\n" + sampleLines[s].replace(" at new ", " at ");
|
|
1533
|
-
if (fn.displayName && _frame.includes("<anonymous>")) _frame = _frame.replace("<anonymous>", fn.displayName);
|
|
1534
|
-
if (typeof fn === "function") componentFrameCache.set(fn, _frame);
|
|
1535
|
-
return _frame;
|
|
1536
|
-
}
|
|
1537
|
-
} while (s >= 1 && c >= 0);
|
|
1538
|
-
break;
|
|
1539
|
-
}
|
|
1540
|
-
}
|
|
1541
|
-
} finally {
|
|
1542
|
-
reentry = false;
|
|
1543
|
-
ReactCurrentDispatcher$1.current = previousDispatcher;
|
|
1544
|
-
reenableLogs();
|
|
1545
|
-
Error.prepareStackTrace = previousPrepareStackTrace;
|
|
1546
|
-
}
|
|
1547
|
-
var name = fn ? fn.displayName || fn.name : "";
|
|
1548
|
-
var syntheticFrame = name ? describeBuiltInComponentFrame(name) : "";
|
|
1549
|
-
if (typeof fn === "function") componentFrameCache.set(fn, syntheticFrame);
|
|
1550
|
-
return syntheticFrame;
|
|
1551
|
-
}
|
|
1552
|
-
function describeFunctionComponentFrame(fn, source, ownerFn) {
|
|
1553
|
-
return describeNativeComponentFrame(fn, false);
|
|
1554
|
-
}
|
|
1555
|
-
function shouldConstruct(Component) {
|
|
1556
|
-
var prototype = Component.prototype;
|
|
1557
|
-
return !!(prototype && prototype.isReactComponent);
|
|
1558
|
-
}
|
|
1559
|
-
function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {
|
|
1560
|
-
if (type == null) return "";
|
|
1561
|
-
if (typeof type === "function") return describeNativeComponentFrame(type, shouldConstruct(type));
|
|
1562
|
-
if (typeof type === "string") return describeBuiltInComponentFrame(type);
|
|
1563
|
-
switch (type) {
|
|
1564
|
-
case REACT_SUSPENSE_TYPE: return describeBuiltInComponentFrame("Suspense");
|
|
1565
|
-
case REACT_SUSPENSE_LIST_TYPE: return describeBuiltInComponentFrame("SuspenseList");
|
|
1566
|
-
}
|
|
1567
|
-
if (typeof type === "object") switch (type.$$typeof) {
|
|
1568
|
-
case REACT_FORWARD_REF_TYPE: return describeFunctionComponentFrame(type.render);
|
|
1569
|
-
case REACT_MEMO_TYPE: return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);
|
|
1570
|
-
case REACT_LAZY_TYPE:
|
|
1571
|
-
var lazyComponent = type;
|
|
1572
|
-
var payload = lazyComponent._payload;
|
|
1573
|
-
var init = lazyComponent._init;
|
|
1574
|
-
try {
|
|
1575
|
-
return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);
|
|
1576
|
-
} catch (x) {}
|
|
1577
|
-
}
|
|
1578
|
-
return "";
|
|
1579
|
-
}
|
|
1580
|
-
var loggedTypeFailures = {};
|
|
1581
|
-
var ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;
|
|
1582
|
-
function setCurrentlyValidatingElement(element) {
|
|
1583
|
-
if (element) {
|
|
1584
|
-
var owner = element._owner;
|
|
1585
|
-
var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);
|
|
1586
|
-
ReactDebugCurrentFrame$1.setExtraStackFrame(stack);
|
|
1587
|
-
} else ReactDebugCurrentFrame$1.setExtraStackFrame(null);
|
|
1588
|
-
}
|
|
1589
|
-
function checkPropTypes(typeSpecs, values, location, componentName, element) {
|
|
1590
|
-
var has = Function.call.bind(hasOwnProperty);
|
|
1591
|
-
for (var typeSpecName in typeSpecs) if (has(typeSpecs, typeSpecName)) {
|
|
1592
|
-
var error$1 = void 0;
|
|
1593
|
-
try {
|
|
1594
|
-
if (typeof typeSpecs[typeSpecName] !== "function") {
|
|
1595
|
-
var err = Error((componentName || "React class") + ": " + location + " type `" + typeSpecName + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + typeof typeSpecs[typeSpecName] + "`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");
|
|
1596
|
-
err.name = "Invariant Violation";
|
|
1597
|
-
throw err;
|
|
1598
|
-
}
|
|
1599
|
-
error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED");
|
|
1600
|
-
} catch (ex) {
|
|
1601
|
-
error$1 = ex;
|
|
1602
|
-
}
|
|
1603
|
-
if (error$1 && !(error$1 instanceof Error)) {
|
|
1604
|
-
setCurrentlyValidatingElement(element);
|
|
1605
|
-
error("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).", componentName || "React class", location, typeSpecName, typeof error$1);
|
|
1606
|
-
setCurrentlyValidatingElement(null);
|
|
1607
|
-
}
|
|
1608
|
-
if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {
|
|
1609
|
-
loggedTypeFailures[error$1.message] = true;
|
|
1610
|
-
setCurrentlyValidatingElement(element);
|
|
1611
|
-
error("Failed %s type: %s", location, error$1.message);
|
|
1612
|
-
setCurrentlyValidatingElement(null);
|
|
1613
|
-
}
|
|
1614
|
-
}
|
|
1615
|
-
}
|
|
1616
|
-
function setCurrentlyValidatingElement$1(element) {
|
|
1617
|
-
if (element) {
|
|
1618
|
-
var owner = element._owner;
|
|
1619
|
-
setExtraStackFrame(describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null));
|
|
1620
|
-
} else setExtraStackFrame(null);
|
|
1621
|
-
}
|
|
1622
|
-
var propTypesMisspellWarningShown = false;
|
|
1623
|
-
function getDeclarationErrorAddendum() {
|
|
1624
|
-
if (ReactCurrentOwner.current) {
|
|
1625
|
-
var name = getComponentNameFromType(ReactCurrentOwner.current.type);
|
|
1626
|
-
if (name) return "\n\nCheck the render method of `" + name + "`.";
|
|
1627
|
-
}
|
|
1628
|
-
return "";
|
|
1629
|
-
}
|
|
1630
|
-
function getSourceInfoErrorAddendum(source) {
|
|
1631
|
-
if (source !== void 0) {
|
|
1632
|
-
var fileName = source.fileName.replace(/^.*[\\\/]/, "");
|
|
1633
|
-
var lineNumber = source.lineNumber;
|
|
1634
|
-
return "\n\nCheck your code at " + fileName + ":" + lineNumber + ".";
|
|
1635
|
-
}
|
|
1636
|
-
return "";
|
|
1637
|
-
}
|
|
1638
|
-
function getSourceInfoErrorAddendumForProps(elementProps) {
|
|
1639
|
-
if (elementProps !== null && elementProps !== void 0) return getSourceInfoErrorAddendum(elementProps.__source);
|
|
1640
|
-
return "";
|
|
1641
|
-
}
|
|
1642
|
-
/**
|
|
1643
|
-
* Warn if there's no key explicitly set on dynamic arrays of children or
|
|
1644
|
-
* object keys are not valid. This allows us to keep track of children between
|
|
1645
|
-
* updates.
|
|
1646
|
-
*/
|
|
1647
|
-
var ownerHasKeyUseWarning = {};
|
|
1648
|
-
function getCurrentComponentErrorInfo(parentType) {
|
|
1649
|
-
var info = getDeclarationErrorAddendum();
|
|
1650
|
-
if (!info) {
|
|
1651
|
-
var parentName = typeof parentType === "string" ? parentType : parentType.displayName || parentType.name;
|
|
1652
|
-
if (parentName) info = "\n\nCheck the top-level render call using <" + parentName + ">.";
|
|
1653
|
-
}
|
|
1654
|
-
return info;
|
|
1655
|
-
}
|
|
1656
|
-
/**
|
|
1657
|
-
* Warn if the element doesn't have an explicit key assigned to it.
|
|
1658
|
-
* This element is in an array. The array could grow and shrink or be
|
|
1659
|
-
* reordered. All children that haven't already been validated are required to
|
|
1660
|
-
* have a "key" property assigned to it. Error statuses are cached so a warning
|
|
1661
|
-
* will only be shown once.
|
|
1662
|
-
*
|
|
1663
|
-
* @internal
|
|
1664
|
-
* @param {ReactElement} element Element that requires a key.
|
|
1665
|
-
* @param {*} parentType element's parent's type.
|
|
1666
|
-
*/
|
|
1667
|
-
function validateExplicitKey(element, parentType) {
|
|
1668
|
-
if (!element._store || element._store.validated || element.key != null) return;
|
|
1669
|
-
element._store.validated = true;
|
|
1670
|
-
var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);
|
|
1671
|
-
if (ownerHasKeyUseWarning[currentComponentErrorInfo]) return;
|
|
1672
|
-
ownerHasKeyUseWarning[currentComponentErrorInfo] = true;
|
|
1673
|
-
var childOwner = "";
|
|
1674
|
-
if (element && element._owner && element._owner !== ReactCurrentOwner.current) childOwner = " It was passed a child from " + getComponentNameFromType(element._owner.type) + ".";
|
|
1675
|
-
setCurrentlyValidatingElement$1(element);
|
|
1676
|
-
error("Each child in a list should have a unique \"key\" prop.%s%s See https://reactjs.org/link/warning-keys for more information.", currentComponentErrorInfo, childOwner);
|
|
1677
|
-
setCurrentlyValidatingElement$1(null);
|
|
1678
|
-
}
|
|
1679
|
-
/**
|
|
1680
|
-
* Ensure that every element either is passed in a static location, in an
|
|
1681
|
-
* array with an explicit keys property defined, or in an object literal
|
|
1682
|
-
* with valid key property.
|
|
1683
|
-
*
|
|
1684
|
-
* @internal
|
|
1685
|
-
* @param {ReactNode} node Statically passed child of any type.
|
|
1686
|
-
* @param {*} parentType node's parent's type.
|
|
1687
|
-
*/
|
|
1688
|
-
function validateChildKeys(node, parentType) {
|
|
1689
|
-
if (typeof node !== "object") return;
|
|
1690
|
-
if (isArray(node)) for (var i = 0; i < node.length; i++) {
|
|
1691
|
-
var child = node[i];
|
|
1692
|
-
if (isValidElement(child)) validateExplicitKey(child, parentType);
|
|
1693
|
-
}
|
|
1694
|
-
else if (isValidElement(node)) {
|
|
1695
|
-
if (node._store) node._store.validated = true;
|
|
1696
|
-
} else if (node) {
|
|
1697
|
-
var iteratorFn = getIteratorFn(node);
|
|
1698
|
-
if (typeof iteratorFn === "function") {
|
|
1699
|
-
if (iteratorFn !== node.entries) {
|
|
1700
|
-
var iterator = iteratorFn.call(node);
|
|
1701
|
-
var step;
|
|
1702
|
-
while (!(step = iterator.next()).done) if (isValidElement(step.value)) validateExplicitKey(step.value, parentType);
|
|
1703
|
-
}
|
|
1704
|
-
}
|
|
1705
|
-
}
|
|
1706
|
-
}
|
|
1707
|
-
/**
|
|
1708
|
-
* Given an element, validate that its props follow the propTypes definition,
|
|
1709
|
-
* provided by the type.
|
|
1710
|
-
*
|
|
1711
|
-
* @param {ReactElement} element
|
|
1712
|
-
*/
|
|
1713
|
-
function validatePropTypes(element) {
|
|
1714
|
-
var type = element.type;
|
|
1715
|
-
if (type === null || type === void 0 || typeof type === "string") return;
|
|
1716
|
-
var propTypes;
|
|
1717
|
-
if (typeof type === "function") propTypes = type.propTypes;
|
|
1718
|
-
else if (typeof type === "object" && (type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_MEMO_TYPE)) propTypes = type.propTypes;
|
|
1719
|
-
else return;
|
|
1720
|
-
if (propTypes) {
|
|
1721
|
-
var name = getComponentNameFromType(type);
|
|
1722
|
-
checkPropTypes(propTypes, element.props, "prop", name, element);
|
|
1723
|
-
} else if (type.PropTypes !== void 0 && !propTypesMisspellWarningShown) {
|
|
1724
|
-
propTypesMisspellWarningShown = true;
|
|
1725
|
-
error("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?", getComponentNameFromType(type) || "Unknown");
|
|
1726
|
-
}
|
|
1727
|
-
if (typeof type.getDefaultProps === "function" && !type.getDefaultProps.isReactClassApproved) error("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.");
|
|
1728
|
-
}
|
|
1729
|
-
/**
|
|
1730
|
-
* Given a fragment, validate that it can only be provided with fragment props
|
|
1731
|
-
* @param {ReactElement} fragment
|
|
1732
|
-
*/
|
|
1733
|
-
function validateFragmentProps(fragment) {
|
|
1734
|
-
var keys = Object.keys(fragment.props);
|
|
1735
|
-
for (var i = 0; i < keys.length; i++) {
|
|
1736
|
-
var key = keys[i];
|
|
1737
|
-
if (key !== "children" && key !== "key") {
|
|
1738
|
-
setCurrentlyValidatingElement$1(fragment);
|
|
1739
|
-
error("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.", key);
|
|
1740
|
-
setCurrentlyValidatingElement$1(null);
|
|
1741
|
-
break;
|
|
1742
|
-
}
|
|
1743
|
-
}
|
|
1744
|
-
if (fragment.ref !== null) {
|
|
1745
|
-
setCurrentlyValidatingElement$1(fragment);
|
|
1746
|
-
error("Invalid attribute `ref` supplied to `React.Fragment`.");
|
|
1747
|
-
setCurrentlyValidatingElement$1(null);
|
|
1748
|
-
}
|
|
1749
|
-
}
|
|
1750
|
-
function createElementWithValidation(type, props, children) {
|
|
1751
|
-
var validType = isValidElementType(type);
|
|
1752
|
-
if (!validType) {
|
|
1753
|
-
var info = "";
|
|
1754
|
-
if (type === void 0 || typeof type === "object" && type !== null && Object.keys(type).length === 0) info += " You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.";
|
|
1755
|
-
var sourceInfo = getSourceInfoErrorAddendumForProps(props);
|
|
1756
|
-
if (sourceInfo) info += sourceInfo;
|
|
1757
|
-
else info += getDeclarationErrorAddendum();
|
|
1758
|
-
var typeString;
|
|
1759
|
-
if (type === null) typeString = "null";
|
|
1760
|
-
else if (isArray(type)) typeString = "array";
|
|
1761
|
-
else if (type !== void 0 && type.$$typeof === REACT_ELEMENT_TYPE) {
|
|
1762
|
-
typeString = "<" + (getComponentNameFromType(type.type) || "Unknown") + " />";
|
|
1763
|
-
info = " Did you accidentally export a JSX literal instead of a component?";
|
|
1764
|
-
} else typeString = typeof type;
|
|
1765
|
-
error("React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s", typeString, info);
|
|
1766
|
-
}
|
|
1767
|
-
var element = createElement.apply(this, arguments);
|
|
1768
|
-
if (element == null) return element;
|
|
1769
|
-
if (validType) for (var i = 2; i < arguments.length; i++) validateChildKeys(arguments[i], type);
|
|
1770
|
-
if (type === REACT_FRAGMENT_TYPE) validateFragmentProps(element);
|
|
1771
|
-
else validatePropTypes(element);
|
|
1772
|
-
return element;
|
|
1773
|
-
}
|
|
1774
|
-
var didWarnAboutDeprecatedCreateFactory = false;
|
|
1775
|
-
function createFactoryWithValidation(type) {
|
|
1776
|
-
var validatedFactory = createElementWithValidation.bind(null, type);
|
|
1777
|
-
validatedFactory.type = type;
|
|
1778
|
-
if (!didWarnAboutDeprecatedCreateFactory) {
|
|
1779
|
-
didWarnAboutDeprecatedCreateFactory = true;
|
|
1780
|
-
warn("React.createFactory() is deprecated and will be removed in a future major release. Consider using JSX or use React.createElement() directly instead.");
|
|
1781
|
-
}
|
|
1782
|
-
Object.defineProperty(validatedFactory, "type", {
|
|
1783
|
-
enumerable: false,
|
|
1784
|
-
get: function() {
|
|
1785
|
-
warn("Factory.type is deprecated. Access the class directly before passing it to createFactory.");
|
|
1786
|
-
Object.defineProperty(this, "type", { value: type });
|
|
1787
|
-
return type;
|
|
1788
|
-
}
|
|
1789
|
-
});
|
|
1790
|
-
return validatedFactory;
|
|
1791
|
-
}
|
|
1792
|
-
function cloneElementWithValidation(element, props, children) {
|
|
1793
|
-
var newElement = cloneElement.apply(this, arguments);
|
|
1794
|
-
for (var i = 2; i < arguments.length; i++) validateChildKeys(arguments[i], newElement.type);
|
|
1795
|
-
validatePropTypes(newElement);
|
|
1796
|
-
return newElement;
|
|
1797
|
-
}
|
|
1798
|
-
function startTransition(scope, options) {
|
|
1799
|
-
var prevTransition = ReactCurrentBatchConfig.transition;
|
|
1800
|
-
ReactCurrentBatchConfig.transition = {};
|
|
1801
|
-
var currentTransition = ReactCurrentBatchConfig.transition;
|
|
1802
|
-
ReactCurrentBatchConfig.transition._updatedFibers = /* @__PURE__ */ new Set();
|
|
1803
|
-
try {
|
|
1804
|
-
scope();
|
|
1805
|
-
} finally {
|
|
1806
|
-
ReactCurrentBatchConfig.transition = prevTransition;
|
|
1807
|
-
if (prevTransition === null && currentTransition._updatedFibers) {
|
|
1808
|
-
if (currentTransition._updatedFibers.size > 10) warn("Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table.");
|
|
1809
|
-
currentTransition._updatedFibers.clear();
|
|
1810
|
-
}
|
|
1811
|
-
}
|
|
1812
|
-
}
|
|
1813
|
-
var didWarnAboutMessageChannel = false;
|
|
1814
|
-
var enqueueTaskImpl = null;
|
|
1815
|
-
function enqueueTask(task) {
|
|
1816
|
-
if (enqueueTaskImpl === null) try {
|
|
1817
|
-
var requireString = ("require" + Math.random()).slice(0, 7);
|
|
1818
|
-
enqueueTaskImpl = (module && module[requireString]).call(module, "timers").setImmediate;
|
|
1819
|
-
} catch (_err) {
|
|
1820
|
-
enqueueTaskImpl = function(callback) {
|
|
1821
|
-
if (didWarnAboutMessageChannel === false) {
|
|
1822
|
-
didWarnAboutMessageChannel = true;
|
|
1823
|
-
if (typeof MessageChannel === "undefined") error("This browser does not have a MessageChannel implementation, so enqueuing tasks via await act(async () => ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning.");
|
|
1824
|
-
}
|
|
1825
|
-
var channel = new MessageChannel();
|
|
1826
|
-
channel.port1.onmessage = callback;
|
|
1827
|
-
channel.port2.postMessage(void 0);
|
|
1828
|
-
};
|
|
1829
|
-
}
|
|
1830
|
-
return enqueueTaskImpl(task);
|
|
1831
|
-
}
|
|
1832
|
-
var actScopeDepth = 0;
|
|
1833
|
-
var didWarnNoAwaitAct = false;
|
|
1834
|
-
function act(callback) {
|
|
1835
|
-
var prevActScopeDepth = actScopeDepth;
|
|
1836
|
-
actScopeDepth++;
|
|
1837
|
-
if (ReactCurrentActQueue.current === null) ReactCurrentActQueue.current = [];
|
|
1838
|
-
var prevIsBatchingLegacy = ReactCurrentActQueue.isBatchingLegacy;
|
|
1839
|
-
var result;
|
|
1840
|
-
try {
|
|
1841
|
-
ReactCurrentActQueue.isBatchingLegacy = true;
|
|
1842
|
-
result = callback();
|
|
1843
|
-
if (!prevIsBatchingLegacy && ReactCurrentActQueue.didScheduleLegacyUpdate) {
|
|
1844
|
-
var queue = ReactCurrentActQueue.current;
|
|
1845
|
-
if (queue !== null) {
|
|
1846
|
-
ReactCurrentActQueue.didScheduleLegacyUpdate = false;
|
|
1847
|
-
flushActQueue(queue);
|
|
1848
|
-
}
|
|
1849
|
-
}
|
|
1850
|
-
} catch (error) {
|
|
1851
|
-
popActScope(prevActScopeDepth);
|
|
1852
|
-
throw error;
|
|
1853
|
-
} finally {
|
|
1854
|
-
ReactCurrentActQueue.isBatchingLegacy = prevIsBatchingLegacy;
|
|
1855
|
-
}
|
|
1856
|
-
if (result !== null && typeof result === "object" && typeof result.then === "function") {
|
|
1857
|
-
var thenableResult = result;
|
|
1858
|
-
var wasAwaited = false;
|
|
1859
|
-
var thenable = { then: function(resolve, reject) {
|
|
1860
|
-
wasAwaited = true;
|
|
1861
|
-
thenableResult.then(function(returnValue) {
|
|
1862
|
-
popActScope(prevActScopeDepth);
|
|
1863
|
-
if (actScopeDepth === 0) recursivelyFlushAsyncActWork(returnValue, resolve, reject);
|
|
1864
|
-
else resolve(returnValue);
|
|
1865
|
-
}, function(error) {
|
|
1866
|
-
popActScope(prevActScopeDepth);
|
|
1867
|
-
reject(error);
|
|
1868
|
-
});
|
|
1869
|
-
} };
|
|
1870
|
-
if (!didWarnNoAwaitAct && typeof Promise !== "undefined") Promise.resolve().then(function() {}).then(function() {
|
|
1871
|
-
if (!wasAwaited) {
|
|
1872
|
-
didWarnNoAwaitAct = true;
|
|
1873
|
-
error("You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);");
|
|
1874
|
-
}
|
|
1875
|
-
});
|
|
1876
|
-
return thenable;
|
|
1877
|
-
} else {
|
|
1878
|
-
var returnValue = result;
|
|
1879
|
-
popActScope(prevActScopeDepth);
|
|
1880
|
-
if (actScopeDepth === 0) {
|
|
1881
|
-
var _queue = ReactCurrentActQueue.current;
|
|
1882
|
-
if (_queue !== null) {
|
|
1883
|
-
flushActQueue(_queue);
|
|
1884
|
-
ReactCurrentActQueue.current = null;
|
|
1885
|
-
}
|
|
1886
|
-
return { then: function(resolve, reject) {
|
|
1887
|
-
if (ReactCurrentActQueue.current === null) {
|
|
1888
|
-
ReactCurrentActQueue.current = [];
|
|
1889
|
-
recursivelyFlushAsyncActWork(returnValue, resolve, reject);
|
|
1890
|
-
} else resolve(returnValue);
|
|
1891
|
-
} };
|
|
1892
|
-
} else return { then: function(resolve, reject) {
|
|
1893
|
-
resolve(returnValue);
|
|
1894
|
-
} };
|
|
1895
|
-
}
|
|
1896
|
-
}
|
|
1897
|
-
function popActScope(prevActScopeDepth) {
|
|
1898
|
-
if (prevActScopeDepth !== actScopeDepth - 1) error("You seem to have overlapping act() calls, this is not supported. Be sure to await previous act() calls before making a new one. ");
|
|
1899
|
-
actScopeDepth = prevActScopeDepth;
|
|
1900
|
-
}
|
|
1901
|
-
function recursivelyFlushAsyncActWork(returnValue, resolve, reject) {
|
|
1902
|
-
var queue = ReactCurrentActQueue.current;
|
|
1903
|
-
if (queue !== null) try {
|
|
1904
|
-
flushActQueue(queue);
|
|
1905
|
-
enqueueTask(function() {
|
|
1906
|
-
if (queue.length === 0) {
|
|
1907
|
-
ReactCurrentActQueue.current = null;
|
|
1908
|
-
resolve(returnValue);
|
|
1909
|
-
} else recursivelyFlushAsyncActWork(returnValue, resolve, reject);
|
|
1910
|
-
});
|
|
1911
|
-
} catch (error) {
|
|
1912
|
-
reject(error);
|
|
1913
|
-
}
|
|
1914
|
-
else resolve(returnValue);
|
|
1915
|
-
}
|
|
1916
|
-
var isFlushing = false;
|
|
1917
|
-
function flushActQueue(queue) {
|
|
1918
|
-
if (!isFlushing) {
|
|
1919
|
-
isFlushing = true;
|
|
1920
|
-
var i = 0;
|
|
1921
|
-
try {
|
|
1922
|
-
for (; i < queue.length; i++) {
|
|
1923
|
-
var callback = queue[i];
|
|
1924
|
-
do
|
|
1925
|
-
callback = callback(true);
|
|
1926
|
-
while (callback !== null);
|
|
1927
|
-
}
|
|
1928
|
-
queue.length = 0;
|
|
1929
|
-
} catch (error) {
|
|
1930
|
-
queue = queue.slice(i + 1);
|
|
1931
|
-
throw error;
|
|
1932
|
-
} finally {
|
|
1933
|
-
isFlushing = false;
|
|
1934
|
-
}
|
|
1935
|
-
}
|
|
1936
|
-
}
|
|
1937
|
-
var createElement$1 = createElementWithValidation;
|
|
1938
|
-
var cloneElement$1 = cloneElementWithValidation;
|
|
1939
|
-
var createFactory = createFactoryWithValidation;
|
|
1940
|
-
exports.Children = {
|
|
1941
|
-
map: mapChildren,
|
|
1942
|
-
forEach: forEachChildren,
|
|
1943
|
-
count: countChildren,
|
|
1944
|
-
toArray,
|
|
1945
|
-
only: onlyChild
|
|
1946
|
-
};
|
|
1947
|
-
exports.Component = Component;
|
|
1948
|
-
exports.Fragment = REACT_FRAGMENT_TYPE;
|
|
1949
|
-
exports.Profiler = REACT_PROFILER_TYPE;
|
|
1950
|
-
exports.PureComponent = PureComponent;
|
|
1951
|
-
exports.StrictMode = REACT_STRICT_MODE_TYPE;
|
|
1952
|
-
exports.Suspense = REACT_SUSPENSE_TYPE;
|
|
1953
|
-
exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals;
|
|
1954
|
-
exports.act = act;
|
|
1955
|
-
exports.cloneElement = cloneElement$1;
|
|
1956
|
-
exports.createContext = createContext;
|
|
1957
|
-
exports.createElement = createElement$1;
|
|
1958
|
-
exports.createFactory = createFactory;
|
|
1959
|
-
exports.createRef = createRef;
|
|
1960
|
-
exports.forwardRef = forwardRef;
|
|
1961
|
-
exports.isValidElement = isValidElement;
|
|
1962
|
-
exports.lazy = lazy;
|
|
1963
|
-
exports.memo = memo;
|
|
1964
|
-
exports.startTransition = startTransition;
|
|
1965
|
-
exports.unstable_act = act;
|
|
1966
|
-
exports.useCallback = useCallback;
|
|
1967
|
-
exports.useContext = useContext;
|
|
1968
|
-
exports.useDebugValue = useDebugValue;
|
|
1969
|
-
exports.useDeferredValue = useDeferredValue;
|
|
1970
|
-
exports.useEffect = useEffect;
|
|
1971
|
-
exports.useId = useId;
|
|
1972
|
-
exports.useImperativeHandle = useImperativeHandle;
|
|
1973
|
-
exports.useInsertionEffect = useInsertionEffect;
|
|
1974
|
-
exports.useLayoutEffect = useLayoutEffect;
|
|
1975
|
-
exports.useMemo = useMemo;
|
|
1976
|
-
exports.useReducer = useReducer;
|
|
1977
|
-
exports.useRef = useRef;
|
|
1978
|
-
exports.useState = useState;
|
|
1979
|
-
exports.useSyncExternalStore = useSyncExternalStore;
|
|
1980
|
-
exports.useTransition = useTransition;
|
|
1981
|
-
exports.version = ReactVersion;
|
|
1982
|
-
if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop === "function") __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(/* @__PURE__ */ new Error());
|
|
1983
|
-
})();
|
|
1984
|
-
}));
|
|
1985
|
-
//#endregion
|
|
1986
|
-
//#region ../shared/dist/lib/react.js
|
|
1987
|
-
var react = (/* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
1988
|
-
if (process.env.NODE_ENV === "production") module.exports = require_react_production_min();
|
|
1989
|
-
else module.exports = require_react_development();
|
|
1990
|
-
})))();
|
|
1991
|
-
react.createElement;
|
|
1992
|
-
react.Fragment;
|
|
1993
|
-
react.useState;
|
|
1994
|
-
react.useEffect;
|
|
1995
|
-
react.useMemo;
|
|
1996
|
-
react.useCallback;
|
|
1997
|
-
react.useRef;
|
|
1998
|
-
react.useSyncExternalStore;
|
|
54
|
+
//#region ../shared/dist/api/long-task.js
|
|
55
|
+
function runsRouteOf(unit) {
|
|
56
|
+
return `${unit}/runs`;
|
|
57
|
+
}
|
|
1999
58
|
//#endregion
|
|
2000
59
|
//#region ../shared/dist/lib/text.js
|
|
2001
60
|
function quoteShellArg(value) {
|
|
@@ -2114,12 +173,93 @@ var PROVISION_ACTIONS = [
|
|
|
2114
173
|
"install",
|
|
2115
174
|
"update",
|
|
2116
175
|
"uninstall",
|
|
176
|
+
"install-bundle",
|
|
177
|
+
"update-bundle",
|
|
178
|
+
"remove-bundle",
|
|
179
|
+
"cancel-install",
|
|
2117
180
|
"update-dependency"
|
|
2118
181
|
];
|
|
2119
182
|
var DEPENDENCY_ACTIONS = ["update-dependency"];
|
|
2120
183
|
function isDependencyAction(action) {
|
|
2121
184
|
return DEPENDENCY_ACTIONS.includes(action);
|
|
2122
185
|
}
|
|
186
|
+
function provisionTargetOf(action) {
|
|
187
|
+
if (action === "update-dependency") return "id";
|
|
188
|
+
if (action === "install-bundle") return "spec";
|
|
189
|
+
if (action === "remove-bundle") return "name";
|
|
190
|
+
if (action === "cancel-install") return "requestId";
|
|
191
|
+
return "unit";
|
|
192
|
+
}
|
|
193
|
+
var TARGET_CODE = {
|
|
194
|
+
unit: "workbench/no-unit",
|
|
195
|
+
id: "workbench/no-id",
|
|
196
|
+
spec: "workbench/no-spec",
|
|
197
|
+
name: "workbench/no-name",
|
|
198
|
+
requestId: "workbench/no-request-id"
|
|
199
|
+
};
|
|
200
|
+
function asRecord$3(value) {
|
|
201
|
+
return typeof value === "object" && value !== null ? value : {};
|
|
202
|
+
}
|
|
203
|
+
function stringsOf$1(value) {
|
|
204
|
+
if (!Array.isArray(value)) return void 0;
|
|
205
|
+
const items = value.filter((item) => typeof item === "string" && item.trim() !== "");
|
|
206
|
+
return items.length === 0 ? void 0 : items;
|
|
207
|
+
}
|
|
208
|
+
function requestOf$1(action, value) {
|
|
209
|
+
if (action === "update-dependency") return {
|
|
210
|
+
action,
|
|
211
|
+
id: value
|
|
212
|
+
};
|
|
213
|
+
if (action === "install-bundle") return {
|
|
214
|
+
action,
|
|
215
|
+
spec: value
|
|
216
|
+
};
|
|
217
|
+
if (action === "remove-bundle") return {
|
|
218
|
+
action,
|
|
219
|
+
name: value
|
|
220
|
+
};
|
|
221
|
+
if (action === "cancel-install") return {
|
|
222
|
+
action,
|
|
223
|
+
requestId: value
|
|
224
|
+
};
|
|
225
|
+
return {
|
|
226
|
+
action,
|
|
227
|
+
unit: value
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
function parseProvisionBody(body) {
|
|
231
|
+
const raw = asRecord$3(body);
|
|
232
|
+
const action = raw.action;
|
|
233
|
+
if (typeof action !== "string" || !PROVISION_ACTIONS.includes(action)) return {
|
|
234
|
+
ok: false,
|
|
235
|
+
code: "workbench/bad-action",
|
|
236
|
+
message: `不认识的 action:${String(action)}(可用:${PROVISION_ACTIONS.join(" / ")})`
|
|
237
|
+
};
|
|
238
|
+
const wanted = action;
|
|
239
|
+
const target = provisionTargetOf(wanted);
|
|
240
|
+
const value = raw[target];
|
|
241
|
+
if (typeof value !== "string" || value.trim() === "") return {
|
|
242
|
+
ok: false,
|
|
243
|
+
code: TARGET_CODE[target],
|
|
244
|
+
message: `缺少 ${target}`
|
|
245
|
+
};
|
|
246
|
+
if (wanted !== "install-bundle") return {
|
|
247
|
+
ok: true,
|
|
248
|
+
request: requestOf$1(wanted, value.trim())
|
|
249
|
+
};
|
|
250
|
+
const registry = typeof raw.registry === "string" && raw.registry.trim() !== "" ? raw.registry.trim() : void 0;
|
|
251
|
+
const approvedBuilds = stringsOf$1(raw.approvedBuilds);
|
|
252
|
+
const requestId = typeof raw.requestId === "string" && raw.requestId.trim() !== "" ? raw.requestId.trim() : void 0;
|
|
253
|
+
return {
|
|
254
|
+
ok: true,
|
|
255
|
+
request: {
|
|
256
|
+
...requestOf$1(wanted, value.trim()),
|
|
257
|
+
...registry === void 0 ? {} : { registry },
|
|
258
|
+
...approvedBuilds === void 0 ? {} : { approvedBuilds },
|
|
259
|
+
...requestId === void 0 ? {} : { requestId }
|
|
260
|
+
}
|
|
261
|
+
};
|
|
262
|
+
}
|
|
2123
263
|
//#endregion
|
|
2124
264
|
//#region ../shared/dist/host/opencli.js
|
|
2125
265
|
var SITE_SESSION_ARGS = ["--site-session", "persistent"];
|
|
@@ -2292,38 +432,18 @@ function registerProvision(ctx, provision, log) {
|
|
|
2292
432
|
});
|
|
2293
433
|
return;
|
|
2294
434
|
}
|
|
2295
|
-
const
|
|
2296
|
-
|
|
2297
|
-
if (typeof action !== "string" || !PROVISION_ACTIONS.includes(action)) {
|
|
2298
|
-
sendJson(res, 400, {
|
|
2299
|
-
ok: false,
|
|
2300
|
-
error: {
|
|
2301
|
-
code: "workbench/bad-action",
|
|
2302
|
-
message: `不认识的 action:${String(action)}(可用:${PROVISION_ACTIONS.join(" / ")})`
|
|
2303
|
-
}
|
|
2304
|
-
});
|
|
2305
|
-
return;
|
|
2306
|
-
}
|
|
2307
|
-
const wanted = action;
|
|
2308
|
-
const target = isDependencyAction(wanted) ? body.id : body.unit;
|
|
2309
|
-
if (typeof target !== "string" || target.trim() === "") {
|
|
435
|
+
const parsed = parseProvisionBody(payload);
|
|
436
|
+
if (!parsed.ok) {
|
|
2310
437
|
sendJson(res, 400, {
|
|
2311
438
|
ok: false,
|
|
2312
439
|
error: {
|
|
2313
|
-
code:
|
|
2314
|
-
message:
|
|
440
|
+
code: parsed.code,
|
|
441
|
+
message: parsed.message
|
|
2315
442
|
}
|
|
2316
443
|
});
|
|
2317
444
|
return;
|
|
2318
445
|
}
|
|
2319
|
-
const
|
|
2320
|
-
const request = isDependencyAction(wanted) ? {
|
|
2321
|
-
action: wanted,
|
|
2322
|
-
id: key
|
|
2323
|
-
} : {
|
|
2324
|
-
action: wanted,
|
|
2325
|
-
unit: key
|
|
2326
|
-
};
|
|
446
|
+
const request = parsed.request;
|
|
2327
447
|
try {
|
|
2328
448
|
const result = await provision.handle(request);
|
|
2329
449
|
log?.bump(provisionFacts(provision, request));
|
|
@@ -3077,6 +1197,279 @@ function createWorkspaceStore(options) {
|
|
|
3077
1197
|
};
|
|
3078
1198
|
}
|
|
3079
1199
|
//#endregion
|
|
1200
|
+
//#region src/shared/api/host/bundle-manager.ts
|
|
1201
|
+
var MANAGER_SERVICE$1 = "pluginManager";
|
|
1202
|
+
var APPLICATIONS = [
|
|
1203
|
+
"applied",
|
|
1204
|
+
"restart-required",
|
|
1205
|
+
"overridden",
|
|
1206
|
+
"failed",
|
|
1207
|
+
"cancelled"
|
|
1208
|
+
];
|
|
1209
|
+
var STAGES = [
|
|
1210
|
+
"install",
|
|
1211
|
+
"enable",
|
|
1212
|
+
"remove"
|
|
1213
|
+
];
|
|
1214
|
+
var PROBLEMS = [
|
|
1215
|
+
"invalid-spec",
|
|
1216
|
+
"already-installed",
|
|
1217
|
+
"not-found",
|
|
1218
|
+
"not-a-package",
|
|
1219
|
+
"not-a-bundle",
|
|
1220
|
+
"network",
|
|
1221
|
+
"unknown"
|
|
1222
|
+
];
|
|
1223
|
+
var SPEC_KINDS = [
|
|
1224
|
+
"registry",
|
|
1225
|
+
"path",
|
|
1226
|
+
"git",
|
|
1227
|
+
"tarball"
|
|
1228
|
+
];
|
|
1229
|
+
var FAILURE_KINDS = [
|
|
1230
|
+
"pnpm-missing",
|
|
1231
|
+
"timeout",
|
|
1232
|
+
"not-found",
|
|
1233
|
+
"no-matching-version",
|
|
1234
|
+
"network",
|
|
1235
|
+
"disk-full",
|
|
1236
|
+
"permission",
|
|
1237
|
+
"build-blocked",
|
|
1238
|
+
"integrity",
|
|
1239
|
+
"unknown"
|
|
1240
|
+
];
|
|
1241
|
+
var CANCELLATIONS = [
|
|
1242
|
+
"cancelled",
|
|
1243
|
+
"too-late",
|
|
1244
|
+
"not-running"
|
|
1245
|
+
];
|
|
1246
|
+
function asRecord$2(value) {
|
|
1247
|
+
return typeof value === "object" && value !== null ? value : void 0;
|
|
1248
|
+
}
|
|
1249
|
+
function asText$2(value) {
|
|
1250
|
+
return typeof value === "string" ? value : "";
|
|
1251
|
+
}
|
|
1252
|
+
function pick(allowed, value) {
|
|
1253
|
+
return typeof value === "string" && allowed.includes(value) ? value : void 0;
|
|
1254
|
+
}
|
|
1255
|
+
function asRegistry(value) {
|
|
1256
|
+
if (value === null) return null;
|
|
1257
|
+
return typeof value === "string" ? value : void 0;
|
|
1258
|
+
}
|
|
1259
|
+
function asTextArray(value) {
|
|
1260
|
+
return Array.isArray(value) ? value.filter((item) => typeof item === "string") : [];
|
|
1261
|
+
}
|
|
1262
|
+
function asRegistries(raw) {
|
|
1263
|
+
const record = asRecord$2(raw);
|
|
1264
|
+
if (record === void 0) return null;
|
|
1265
|
+
const registry = asRegistry(record.registry);
|
|
1266
|
+
if (registry === void 0) return null;
|
|
1267
|
+
return {
|
|
1268
|
+
registry,
|
|
1269
|
+
fallbackRegistries: asTextArray(record.fallbackRegistries),
|
|
1270
|
+
resolved: typeof record.resolved === "string" ? record.resolved : null
|
|
1271
|
+
};
|
|
1272
|
+
}
|
|
1273
|
+
function asPackageResult(raw) {
|
|
1274
|
+
const record = asRecord$2(raw);
|
|
1275
|
+
if (record === void 0) return void 0;
|
|
1276
|
+
const kind = pick(FAILURE_KINDS, record.kind);
|
|
1277
|
+
return {
|
|
1278
|
+
exitCode: typeof record.exitCode === "number" ? record.exitCode : -1,
|
|
1279
|
+
output: asText$2(record.output),
|
|
1280
|
+
truncated: record.truncated === true,
|
|
1281
|
+
logPath: asText$2(record.logPath),
|
|
1282
|
+
...kind === void 0 ? {} : { kind }
|
|
1283
|
+
};
|
|
1284
|
+
}
|
|
1285
|
+
function asChange(raw) {
|
|
1286
|
+
const record = asRecord$2(raw);
|
|
1287
|
+
if (record === void 0) return null;
|
|
1288
|
+
const application = pick(APPLICATIONS, record.application);
|
|
1289
|
+
const stage = pick(STAGES, record.stage);
|
|
1290
|
+
if (application === void 0 || stage === void 0) return null;
|
|
1291
|
+
const error = asRecord$2(record.error);
|
|
1292
|
+
const packageResult = asPackageResult(record.packageResult);
|
|
1293
|
+
const pendingBuilds = asTextArray(record.pendingBuilds);
|
|
1294
|
+
const failedAt = pick(["registry", "spec-host"], record.failedAt);
|
|
1295
|
+
const bundle = asText$2(record.bundle);
|
|
1296
|
+
const errorCode = error === void 0 ? "" : asText$2(error.code);
|
|
1297
|
+
const errorDetail = error === void 0 ? "" : asText$2(error.diagnostic);
|
|
1298
|
+
return {
|
|
1299
|
+
application,
|
|
1300
|
+
stage,
|
|
1301
|
+
changed: record.changed === true,
|
|
1302
|
+
target: asText$2(record.target),
|
|
1303
|
+
...bundle === "" ? {} : { bundle },
|
|
1304
|
+
...errorCode === "" ? {} : { errorCode },
|
|
1305
|
+
...errorDetail === "" ? {} : { errorDetail },
|
|
1306
|
+
...packageResult === void 0 ? {} : { packageResult },
|
|
1307
|
+
...pendingBuilds.length === 0 ? {} : { pendingBuilds },
|
|
1308
|
+
...failedAt === void 0 ? {} : { failedAt }
|
|
1309
|
+
};
|
|
1310
|
+
}
|
|
1311
|
+
function asInspection(raw) {
|
|
1312
|
+
const record = asRecord$2(raw);
|
|
1313
|
+
if (record === void 0) return null;
|
|
1314
|
+
const status = asText$2(record.status);
|
|
1315
|
+
if (status === "refused") {
|
|
1316
|
+
const problem = pick(PROBLEMS, record.problem) ?? "unknown";
|
|
1317
|
+
const registries = Array.isArray(record.registries) ? record.registries.map(asRegistry).filter((item) => item !== void 0) : [];
|
|
1318
|
+
return {
|
|
1319
|
+
status: "refused",
|
|
1320
|
+
problem,
|
|
1321
|
+
reason: asText$2(record.reason),
|
|
1322
|
+
...registries.length === 0 ? {} : { registries }
|
|
1323
|
+
};
|
|
1324
|
+
}
|
|
1325
|
+
if (status !== "accepted") return null;
|
|
1326
|
+
const kind = pick(SPEC_KINDS, record.kind);
|
|
1327
|
+
const registry = asRegistry(record.registry);
|
|
1328
|
+
if (kind === void 0 || registry === void 0) return null;
|
|
1329
|
+
const name = asText$2(record.name);
|
|
1330
|
+
const version = asText$2(record.version);
|
|
1331
|
+
const description = asText$2(record.description);
|
|
1332
|
+
const host = asText$2(record.host);
|
|
1333
|
+
return {
|
|
1334
|
+
status: "accepted",
|
|
1335
|
+
kind,
|
|
1336
|
+
bundle: typeof record.bundle === "boolean" ? record.bundle : null,
|
|
1337
|
+
registry,
|
|
1338
|
+
...name === "" ? {} : { name },
|
|
1339
|
+
...version === "" ? {} : { version },
|
|
1340
|
+
...description === "" ? {} : { description },
|
|
1341
|
+
...host === "" ? {} : { host }
|
|
1342
|
+
};
|
|
1343
|
+
}
|
|
1344
|
+
function readBundleManager(ctx) {
|
|
1345
|
+
const face = ctx.get(MANAGER_SERVICE$1);
|
|
1346
|
+
if (face === void 0) return void 0;
|
|
1347
|
+
if (typeof face.installBundle !== "function" || typeof face.removeBundle !== "function") return void 0;
|
|
1348
|
+
return {
|
|
1349
|
+
async registries() {
|
|
1350
|
+
if (typeof face.registries !== "function") return null;
|
|
1351
|
+
return asRegistries(await face.registries());
|
|
1352
|
+
},
|
|
1353
|
+
async inspect(spec, registry) {
|
|
1354
|
+
if (typeof face.inspect !== "function") return null;
|
|
1355
|
+
return asInspection(await face.inspect(spec, registry === void 0 ? void 0 : { registry }));
|
|
1356
|
+
},
|
|
1357
|
+
async install(request) {
|
|
1358
|
+
const options = {
|
|
1359
|
+
...request.registry === void 0 ? {} : { registry: request.registry },
|
|
1360
|
+
...request.requestId === void 0 ? {} : { requestId: request.requestId },
|
|
1361
|
+
...request.approvedBuilds === void 0 ? {} : { approvedBuilds: request.approvedBuilds }
|
|
1362
|
+
};
|
|
1363
|
+
return asChange(await face.installBundle?.(request.spec, options));
|
|
1364
|
+
},
|
|
1365
|
+
async remove(name) {
|
|
1366
|
+
return asChange(await face.removeBundle?.(name));
|
|
1367
|
+
},
|
|
1368
|
+
async cancel(requestId) {
|
|
1369
|
+
if (typeof face.cancelInstall !== "function") return null;
|
|
1370
|
+
return pick(CANCELLATIONS, (asRecord$2(await face.cancelInstall(requestId)) ?? {}).status) ?? null;
|
|
1371
|
+
}
|
|
1372
|
+
};
|
|
1373
|
+
}
|
|
1374
|
+
//#endregion
|
|
1375
|
+
//#region src/shared/api/host/installed-module.ts
|
|
1376
|
+
var PACKAGE_NAME = /^(?:@[a-z0-9][a-z0-9._~-]*\/)?[a-z0-9][a-z0-9._~-]*$/;
|
|
1377
|
+
function asRecord$1(value) {
|
|
1378
|
+
return typeof value === "object" && value !== null ? value : void 0;
|
|
1379
|
+
}
|
|
1380
|
+
function asText$1(value) {
|
|
1381
|
+
return typeof value === "string" ? value : "";
|
|
1382
|
+
}
|
|
1383
|
+
function isPackageName(value) {
|
|
1384
|
+
return value.length <= 214 && PACKAGE_NAME.test(value);
|
|
1385
|
+
}
|
|
1386
|
+
function profileDirOf(ctx) {
|
|
1387
|
+
const profile = ctx.get("profileContext");
|
|
1388
|
+
const dir = typeof profile?.dir === "string" ? profile.dir.trim() : "";
|
|
1389
|
+
return dir === "" ? null : dir;
|
|
1390
|
+
}
|
|
1391
|
+
function stringsOf(value) {
|
|
1392
|
+
return Array.isArray(value) ? value.filter((item) => typeof item === "string") : [];
|
|
1393
|
+
}
|
|
1394
|
+
function profileModules(profileDir) {
|
|
1395
|
+
if (profileDir === null) return [];
|
|
1396
|
+
let manifest;
|
|
1397
|
+
try {
|
|
1398
|
+
manifest = JSON.parse(fs.readFileSync(path.join(profileDir, "package.json"), "utf8"));
|
|
1399
|
+
} catch {
|
|
1400
|
+
return [];
|
|
1401
|
+
}
|
|
1402
|
+
const record = asRecord$1(manifest);
|
|
1403
|
+
if (record === void 0) return [];
|
|
1404
|
+
const bundles = stringsOf(asRecord$1(asRecord$1(record.dsh)?.profile)?.bundles);
|
|
1405
|
+
const names = bundles.length > 0 ? bundles : Object.keys(asRecord$1(record.dependencies) ?? {});
|
|
1406
|
+
const found = [];
|
|
1407
|
+
for (const pkg of names) {
|
|
1408
|
+
const read = readInstalledModule(profileDir, pkg);
|
|
1409
|
+
if (read.kind === "module") found.push({
|
|
1410
|
+
pkg: read.pkg,
|
|
1411
|
+
unit: read.unit,
|
|
1412
|
+
version: read.version,
|
|
1413
|
+
...read.registry === void 0 ? {} : { registry: read.registry }
|
|
1414
|
+
});
|
|
1415
|
+
}
|
|
1416
|
+
return found;
|
|
1417
|
+
}
|
|
1418
|
+
function registryFromLockfile(profileDir, pkg) {
|
|
1419
|
+
let text;
|
|
1420
|
+
try {
|
|
1421
|
+
text = fs.readFileSync(path.join(profileDir, "pnpm-lock.yaml"), "utf8");
|
|
1422
|
+
} catch {
|
|
1423
|
+
return;
|
|
1424
|
+
}
|
|
1425
|
+
const at = text.indexOf(` ${pkg}@`);
|
|
1426
|
+
const quoted = at === -1 ? text.indexOf(` '${pkg}@`) : at;
|
|
1427
|
+
if (quoted === -1) return void 0;
|
|
1428
|
+
const headerEnd = text.indexOf("\n", quoted);
|
|
1429
|
+
const end = headerEnd === -1 ? -1 : text.indexOf("\n ", headerEnd + 1);
|
|
1430
|
+
const block = text.slice(quoted, end === -1 ? quoted + 900 : end);
|
|
1431
|
+
const tarball = /tarball:\s*([^\s,}]+)/.exec(block)?.[1];
|
|
1432
|
+
if (tarball === void 0 || !tarball.startsWith("http")) return void 0;
|
|
1433
|
+
const cut = tarball.lastIndexOf(`/${pkg}/`);
|
|
1434
|
+
if (cut <= 8) return void 0;
|
|
1435
|
+
return tarball.slice(0, cut);
|
|
1436
|
+
}
|
|
1437
|
+
function readInstalledModule(profileDir, pkg) {
|
|
1438
|
+
if (profileDir === null || !isPackageName(pkg)) return {
|
|
1439
|
+
kind: "unknown",
|
|
1440
|
+
pkg
|
|
1441
|
+
};
|
|
1442
|
+
let manifest;
|
|
1443
|
+
try {
|
|
1444
|
+
manifest = JSON.parse(fs.readFileSync(path.join(profileDir, "node_modules", pkg, "package.json"), "utf8"));
|
|
1445
|
+
} catch {
|
|
1446
|
+
return {
|
|
1447
|
+
kind: "unknown",
|
|
1448
|
+
pkg
|
|
1449
|
+
};
|
|
1450
|
+
}
|
|
1451
|
+
const record = asRecord$1(manifest);
|
|
1452
|
+
if (record === void 0) return {
|
|
1453
|
+
kind: "unknown",
|
|
1454
|
+
pkg
|
|
1455
|
+
};
|
|
1456
|
+
const declared = asRecord$1(asRecord$1(record.dsh)?.workbench);
|
|
1457
|
+
const unit = declared === void 0 ? "" : asText$1(declared.unit);
|
|
1458
|
+
if (unit === "") return {
|
|
1459
|
+
kind: "not-module",
|
|
1460
|
+
pkg
|
|
1461
|
+
};
|
|
1462
|
+
const declaredRegistry = asText$1(asRecord$1(record.publishConfig)?.registry);
|
|
1463
|
+
const registry = declaredRegistry === "" ? registryFromLockfile(profileDir, pkg) : declaredRegistry;
|
|
1464
|
+
return {
|
|
1465
|
+
kind: "module",
|
|
1466
|
+
pkg,
|
|
1467
|
+
unit,
|
|
1468
|
+
version: asText$1(record.version),
|
|
1469
|
+
...registry === "" ? {} : { registry }
|
|
1470
|
+
};
|
|
1471
|
+
}
|
|
1472
|
+
//#endregion
|
|
3080
1473
|
//#region src/shared/api/host/release.ts
|
|
3081
1474
|
function parseLedgerVersion(stdout, name) {
|
|
3082
1475
|
const parsed = parseJsonLoose(stdout);
|
|
@@ -3252,12 +1645,6 @@ function sharedDependencies(options) {
|
|
|
3252
1645
|
};
|
|
3253
1646
|
});
|
|
3254
1647
|
}
|
|
3255
|
-
function pluginNeedOf(target) {
|
|
3256
|
-
for (const manifest of target.declarers) {
|
|
3257
|
-
const need = (manifest.env?.plugins ?? []).find((item) => item.name === target.name);
|
|
3258
|
-
if (need !== void 0) return need;
|
|
3259
|
-
}
|
|
3260
|
-
}
|
|
3261
1648
|
function libNeedOf(target) {
|
|
3262
1649
|
for (const manifest of target.declarers) {
|
|
3263
1650
|
const need = (manifest.env?.libs ?? []).find((item) => item.name === target.name);
|
|
@@ -3265,22 +1652,27 @@ function libNeedOf(target) {
|
|
|
3265
1652
|
}
|
|
3266
1653
|
}
|
|
3267
1654
|
function dependencyCommandPlan(options) {
|
|
3268
|
-
const { target, capability, command } = options;
|
|
1655
|
+
const { target, capability, capabilities, command } = options;
|
|
3269
1656
|
if (target.kind === "plugin") {
|
|
3270
|
-
|
|
3271
|
-
|
|
3272
|
-
|
|
3273
|
-
|
|
3274
|
-
|
|
3275
|
-
|
|
3276
|
-
|
|
3277
|
-
|
|
3278
|
-
|
|
3279
|
-
|
|
3280
|
-
|
|
3281
|
-
|
|
3282
|
-
|
|
3283
|
-
|
|
1657
|
+
let outdated = false;
|
|
1658
|
+
for (const manifest of target.declarers) {
|
|
1659
|
+
const need = (manifest.env?.plugins ?? []).find((item) => item.name === target.name);
|
|
1660
|
+
if (need === void 0) continue;
|
|
1661
|
+
const seen = (capabilities?.get(manifest.id) ?? capability)?.plugins?.find((item) => item.name === target.name);
|
|
1662
|
+
if (seen?.status !== "outdated") continue;
|
|
1663
|
+
outdated = true;
|
|
1664
|
+
const release = seen.release;
|
|
1665
|
+
const latest = release?.latest;
|
|
1666
|
+
if (release === void 0 || latest === void 0 || !isNewerVersion(latest, release.installed)) continue;
|
|
1667
|
+
const upgrade = resolvePluginSource(need.installSource, process.env, {
|
|
1668
|
+
command,
|
|
1669
|
+
plugin: target.name,
|
|
1670
|
+
version: latest,
|
|
1671
|
+
mode: "update"
|
|
1672
|
+
});
|
|
1673
|
+
if (upgrade.ok === true) return upgrade.commands;
|
|
1674
|
+
}
|
|
1675
|
+
return outdated ? [{ line: `${quoteShellArg(command)} plugin update ${quoteShellArg(target.name)}` }] : void 0;
|
|
3284
1676
|
}
|
|
3285
1677
|
const need = libNeedOf(target);
|
|
3286
1678
|
if (need === void 0) return void 0;
|
|
@@ -3298,13 +1690,18 @@ function sourceProblemText(problem, env) {
|
|
|
3298
1690
|
}
|
|
3299
1691
|
//#endregion
|
|
3300
1692
|
//#region src/modules/panels/model/market.ts
|
|
1693
|
+
function bundleNameOf(change, spec) {
|
|
1694
|
+
if (change.bundle !== void 0 && change.bundle !== "") return change.bundle;
|
|
1695
|
+
const at = spec.lastIndexOf("@");
|
|
1696
|
+
return at > 0 ? spec.slice(0, at) : spec;
|
|
1697
|
+
}
|
|
3301
1698
|
function createMarketService(options) {
|
|
3302
|
-
const { manifests, probe, shell, logger, onInstalled, onUninstalled, isReleased } = options;
|
|
1699
|
+
const { manifests, manifestsNow, probe, shell, logger, onInstalled, onUninstalled, isReleased, bundles, installed, modules } = options;
|
|
3303
1700
|
const command = options.command ?? "opencli";
|
|
3304
|
-
const catalog = manifests.filter((manifest) => (manifest.env?.plugins ?? []).length > 0 || (manifest.env?.libs ?? []).length > 0);
|
|
1701
|
+
const catalog = () => (manifestsNow?.() ?? manifests).filter((manifest) => (manifest.env?.plugins ?? []).length > 0 || (manifest.env?.libs ?? []).length > 0);
|
|
3305
1702
|
function requireEntry(unit) {
|
|
3306
|
-
const manifest = catalog.find((item) => item.id === unit);
|
|
3307
|
-
if (manifest === void 0) throw new Error(`市场里没有这个模块:${unit}(可安装:${catalog.map((item) => item.id).join(", ") || "(空)"})`);
|
|
1703
|
+
const manifest = catalog().find((item) => item.id === unit);
|
|
1704
|
+
if (manifest === void 0) throw new Error(`市场里没有这个模块:${unit}(可安装:${catalog().map((item) => item.id).join(", ") || "(空)"})`);
|
|
3308
1705
|
return manifest;
|
|
3309
1706
|
}
|
|
3310
1707
|
async function capabilityOf(unit, force = false) {
|
|
@@ -3357,25 +1754,25 @@ function createMarketService(options) {
|
|
|
3357
1754
|
for (const step of commands) await run(step.line, step.optional === true);
|
|
3358
1755
|
}
|
|
3359
1756
|
async function probeSharing(request) {
|
|
3360
|
-
for (const id of affectedUnitsOf(catalog, request)) if (id !== request.unit) await capabilityOf(id, true);
|
|
1757
|
+
for (const id of affectedUnitsOf(catalog(), request)) if (id !== request.unit) await capabilityOf(id, true);
|
|
3361
1758
|
}
|
|
3362
1759
|
async function snapshot(force = false) {
|
|
3363
|
-
const modules = await Promise.all(catalog.map((manifest) => entryOf(manifest.id, force)));
|
|
1760
|
+
const modules = await Promise.all(catalog().map((manifest) => entryOf(manifest.id, force)));
|
|
3364
1761
|
const capabilities = new Map(modules.map((entry) => [entry.unit, entry.capability]));
|
|
3365
1762
|
return {
|
|
3366
1763
|
modules,
|
|
3367
1764
|
shared: sharedDependencies({
|
|
3368
|
-
manifests: catalog,
|
|
1765
|
+
manifests: catalog(),
|
|
3369
1766
|
capabilities,
|
|
3370
1767
|
...isReleased === void 0 ? {} : { isReleased }
|
|
3371
1768
|
})
|
|
3372
1769
|
};
|
|
3373
1770
|
}
|
|
3374
1771
|
function requireDependency(id) {
|
|
3375
|
-
const target = findDependency(catalog, id, isReleased);
|
|
1772
|
+
const target = findDependency(catalog(), id, isReleased);
|
|
3376
1773
|
if (target === void 0) {
|
|
3377
1774
|
const known = sharedDependencies({
|
|
3378
|
-
manifests: catalog,
|
|
1775
|
+
manifests: catalog(),
|
|
3379
1776
|
capabilities: /* @__PURE__ */ new Map()
|
|
3380
1777
|
}).map((item) => item.id);
|
|
3381
1778
|
throw new Error(`市场里没有这份依赖:${id}(可用的:${known.join(", ") || "(空)"})`);
|
|
@@ -3384,11 +1781,13 @@ function createMarketService(options) {
|
|
|
3384
1781
|
}
|
|
3385
1782
|
async function updateDependencyRow(id) {
|
|
3386
1783
|
const target = requireDependency(id);
|
|
3387
|
-
|
|
1784
|
+
const seen = /* @__PURE__ */ new Map();
|
|
1785
|
+
for (const manifest of target.declarers) seen.set(manifest.id, await capabilityOf(manifest.id, true));
|
|
3388
1786
|
const primary = target.declarers[0];
|
|
3389
1787
|
const commands = dependencyCommandPlan({
|
|
3390
1788
|
target,
|
|
3391
|
-
capability: primary === void 0 ? void 0 :
|
|
1789
|
+
capability: primary === void 0 ? void 0 : seen.get(primary.id),
|
|
1790
|
+
capabilities: seen,
|
|
3392
1791
|
command
|
|
3393
1792
|
});
|
|
3394
1793
|
if (commands !== void 0) {
|
|
@@ -3398,7 +1797,53 @@ function createMarketService(options) {
|
|
|
3398
1797
|
}
|
|
3399
1798
|
return (await snapshot()).shared;
|
|
3400
1799
|
}
|
|
3401
|
-
|
|
1800
|
+
function requireBundles() {
|
|
1801
|
+
if (bundles === void 0) throw new Error("这个 profile 里没有插件管理器,装不了模块包。");
|
|
1802
|
+
return bundles;
|
|
1803
|
+
}
|
|
1804
|
+
async function dropEnv(unit, env, before) {
|
|
1805
|
+
const kept = /* @__PURE__ */ new Set();
|
|
1806
|
+
const onMachine = new Set((before.plugins ?? []).filter((state) => state.status !== "missing").map((state) => state.name));
|
|
1807
|
+
const unknown = before.plugins === void 0;
|
|
1808
|
+
for (const need of env?.plugins ?? []) {
|
|
1809
|
+
const keepers = catalog().filter((item) => item.id !== unit && (item.env?.plugins ?? []).some((other) => other.name === need.name) && !(isReleased?.(item.id) ?? false));
|
|
1810
|
+
if (keepers.length > 0) {
|
|
1811
|
+
for (const item of keepers) kept.add(item.id);
|
|
1812
|
+
continue;
|
|
1813
|
+
}
|
|
1814
|
+
if (!unknown && !onMachine.has(need.name)) continue;
|
|
1815
|
+
await run(`${quoteShellArg(command)} plugin uninstall ${quoteShellArg(need.name)}`);
|
|
1816
|
+
}
|
|
1817
|
+
for (const need of env?.libs ?? []) {
|
|
1818
|
+
const keepers = catalog().filter((item) => item.id !== unit && (item.env?.libs ?? []).some((other) => other.name === need.name) && !(isReleased?.(item.id) ?? false));
|
|
1819
|
+
if (keepers.length > 0) {
|
|
1820
|
+
for (const item of keepers) kept.add(item.id);
|
|
1821
|
+
continue;
|
|
1822
|
+
}
|
|
1823
|
+
const present = (before.libs ?? []).some((state) => state.name === need.name && state.status !== "missing");
|
|
1824
|
+
if (before.libs !== void 0 && !present) continue;
|
|
1825
|
+
await run(`npm uninstall --prefix ${quoteShellArg(libsPrefix())} ${quoteShellArg(need.name)}`, true);
|
|
1826
|
+
}
|
|
1827
|
+
return [...kept];
|
|
1828
|
+
}
|
|
1829
|
+
async function supplyAfter(module, change) {
|
|
1830
|
+
if (module.kind !== "module") return { state: "not-a-module" };
|
|
1831
|
+
const manifest = catalog().find((item) => item.id === module.unit);
|
|
1832
|
+
if (manifest === void 0) return change.application === "restart-required" ? { state: "pending-restart" } : { state: "no-needs" };
|
|
1833
|
+
if ((manifest.env?.plugins ?? []).length + (manifest.env?.libs ?? []).length === 0) return { state: "no-needs" };
|
|
1834
|
+
try {
|
|
1835
|
+
return {
|
|
1836
|
+
state: "installed",
|
|
1837
|
+
entry: await service.install(module.unit)
|
|
1838
|
+
};
|
|
1839
|
+
} catch (error) {
|
|
1840
|
+
return {
|
|
1841
|
+
state: "failed",
|
|
1842
|
+
reason: error instanceof Error ? error.message : String(error)
|
|
1843
|
+
};
|
|
1844
|
+
}
|
|
1845
|
+
}
|
|
1846
|
+
const service = {
|
|
3402
1847
|
async list() {
|
|
3403
1848
|
return snapshot();
|
|
3404
1849
|
},
|
|
@@ -3467,29 +1912,24 @@ function createMarketService(options) {
|
|
|
3467
1912
|
return entryOf(unit, true);
|
|
3468
1913
|
},
|
|
3469
1914
|
async uninstall(unit) {
|
|
3470
|
-
const
|
|
3471
|
-
|
|
3472
|
-
|
|
3473
|
-
|
|
3474
|
-
|
|
3475
|
-
|
|
3476
|
-
|
|
3477
|
-
|
|
3478
|
-
|
|
3479
|
-
|
|
3480
|
-
|
|
3481
|
-
|
|
3482
|
-
|
|
3483
|
-
|
|
3484
|
-
|
|
3485
|
-
if (keepers.length > 0) {
|
|
3486
|
-
for (const item of keepers) keptModules.add(item.id);
|
|
3487
|
-
continue;
|
|
3488
|
-
}
|
|
3489
|
-
const onMachine = (before.libs ?? []).some((state) => state.name === need.name && state.status !== "missing");
|
|
3490
|
-
if (before.libs !== void 0 && !onMachine) continue;
|
|
3491
|
-
await run(`npm uninstall --prefix ${quoteShellArg(libsPrefix())} ${quoteShellArg(need.name)}`, true);
|
|
1915
|
+
const pkg = (modules?.() ?? []).find((item) => item.unit === unit)?.pkg;
|
|
1916
|
+
if (pkg !== void 0) {
|
|
1917
|
+
const entry = await entryOf(unit, true);
|
|
1918
|
+
const { change, keptFor } = await service.removeBundle(pkg);
|
|
1919
|
+
return {
|
|
1920
|
+
entry: change.application === "applied" ? {
|
|
1921
|
+
...entry,
|
|
1922
|
+
capability: {
|
|
1923
|
+
...entry.capability,
|
|
1924
|
+
released: true
|
|
1925
|
+
}
|
|
1926
|
+
} : entry,
|
|
1927
|
+
keptFor,
|
|
1928
|
+
change
|
|
1929
|
+
};
|
|
3492
1930
|
}
|
|
1931
|
+
const before = await capabilityOf(unit, true);
|
|
1932
|
+
const keptFor = await dropEnv(unit, requireEntry(unit).env, before);
|
|
3493
1933
|
await probeSharing({
|
|
3494
1934
|
action: "uninstall",
|
|
3495
1935
|
unit
|
|
@@ -3504,11 +1944,75 @@ function createMarketService(options) {
|
|
|
3504
1944
|
released: true
|
|
3505
1945
|
}
|
|
3506
1946
|
},
|
|
3507
|
-
keptFor
|
|
1947
|
+
keptFor
|
|
1948
|
+
};
|
|
1949
|
+
},
|
|
1950
|
+
async installBundle(spec, options) {
|
|
1951
|
+
const change = await requireBundles().install({
|
|
1952
|
+
spec,
|
|
1953
|
+
...options?.registry === void 0 ? {} : { registry: options.registry },
|
|
1954
|
+
...options?.requestId === void 0 ? {} : { requestId: options.requestId },
|
|
1955
|
+
...options?.approvedBuilds === void 0 ? {} : { approvedBuilds: options.approvedBuilds }
|
|
1956
|
+
});
|
|
1957
|
+
if (change === null) throw new Error("插件管理器回的安装结果看不懂。");
|
|
1958
|
+
const pkg = bundleNameOf(change, spec);
|
|
1959
|
+
const module = installed?.(pkg) ?? {
|
|
1960
|
+
kind: "unknown",
|
|
1961
|
+
pkg
|
|
1962
|
+
};
|
|
1963
|
+
return {
|
|
1964
|
+
change,
|
|
1965
|
+
module,
|
|
1966
|
+
supply: await supplyAfter(module, change)
|
|
1967
|
+
};
|
|
1968
|
+
},
|
|
1969
|
+
async removeBundle(pkg) {
|
|
1970
|
+
const manager = requireBundles();
|
|
1971
|
+
const module = installed?.(pkg) ?? {
|
|
1972
|
+
kind: "unknown",
|
|
1973
|
+
pkg
|
|
1974
|
+
};
|
|
1975
|
+
const unit = module.kind === "module" ? module.unit : void 0;
|
|
1976
|
+
const manifest = unit === void 0 ? void 0 : catalog().find((item) => item.id === unit);
|
|
1977
|
+
const before = unit === void 0 ? void 0 : await capabilityOf(unit, true);
|
|
1978
|
+
const change = await manager.remove(pkg);
|
|
1979
|
+
if (change === null) throw new Error("插件管理器回的卸载结果看不懂。");
|
|
1980
|
+
if (change.application !== "applied" || unit === void 0) return {
|
|
1981
|
+
change,
|
|
1982
|
+
keptFor: []
|
|
1983
|
+
};
|
|
1984
|
+
const keptFor = manifest === void 0 || before === void 0 ? [] : await dropEnv(unit, manifest.env, before);
|
|
1985
|
+
onUninstalled?.(unit);
|
|
1986
|
+
return {
|
|
1987
|
+
change,
|
|
1988
|
+
keptFor
|
|
1989
|
+
};
|
|
1990
|
+
},
|
|
1991
|
+
async cancelInstall(requestId) {
|
|
1992
|
+
return requireBundles().cancel(requestId);
|
|
1993
|
+
},
|
|
1994
|
+
async updateBundle(unit) {
|
|
1995
|
+
const pkg = (modules?.() ?? []).find((item) => item.unit === unit)?.pkg;
|
|
1996
|
+
if (pkg === void 0) return null;
|
|
1997
|
+
const read = installed?.(pkg) ?? {
|
|
1998
|
+
kind: "unknown",
|
|
1999
|
+
pkg
|
|
3508
2000
|
};
|
|
2001
|
+
const registry = read.kind === "module" ? read.registry : void 0;
|
|
2002
|
+
const latest = shell === void 0 || registry === void 0 ? void 0 : await latestVersion({
|
|
2003
|
+
shell,
|
|
2004
|
+
name: pkg,
|
|
2005
|
+
registry,
|
|
2006
|
+
force: true
|
|
2007
|
+
});
|
|
2008
|
+
const spec = latest === void 0 ? pkg : `${pkg}@${latest}`;
|
|
2009
|
+
const outcome = await service.installBundle(spec, { ...registry === void 0 ? {} : { registry } });
|
|
2010
|
+
await service.update(unit).catch(() => void 0);
|
|
2011
|
+
return outcome;
|
|
3509
2012
|
},
|
|
3510
2013
|
updateDependency: updateDependencyRow
|
|
3511
2014
|
};
|
|
2015
|
+
return service;
|
|
3512
2016
|
}
|
|
3513
2017
|
//#endregion
|
|
3514
2018
|
//#region src/modules/panels/model/market-dispatch.ts
|
|
@@ -3525,14 +2029,50 @@ async function dispatchMarket(market, request) {
|
|
|
3525
2029
|
shared
|
|
3526
2030
|
};
|
|
3527
2031
|
}
|
|
2032
|
+
if (request.action === "install-bundle") return {
|
|
2033
|
+
ok: true,
|
|
2034
|
+
action: "install-bundle",
|
|
2035
|
+
...await market.installBundle(request.spec ?? "", {
|
|
2036
|
+
...request.registry === void 0 ? {} : { registry: request.registry },
|
|
2037
|
+
...request.approvedBuilds === void 0 ? {} : { approvedBuilds: request.approvedBuilds },
|
|
2038
|
+
...request.requestId === void 0 ? {} : { requestId: request.requestId }
|
|
2039
|
+
})
|
|
2040
|
+
};
|
|
2041
|
+
if (request.action === "update-bundle") {
|
|
2042
|
+
const outcome = await market.updateBundle(request.unit ?? "");
|
|
2043
|
+
return outcome === null ? {
|
|
2044
|
+
ok: true,
|
|
2045
|
+
action: "update",
|
|
2046
|
+
module: await market.update(request.unit ?? "")
|
|
2047
|
+
} : {
|
|
2048
|
+
ok: true,
|
|
2049
|
+
action: "update-bundle",
|
|
2050
|
+
...outcome
|
|
2051
|
+
};
|
|
2052
|
+
}
|
|
2053
|
+
if (request.action === "remove-bundle") {
|
|
2054
|
+
const { change, keptFor } = await market.removeBundle(request.name ?? "");
|
|
2055
|
+
return {
|
|
2056
|
+
ok: true,
|
|
2057
|
+
action: "remove-bundle",
|
|
2058
|
+
change,
|
|
2059
|
+
keptFor
|
|
2060
|
+
};
|
|
2061
|
+
}
|
|
2062
|
+
if (request.action === "cancel-install") return {
|
|
2063
|
+
ok: true,
|
|
2064
|
+
action: "cancel-install",
|
|
2065
|
+
cancellation: await market.cancelInstall(request.requestId ?? "")
|
|
2066
|
+
};
|
|
3528
2067
|
const unit = request.unit ?? "";
|
|
3529
2068
|
if (request.action === "uninstall") {
|
|
3530
|
-
const { entry, keptFor } = await market.uninstall(unit);
|
|
2069
|
+
const { entry, keptFor, change } = await market.uninstall(unit);
|
|
3531
2070
|
return {
|
|
3532
2071
|
ok: true,
|
|
3533
2072
|
action: "uninstall",
|
|
3534
2073
|
module: entry,
|
|
3535
|
-
keptFor
|
|
2074
|
+
keptFor,
|
|
2075
|
+
...change === void 0 ? {} : { change }
|
|
3536
2076
|
};
|
|
3537
2077
|
}
|
|
3538
2078
|
if (request.action === "update") return {
|
|
@@ -3574,6 +2114,9 @@ function render$1(entries, shared) {
|
|
|
3574
2114
|
if (shared.length === 0) return modules;
|
|
3575
2115
|
return `${modules}\n\n共用依赖(只有升级):\n${shared.map((dep) => `${dep.id} · ${stateOfDependency(dep)}${versionsOf(dep)}` + (dep.usedBy.length === 0 ? "" : ` · 供 ${dep.usedBy.join("、")} 使用`)).join("\n")}`;
|
|
3576
2116
|
}
|
|
2117
|
+
function describeInstall(spec, module, supply, change) {
|
|
2118
|
+
return `${change.application === "applied" ? "装好了,已生效" : change.application === "restart-required" ? "装好了,要重启一次才生效" : `没成功:${change.errorCode ?? change.application}`}:${module.kind === "module" ? `${module.unit}(${module.pkg})` : module.pkg}${supply.state === "installed" ? ";它要的 opencli 插件也装上了" : supply.state === "pending-restart" ? ";重启后再装它要的 opencli 插件" : supply.state === "not-a-module" ? ";但它不是工作台模块(没有 dsh.workbench 声明,不会出现在面板上)" : supply.state === "failed" ? `;但它要的插件没装上:${supply.reason}` : ""}(spec:${spec})`;
|
|
2119
|
+
}
|
|
3577
2120
|
var OUTPUT_SCHEMA$1 = {
|
|
3578
2121
|
type: "object",
|
|
3579
2122
|
properties: {
|
|
@@ -3600,6 +2143,7 @@ var ACTIONS = [
|
|
|
3600
2143
|
"install",
|
|
3601
2144
|
"update",
|
|
3602
2145
|
"uninstall",
|
|
2146
|
+
"install-bundle",
|
|
3603
2147
|
"update-dependency"
|
|
3604
2148
|
];
|
|
3605
2149
|
function registerMarketTools(ctx, market) {
|
|
@@ -3610,18 +2154,26 @@ function registerMarketTools(ctx, market) {
|
|
|
3610
2154
|
}
|
|
3611
2155
|
const tool = {
|
|
3612
2156
|
name: "workbench_modules",
|
|
3613
|
-
description: "看 / 装 / 升 /
|
|
2157
|
+
description: "看 / 装 / 升 / 卸工作台的面板模块。install-bundle 按 spec(包名,可带版本;git / tarball / 本地路径也行)把模块包装进 profile —— 装完会连带装它声明的 opencli 插件;其余 action 按模块 id 动它要的外部供给。卸载只动工作台运行时,不影响终端那套;共用依赖只有升级。",
|
|
3614
2158
|
parameters: {
|
|
3615
2159
|
type: "object",
|
|
3616
2160
|
properties: {
|
|
3617
2161
|
action: {
|
|
3618
2162
|
type: "string",
|
|
3619
|
-
description: "update-dependency
|
|
2163
|
+
description: "install-bundle=按 spec 装模块包(要 spec),update-dependency=升级共用依赖,其余=对模块(要 id)。",
|
|
3620
2164
|
enum: [...ACTIONS]
|
|
3621
2165
|
},
|
|
3622
2166
|
id: {
|
|
3623
2167
|
type: "string",
|
|
3624
2168
|
description: "模块 id(如 coding-issues);update-dependency 填共用依赖 id(如 plugin:coding)。"
|
|
2169
|
+
},
|
|
2170
|
+
spec: {
|
|
2171
|
+
type: "string",
|
|
2172
|
+
description: "install-bundle 用:包名(可带 @版本),也可以是 git 地址 / tarball / 本地绝对路径。"
|
|
2173
|
+
},
|
|
2174
|
+
registry: {
|
|
2175
|
+
type: "string",
|
|
2176
|
+
description: "install-bundle 用:先问哪个源(不填就用这个 profile 自己配的源)。"
|
|
3625
2177
|
}
|
|
3626
2178
|
},
|
|
3627
2179
|
required: ["action"],
|
|
@@ -3648,6 +2200,18 @@ function registerMarketTools(ctx, market) {
|
|
|
3648
2200
|
text: render$1(modules, shared)
|
|
3649
2201
|
};
|
|
3650
2202
|
}
|
|
2203
|
+
if (action === "install-bundle") {
|
|
2204
|
+
const spec = args?.spec?.trim() ?? "";
|
|
2205
|
+
if (spec === "") throw new Error("install-bundle 需要一个 spec:包名(可带版本,如 @scope/module@1.2.3),也可以是 git 地址 / tarball / 本地绝对路径。");
|
|
2206
|
+
const registry = args?.registry?.trim();
|
|
2207
|
+
const outcome = await market.installBundle(spec, registry === void 0 || registry === "" ? {} : { registry });
|
|
2208
|
+
return {
|
|
2209
|
+
change: outcome.change,
|
|
2210
|
+
module: outcome.module,
|
|
2211
|
+
supply: outcome.supply,
|
|
2212
|
+
text: describeInstall(spec, outcome.module, outcome.supply, outcome.change)
|
|
2213
|
+
};
|
|
2214
|
+
}
|
|
3651
2215
|
const id = args?.id;
|
|
3652
2216
|
if (id === void 0 || id.trim() === "") {
|
|
3653
2217
|
const { modules, shared } = await market.list();
|
|
@@ -4101,11 +2665,16 @@ var HOST_UNITS = [{
|
|
|
4101
2665
|
logger
|
|
4102
2666
|
});
|
|
4103
2667
|
ctx.provide(PANELS_SERVICE, panels);
|
|
2668
|
+
const profileDir = profileDirOf(ctx);
|
|
4104
2669
|
const market = createMarketService({
|
|
4105
2670
|
manifests: manifests(),
|
|
2671
|
+
manifestsNow: manifests,
|
|
4106
2672
|
...probe === void 0 ? {} : { probe },
|
|
4107
2673
|
shell: ctx.get("shell"),
|
|
4108
2674
|
...opencliCommand === void 0 ? {} : { command: opencliCommand },
|
|
2675
|
+
bundles: readBundleManager(ctx),
|
|
2676
|
+
installed: (pkg) => readInstalledModule(profileDir, pkg),
|
|
2677
|
+
modules: () => profileModules(profileDir),
|
|
4109
2678
|
onUninstalled: (unit) => {
|
|
4110
2679
|
panels.release(unit);
|
|
4111
2680
|
},
|
|
@@ -4220,6 +2789,159 @@ function registerFactStream(ctx, log) {
|
|
|
4220
2789
|
};
|
|
4221
2790
|
}
|
|
4222
2791
|
//#endregion
|
|
2792
|
+
//#region src/shared/api/host/dsh-plugins.ts
|
|
2793
|
+
var MANAGER_SERVICE = "pluginManager";
|
|
2794
|
+
function asRecord(value) {
|
|
2795
|
+
return typeof value === "object" && value !== null ? value : void 0;
|
|
2796
|
+
}
|
|
2797
|
+
function asArray(value) {
|
|
2798
|
+
if (Array.isArray(value)) return value;
|
|
2799
|
+
const record = asRecord(value);
|
|
2800
|
+
if (record === void 0) return [];
|
|
2801
|
+
for (const key of [
|
|
2802
|
+
"rows",
|
|
2803
|
+
"items",
|
|
2804
|
+
"list",
|
|
2805
|
+
"bundles",
|
|
2806
|
+
"plugins"
|
|
2807
|
+
]) {
|
|
2808
|
+
const inner = record[key];
|
|
2809
|
+
if (Array.isArray(inner)) return inner;
|
|
2810
|
+
}
|
|
2811
|
+
return [];
|
|
2812
|
+
}
|
|
2813
|
+
function asText(value) {
|
|
2814
|
+
return typeof value === "string" ? value : "";
|
|
2815
|
+
}
|
|
2816
|
+
function rowOf(value) {
|
|
2817
|
+
const record = asRecord(value);
|
|
2818
|
+
if (record === void 0) return void 0;
|
|
2819
|
+
const name = asText(record.name) || asText(record.id);
|
|
2820
|
+
if (name === "") return void 0;
|
|
2821
|
+
return {
|
|
2822
|
+
name,
|
|
2823
|
+
version: asText(record.version),
|
|
2824
|
+
enabled: record.disabled !== true && record.enabled !== false
|
|
2825
|
+
};
|
|
2826
|
+
}
|
|
2827
|
+
function rowsOf(value) {
|
|
2828
|
+
const rows = [];
|
|
2829
|
+
for (const item of asArray(value)) {
|
|
2830
|
+
const row = rowOf(item);
|
|
2831
|
+
if (row !== void 0) rows.push(row);
|
|
2832
|
+
}
|
|
2833
|
+
return rows;
|
|
2834
|
+
}
|
|
2835
|
+
async function readDshPlugins(ctx) {
|
|
2836
|
+
const manager = ctx.get(MANAGER_SERVICE);
|
|
2837
|
+
if (manager === void 0) return {
|
|
2838
|
+
available: false,
|
|
2839
|
+
bundles: [],
|
|
2840
|
+
plugins: []
|
|
2841
|
+
};
|
|
2842
|
+
const [bundles, plugins] = await Promise.all([manager.listBundles === void 0 ? void 0 : manager.listBundles(), manager.listPlugins === void 0 ? void 0 : manager.listPlugins()]);
|
|
2843
|
+
return {
|
|
2844
|
+
available: true,
|
|
2845
|
+
bundles: rowsOf(bundles),
|
|
2846
|
+
plugins: rowsOf(plugins)
|
|
2847
|
+
};
|
|
2848
|
+
}
|
|
2849
|
+
function dshPluginsHandler(ctx) {
|
|
2850
|
+
return () => readDshPlugins(ctx);
|
|
2851
|
+
}
|
|
2852
|
+
//#endregion
|
|
2853
|
+
//#region src/shared/api/bundle-install.ts
|
|
2854
|
+
var BUNDLE_REGISTRIES_ROUTE = "bundle-registries";
|
|
2855
|
+
var BUNDLE_INSPECT_ROUTE = "bundle-inspect";
|
|
2856
|
+
var MODULE_VERSIONS_ROUTE = "module-versions";
|
|
2857
|
+
//#endregion
|
|
2858
|
+
//#region src/shared/api/host/bundle-routes.ts
|
|
2859
|
+
function registryOf(search) {
|
|
2860
|
+
const raw = param(search, "registry");
|
|
2861
|
+
if (raw === void 0) return void 0;
|
|
2862
|
+
return raw === "default" ? null : raw;
|
|
2863
|
+
}
|
|
2864
|
+
function bundleRegistriesHandler(ctx) {
|
|
2865
|
+
return async () => {
|
|
2866
|
+
const manager = readBundleManager(ctx);
|
|
2867
|
+
return {
|
|
2868
|
+
ok: true,
|
|
2869
|
+
...manager === void 0 ? {
|
|
2870
|
+
available: false,
|
|
2871
|
+
registries: null
|
|
2872
|
+
} : {
|
|
2873
|
+
available: true,
|
|
2874
|
+
registries: await manager.registries()
|
|
2875
|
+
}
|
|
2876
|
+
};
|
|
2877
|
+
};
|
|
2878
|
+
}
|
|
2879
|
+
function moduleVersionsHandler(ctx, shell) {
|
|
2880
|
+
return async (search) => {
|
|
2881
|
+
const manager = readBundleManager(ctx);
|
|
2882
|
+
if (manager === void 0) return {
|
|
2883
|
+
ok: true,
|
|
2884
|
+
modules: []
|
|
2885
|
+
};
|
|
2886
|
+
const found = profileModules(profileDirOf(ctx));
|
|
2887
|
+
const force = param(search, "force") === "1";
|
|
2888
|
+
const fallback = (await manager.registries())?.resolved ?? void 0;
|
|
2889
|
+
return {
|
|
2890
|
+
ok: true,
|
|
2891
|
+
modules: await Promise.all(found.map(async (module) => {
|
|
2892
|
+
const registry = module.registry ?? fallback;
|
|
2893
|
+
const latest = shell === void 0 || registry === void 0 ? void 0 : await latestVersion({
|
|
2894
|
+
shell,
|
|
2895
|
+
name: module.pkg,
|
|
2896
|
+
registry,
|
|
2897
|
+
force
|
|
2898
|
+
});
|
|
2899
|
+
return {
|
|
2900
|
+
unit: module.unit,
|
|
2901
|
+
pkg: module.pkg,
|
|
2902
|
+
installed: module.version,
|
|
2903
|
+
...latest === void 0 ? {} : { latest }
|
|
2904
|
+
};
|
|
2905
|
+
}))
|
|
2906
|
+
};
|
|
2907
|
+
};
|
|
2908
|
+
}
|
|
2909
|
+
function bundleInspectHandler(ctx) {
|
|
2910
|
+
return async (search) => {
|
|
2911
|
+
const spec = param(search, "spec");
|
|
2912
|
+
if (spec === void 0) return {
|
|
2913
|
+
ok: false,
|
|
2914
|
+
error: {
|
|
2915
|
+
code: "workbench/no-spec",
|
|
2916
|
+
message: "要预检哪个包?缺 spec。"
|
|
2917
|
+
}
|
|
2918
|
+
};
|
|
2919
|
+
const manager = readBundleManager(ctx);
|
|
2920
|
+
if (manager === void 0) return {
|
|
2921
|
+
ok: false,
|
|
2922
|
+
error: {
|
|
2923
|
+
code: "workbench/no-bundle-manager",
|
|
2924
|
+
message: "这个 profile 里没有插件管理器,装不了模块。"
|
|
2925
|
+
}
|
|
2926
|
+
};
|
|
2927
|
+
const inspection = await manager.inspect(spec, registryOf(search));
|
|
2928
|
+
if (inspection === null) return {
|
|
2929
|
+
ok: false,
|
|
2930
|
+
error: {
|
|
2931
|
+
code: "workbench/bad-inspection",
|
|
2932
|
+
message: "插件管理器回的预检结果看不懂。"
|
|
2933
|
+
}
|
|
2934
|
+
};
|
|
2935
|
+
return {
|
|
2936
|
+
ok: true,
|
|
2937
|
+
inspection
|
|
2938
|
+
};
|
|
2939
|
+
};
|
|
2940
|
+
}
|
|
2941
|
+
//#endregion
|
|
2942
|
+
//#region src/shared/api/dsh-plugins.ts
|
|
2943
|
+
var DSH_PLUGINS_ROUTE = "dsh-plugins";
|
|
2944
|
+
//#endregion
|
|
4223
2945
|
//#region src/shared/api/host/context-inject.ts
|
|
4224
2946
|
var CONTEXT_SOURCE_KIND = "workbench";
|
|
4225
2947
|
function collectContextRefs(messages) {
|
|
@@ -5194,7 +3916,11 @@ function apply(ctx) {
|
|
|
5194
3916
|
const values = createValueHandoff();
|
|
5195
3917
|
const routes = {
|
|
5196
3918
|
health: healthHandler(ctx),
|
|
5197
|
-
changes: changesHandler(facts)
|
|
3919
|
+
changes: changesHandler(facts),
|
|
3920
|
+
[DSH_PLUGINS_ROUTE]: dshPluginsHandler(ctx),
|
|
3921
|
+
[BUNDLE_REGISTRIES_ROUTE]: bundleRegistriesHandler(ctx),
|
|
3922
|
+
[BUNDLE_INSPECT_ROUTE]: bundleInspectHandler(ctx),
|
|
3923
|
+
[MODULE_VERSIONS_ROUTE]: moduleVersionsHandler(ctx, ctx.get("shell"))
|
|
5198
3924
|
};
|
|
5199
3925
|
const renderers = /* @__PURE__ */ new Map();
|
|
5200
3926
|
const shell = ctx.get("shell");
|