@hortiview/modulebase 0.0.13179 → 0.0.13321

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.
@@ -1,5 +1,5 @@
1
1
  import * as F from "react";
2
- import { jsx as N } from "react/jsx-runtime";
2
+ import { jsx as R } from "react/jsx-runtime";
3
3
  var C = class {
4
4
  constructor() {
5
5
  this.listeners = /* @__PURE__ */ new Set(), this.subscribe = this.subscribe.bind(this);
@@ -291,12 +291,12 @@ function oe(e) {
291
291
  Promise.resolve(a).then(M).catch((h) => {
292
292
  if (r)
293
293
  return;
294
- const y = e.retry ?? (d ? 0 : 3), v = e.retryDelay ?? G, R = typeof v == "function" ? v(n, h) : v, x = y === !0 || typeof y == "number" && n < y || typeof y == "function" && y(n, h);
295
- if (t || !x) {
294
+ const y = e.retry ?? (d ? 0 : 3), v = e.retryDelay ?? G, x = typeof v == "function" ? v(n, h) : v, N = y === !0 || typeof y == "number" && n < y || typeof y == "function" && y(n, h);
295
+ if (t || !N) {
296
296
  b(h);
297
297
  return;
298
298
  }
299
- n++, e.onFail?.(n, h), z(R).then(() => f() ? void 0 : O()).then(() => {
299
+ n++, e.onFail?.(n, h), z(x).then(() => f() ? void 0 : O()).then(() => {
300
300
  t ? b(h) : m();
301
301
  });
302
302
  });
@@ -401,7 +401,7 @@ var ue = V(), ce = class {
401
401
  children: t
402
402
  }) => (F.useEffect(() => (e.mount(), () => {
403
403
  e.unmount();
404
- }), [e]), /* @__PURE__ */ N(k.Provider, { value: e, children: t }));
404
+ }), [e]), /* @__PURE__ */ R(k.Provider, { value: e, children: t }));
405
405
  export {
406
406
  le as Q,
407
407
  ce as R,
@@ -412,24 +412,24 @@ export {
412
412
  H as d,
413
413
  se as e,
414
414
  ee as f,
415
- K as g,
415
+ W as g,
416
416
  w as h,
417
417
  ie as i,
418
- Z as j,
419
- re as k,
420
- ne as l,
421
- Y as m,
418
+ d as j,
419
+ Q as k,
420
+ I as l,
421
+ K as m,
422
422
  ue as n,
423
- I as o,
424
- L as p,
425
- W as q,
423
+ Y as o,
424
+ U as p,
425
+ Z as q,
426
426
  te as r,
427
427
  P as s,
428
428
  B as t,
429
429
  ae as u,
430
- _ as v,
431
- S as w,
432
- U as x,
433
- d as y,
434
- Q as z
430
+ re as v,
431
+ ne as w,
432
+ L as x,
433
+ _ as y,
434
+ S as z
435
435
  };
@@ -0,0 +1 @@
1
+ @import"https://fonts.googleapis.com/css?family=Roboto:300,400,400i,500,700|Roboto+Mono:400,500|Material+Icons";._image_178sv_1>svg{width:inherit;height:inherit;color:inherit}._loadingBigOverlay_7dxo1_1{z-index:500;position:fixed;top:0;left:0;width:100%;height:100%;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background-color:#0000001a}._bigLoadSpinnerCard_7dxo1_12{background-color:var(--lmnt-theme-background);text-align:center;inline-size:auto;padding:2rem 2rem 1.5rem;border-radius:1rem;box-shadow:0 .5rem .625rem -.3125rem #0003,0 .375rem 1.875rem .3125rem #0000001f,0 1rem 1.5rem .125rem #00000024;z-index:500;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}._bigLoadSpinnerCardText_7dxo1_27{padding:0;margin:1rem 0 0;text-align:center}._logo_7dxo1_33{width:4.75rem!important;height:4.75rem!important}@keyframes _rotate360deg_7dxo1_1{0%{transform:rotate(0)}to{transform:rotate(360deg)}}._logo_7dxo1_33 path[id=Subtract_2]{transform-origin:center;animation:_rotate360deg_7dxo1_1 1s linear infinite}._loadingSpinnerContainer_1f3ss_1{z-index:500;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--lmnt-theme-on-surface-high)}._database_11ki8_1{color:var(--lmnt-theme-secondary);animation:_spin_11ki8_1 4s linear infinite}@keyframes _spin_11ki8_1{0%{transform:rotate(0)}to{transform:rotate(-360deg)}}._iot_11ki8_16,._platform_11ki8_17,._other_11ki8_18{color:var(--lmnt-theme-danger)}._crossedOut_11ki8_22{position:relative;display:inline-block}._crossedOut_11ki8_22:after{content:"";position:absolute;width:3rem;height:.25rem;left:50%;top:50%;background:var(--lmnt-theme-danger-on-surface);box-shadow:0 0 0 .125rem var(--lmnt-theme-background);transform:translate(-50%,calc(-50% - .25rem)) rotate(45deg);transform-origin:center;z-index:2}._disclaimer_1k38t_1{color:var(--lmnt-theme-danger);font-style:normal;line-height:20px}._iconArea_1k38t_7{display:flex;justify-content:center}
@@ -1,502 +1,30 @@
1
- import { jsx as f } from "react/jsx-runtime";
2
- import { S as N, g as H, n as u, m as q, j as D, a as h, e as R, k as j, l as V, o as L, p as A, q as S, v as W, h as C, w as F, s as _, Q as U } from "../QueryClientProvider-Q_mWQTzQ.js";
3
- import { Q as z } from "../query-CRIVoEP7.js";
4
- import { M as Y } from "../mutation-X73nm7Df.js";
5
- import { useState as T, useEffect as b } from "react";
6
- import { Y as G, h as J, O as X, aU as Z } from "../chunk-IR6S3I6Y-BmDdD3SP.js";
7
- import { SignalRProvider as $ } from "../provider/SignalR/SignalRProvider.js";
8
- import { useBasePropsStore as M } from "../stores/BasePropsStore.js";
9
- import { useEnvironmentStore as k } from "../stores/EnvironmentStore.js";
10
- import { getEnvironmentVariables as x, checkVersion as ee, arePropsValid as te } from "../utils/helper.js";
11
- var se = class extends N {
12
- constructor(e = {}) {
13
- super(), this.config = e, this.#e = /* @__PURE__ */ new Map();
14
- }
15
- #e;
16
- build(e, t, s) {
17
- const r = t.queryKey, i = t.queryHash ?? H(r, t);
18
- let a = this.get(i);
19
- return a || (a = new z({
20
- client: e,
21
- queryKey: r,
22
- queryHash: i,
23
- options: e.defaultQueryOptions(t),
24
- state: s,
25
- defaultOptions: e.getQueryDefaults(r)
26
- }), this.add(a)), a;
27
- }
28
- add(e) {
29
- this.#e.has(e.queryHash) || (this.#e.set(e.queryHash, e), this.notify({
30
- type: "added",
31
- query: e
32
- }));
33
- }
34
- remove(e) {
35
- const t = this.#e.get(e.queryHash);
36
- t && (e.destroy(), t === e && this.#e.delete(e.queryHash), this.notify({ type: "removed", query: e }));
37
- }
38
- clear() {
39
- u.batch(() => {
40
- this.getAll().forEach((e) => {
41
- this.remove(e);
42
- });
43
- });
44
- }
45
- get(e) {
46
- return this.#e.get(e);
47
- }
48
- getAll() {
49
- return [...this.#e.values()];
50
- }
51
- find(e) {
52
- const t = { exact: !0, ...e };
53
- return this.getAll().find(
54
- (s) => q(t, s)
55
- );
56
- }
57
- findAll(e = {}) {
58
- const t = this.getAll();
59
- return Object.keys(e).length > 0 ? t.filter((s) => q(e, s)) : t;
60
- }
61
- notify(e) {
62
- u.batch(() => {
63
- this.listeners.forEach((t) => {
64
- t(e);
65
- });
66
- });
67
- }
68
- onFocus() {
69
- u.batch(() => {
70
- this.getAll().forEach((e) => {
71
- e.onFocus();
72
- });
73
- });
74
- }
75
- onOnline() {
76
- u.batch(() => {
77
- this.getAll().forEach((e) => {
78
- e.onOnline();
79
- });
80
- });
81
- }
82
- }, re = class extends N {
83
- constructor(e = {}) {
84
- super(), this.config = e, this.#e = /* @__PURE__ */ new Set(), this.#t = /* @__PURE__ */ new Map(), this.#s = 0;
85
- }
86
- #e;
87
- #t;
88
- #s;
89
- build(e, t, s) {
90
- const r = new Y({
91
- mutationCache: this,
92
- mutationId: ++this.#s,
93
- options: e.defaultMutationOptions(t),
94
- state: s
95
- });
96
- return this.add(r), r;
97
- }
98
- add(e) {
99
- this.#e.add(e);
100
- const t = O(e);
101
- if (typeof t == "string") {
102
- const s = this.#t.get(t);
103
- s ? s.push(e) : this.#t.set(t, [e]);
104
- }
105
- this.notify({ type: "added", mutation: e });
106
- }
107
- remove(e) {
108
- if (this.#e.delete(e)) {
109
- const t = O(e);
110
- if (typeof t == "string") {
111
- const s = this.#t.get(t);
112
- if (s)
113
- if (s.length > 1) {
114
- const r = s.indexOf(e);
115
- r !== -1 && s.splice(r, 1);
116
- } else s[0] === e && this.#t.delete(t);
117
- }
118
- }
119
- this.notify({ type: "removed", mutation: e });
120
- }
121
- canRun(e) {
122
- const t = O(e);
123
- if (typeof t == "string") {
124
- const r = this.#t.get(t)?.find(
125
- (i) => i.state.status === "pending"
126
- );
127
- return !r || r === e;
128
- } else
129
- return !0;
130
- }
131
- runNext(e) {
132
- const t = O(e);
133
- return typeof t == "string" ? this.#t.get(t)?.find((r) => r !== e && r.state.isPaused)?.continue() ?? Promise.resolve() : Promise.resolve();
134
- }
135
- clear() {
136
- u.batch(() => {
137
- this.#e.forEach((e) => {
138
- this.notify({ type: "removed", mutation: e });
139
- }), this.#e.clear(), this.#t.clear();
140
- });
141
- }
142
- getAll() {
143
- return Array.from(this.#e);
144
- }
145
- find(e) {
146
- const t = { exact: !0, ...e };
147
- return this.getAll().find(
148
- (s) => D(t, s)
149
- );
150
- }
151
- findAll(e = {}) {
152
- return this.getAll().filter((t) => D(e, t));
153
- }
154
- notify(e) {
155
- u.batch(() => {
156
- this.listeners.forEach((t) => {
157
- t(e);
158
- });
159
- });
160
- }
161
- resumePausedMutations() {
162
- const e = this.getAll().filter((t) => t.state.isPaused);
163
- return u.batch(
164
- () => Promise.all(
165
- e.map((t) => t.continue().catch(h))
166
- )
167
- );
168
- }
169
- };
170
- function O(e) {
171
- return e.options.scope?.id;
172
- }
173
- function I(e) {
174
- return {
175
- onFetch: (t, s) => {
176
- const r = t.options, i = t.fetchOptions?.meta?.fetchMore?.direction, a = t.state.data?.pages || [], d = t.state.data?.pageParams || [];
177
- let c = { pages: [], pageParams: [] }, y = 0;
178
- const m = async () => {
179
- let g = !1;
180
- const p = (n) => {
181
- Object.defineProperty(n, "signal", {
182
- enumerable: !0,
183
- get: () => (t.signal.aborted ? g = !0 : t.signal.addEventListener("abort", () => {
184
- g = !0;
185
- }), t.signal)
186
- });
187
- }, Q = R(t.options, t.fetchOptions), P = async (n, o, l) => {
188
- if (g)
189
- return Promise.reject();
190
- if (o == null && n.pages.length)
191
- return Promise.resolve(n);
192
- const v = {
193
- client: t.client,
194
- queryKey: t.queryKey,
195
- pageParam: o,
196
- direction: l ? "backward" : "forward",
197
- meta: t.options.meta
198
- };
199
- p(v);
200
- const B = await Q(
201
- v
202
- ), { maxPages: w } = t.options, E = l ? j : V;
203
- return {
204
- pages: E(n.pages, B, w),
205
- pageParams: E(n.pageParams, o, w)
206
- };
207
- };
208
- if (i && a.length) {
209
- const n = i === "backward", o = n ? ne : K, l = {
210
- pages: a,
211
- pageParams: d
212
- }, v = o(r, l);
213
- c = await P(l, v, n);
214
- } else {
215
- const n = e ?? a.length;
216
- do {
217
- const o = y === 0 ? d[0] ?? r.initialPageParam : K(r, c);
218
- if (y > 0 && o == null)
219
- break;
220
- c = await P(c, o), y++;
221
- } while (y < n);
222
- }
223
- return c;
224
- };
225
- t.options.persister ? t.fetchFn = () => t.options.persister?.(
226
- m,
227
- {
228
- client: t.client,
229
- queryKey: t.queryKey,
230
- meta: t.options.meta,
231
- signal: t.signal
232
- },
233
- s
234
- ) : t.fetchFn = m;
235
- }
236
- };
237
- }
238
- function K(e, { pages: t, pageParams: s }) {
239
- const r = t.length - 1;
240
- return t.length > 0 ? e.getNextPageParam(
241
- t[r],
242
- t,
243
- s[r],
244
- s
245
- ) : void 0;
246
- }
247
- function ne(e, { pages: t, pageParams: s }) {
248
- return t.length > 0 ? e.getPreviousPageParam?.(t[0], t, s[0], s) : void 0;
249
- }
250
- var ie = class {
251
- #e;
252
- #t;
253
- #s;
254
- #n;
255
- #i;
256
- #r;
257
- #a;
258
- #u;
259
- constructor(e = {}) {
260
- this.#e = e.queryCache || new se(), this.#t = e.mutationCache || new re(), this.#s = e.defaultOptions || {}, this.#n = /* @__PURE__ */ new Map(), this.#i = /* @__PURE__ */ new Map(), this.#r = 0;
261
- }
262
- mount() {
263
- this.#r++, this.#r === 1 && (this.#a = L.subscribe(async (e) => {
264
- e && (await this.resumePausedMutations(), this.#e.onFocus());
265
- }), this.#u = A.subscribe(async (e) => {
266
- e && (await this.resumePausedMutations(), this.#e.onOnline());
267
- }));
268
- }
269
- unmount() {
270
- this.#r--, this.#r === 0 && (this.#a?.(), this.#a = void 0, this.#u?.(), this.#u = void 0);
271
- }
272
- isFetching(e) {
273
- return this.#e.findAll({ ...e, fetchStatus: "fetching" }).length;
274
- }
275
- isMutating(e) {
276
- return this.#t.findAll({ ...e, status: "pending" }).length;
277
- }
278
- getQueryData(e) {
279
- const t = this.defaultQueryOptions({ queryKey: e });
280
- return this.#e.get(t.queryHash)?.state.data;
281
- }
282
- ensureQueryData(e) {
283
- const t = this.defaultQueryOptions(e), s = this.#e.build(this, t), r = s.state.data;
284
- return r === void 0 ? this.fetchQuery(e) : (e.revalidateIfStale && s.isStaleByTime(S(t.staleTime, s)) && this.prefetchQuery(t), Promise.resolve(r));
285
- }
286
- getQueriesData(e) {
287
- return this.#e.findAll(e).map(({ queryKey: t, state: s }) => {
288
- const r = s.data;
289
- return [t, r];
290
- });
291
- }
292
- setQueryData(e, t, s) {
293
- const r = this.defaultQueryOptions({ queryKey: e }), a = this.#e.get(
294
- r.queryHash
295
- )?.state.data, d = W(t, a);
296
- if (d !== void 0)
297
- return this.#e.build(this, r).setData(d, { ...s, manual: !0 });
298
- }
299
- setQueriesData(e, t, s) {
300
- return u.batch(
301
- () => this.#e.findAll(e).map(({ queryKey: r }) => [
302
- r,
303
- this.setQueryData(r, t, s)
304
- ])
305
- );
306
- }
307
- getQueryState(e) {
308
- const t = this.defaultQueryOptions({ queryKey: e });
309
- return this.#e.get(
310
- t.queryHash
311
- )?.state;
312
- }
313
- removeQueries(e) {
314
- const t = this.#e;
315
- u.batch(() => {
316
- t.findAll(e).forEach((s) => {
317
- t.remove(s);
318
- });
319
- });
320
- }
321
- resetQueries(e, t) {
322
- const s = this.#e;
323
- return u.batch(() => (s.findAll(e).forEach((r) => {
324
- r.reset();
325
- }), this.refetchQueries(
326
- {
327
- type: "active",
328
- ...e
329
- },
330
- t
331
- )));
332
- }
333
- cancelQueries(e, t = {}) {
334
- const s = { revert: !0, ...t }, r = u.batch(
335
- () => this.#e.findAll(e).map((i) => i.cancel(s))
336
- );
337
- return Promise.all(r).then(h).catch(h);
338
- }
339
- invalidateQueries(e, t = {}) {
340
- return u.batch(() => (this.#e.findAll(e).forEach((s) => {
341
- s.invalidate();
342
- }), e?.refetchType === "none" ? Promise.resolve() : this.refetchQueries(
343
- {
344
- ...e,
345
- type: e?.refetchType ?? e?.type ?? "active"
346
- },
347
- t
348
- )));
349
- }
350
- refetchQueries(e, t = {}) {
351
- const s = {
352
- ...t,
353
- cancelRefetch: t.cancelRefetch ?? !0
354
- }, r = u.batch(
355
- () => this.#e.findAll(e).filter((i) => !i.isDisabled()).map((i) => {
356
- let a = i.fetch(void 0, s);
357
- return s.throwOnError || (a = a.catch(h)), i.state.fetchStatus === "paused" ? Promise.resolve() : a;
358
- })
359
- );
360
- return Promise.all(r).then(h);
361
- }
362
- fetchQuery(e) {
363
- const t = this.defaultQueryOptions(e);
364
- t.retry === void 0 && (t.retry = !1);
365
- const s = this.#e.build(this, t);
366
- return s.isStaleByTime(
367
- S(t.staleTime, s)
368
- ) ? s.fetch(t) : Promise.resolve(s.state.data);
369
- }
370
- prefetchQuery(e) {
371
- return this.fetchQuery(e).then(h).catch(h);
372
- }
373
- fetchInfiniteQuery(e) {
374
- return e.behavior = I(e.pages), this.fetchQuery(e);
375
- }
376
- prefetchInfiniteQuery(e) {
377
- return this.fetchInfiniteQuery(e).then(h).catch(h);
378
- }
379
- ensureInfiniteQueryData(e) {
380
- return e.behavior = I(e.pages), this.ensureQueryData(e);
381
- }
382
- resumePausedMutations() {
383
- return A.isOnline() ? this.#t.resumePausedMutations() : Promise.resolve();
384
- }
385
- getQueryCache() {
386
- return this.#e;
387
- }
388
- getMutationCache() {
389
- return this.#t;
390
- }
391
- getDefaultOptions() {
392
- return this.#s;
393
- }
394
- setDefaultOptions(e) {
395
- this.#s = e;
396
- }
397
- setQueryDefaults(e, t) {
398
- this.#n.set(C(e), {
399
- queryKey: e,
400
- defaultOptions: t
401
- });
402
- }
403
- getQueryDefaults(e) {
404
- const t = [...this.#n.values()], s = {};
405
- return t.forEach((r) => {
406
- F(e, r.queryKey) && Object.assign(s, r.defaultOptions);
407
- }), s;
408
- }
409
- setMutationDefaults(e, t) {
410
- this.#i.set(C(e), {
411
- mutationKey: e,
412
- defaultOptions: t
413
- });
414
- }
415
- getMutationDefaults(e) {
416
- const t = [...this.#i.values()], s = {};
417
- return t.forEach((r) => {
418
- F(e, r.mutationKey) && Object.assign(s, r.defaultOptions);
419
- }), s;
420
- }
421
- defaultQueryOptions(e) {
422
- if (e._defaulted)
423
- return e;
424
- const t = {
425
- ...this.#s.queries,
426
- ...this.getQueryDefaults(e.queryKey),
427
- ...e,
428
- _defaulted: !0
429
- };
430
- return t.queryHash || (t.queryHash = H(
431
- t.queryKey,
432
- t
433
- )), t.refetchOnReconnect === void 0 && (t.refetchOnReconnect = t.networkMode !== "always"), t.throwOnError === void 0 && (t.throwOnError = !!t.suspense), !t.networkMode && t.persister && (t.networkMode = "offlineFirst"), t.queryFn === _ && (t.enabled = !1), t;
434
- }
435
- defaultMutationOptions(e) {
436
- return e?._defaulted ? e : {
437
- ...this.#s.mutations,
438
- ...e?.mutationKey && this.getMutationDefaults(e.mutationKey),
439
- ...e,
440
- _defaulted: !0
441
- };
442
- }
443
- clear() {
444
- this.#e.clear(), this.#t.clear();
445
- }
446
- };
447
- const ae = new ie({
448
- defaultOptions: {
449
- mutations: {
450
- retry: !1
451
- },
452
- queries: {
453
- refetchOnWindowFocus: !1,
454
- gcTime: 1e3 * 60 * 60 * 24,
455
- // 24 hours
456
- staleTime: 60 * 1e3,
457
- // 60 seconds
458
- retry: !1
459
- }
460
- }
461
- }), ue = () => {
462
- const e = M((s) => s.currentNavigationPath), t = Z();
463
- b(() => {
1
+ import { jsx as r } from "react/jsx-runtime";
2
+ import { useEffect as s } from "react";
3
+ import { Y as u, h as l, O as c, aU as d } from "../chunk-IR6S3I6Y-BmDdD3SP.js";
4
+ import { SignalRProvider as m } from "../provider/SignalR/SignalRProvider.js";
5
+ import { useBasePropsStore as f } from "../stores/BasePropsStore.js";
6
+ import { ModuleCore as p, ModuleQueryClient as h } from "./ModuleCore.js";
7
+ const v = () => {
8
+ const e = f((o) => o.currentNavigationPath), t = d();
9
+ s(() => {
464
10
  e && t(e, { replace: !0 });
465
11
  }, [e, t]);
466
- }, oe = () => (ue(), /* @__PURE__ */ f(X, {})), ve = ({
12
+ }, g = () => (v(), /* @__PURE__ */ r(c, {})), x = ({
467
13
  props: e,
468
14
  routes: t,
469
- env: s = void 0,
470
- useSignalR: r = !1,
471
- queryClient: i = ae
15
+ env: o = void 0,
16
+ useSignalR: a = !1,
17
+ queryClient: i = h
472
18
  }) => {
473
- const a = M((n) => n.setBaseProps), d = M((n) => n.modulePermissionToken), c = k((n) => n.setEnvironment), y = k((n) => n.addEnvironment), [m, g] = T(!1), [p, Q] = T(null);
474
- b(() => {
475
- const n = x();
476
- if (g(!n), n && c(n), !s) return;
477
- const o = ee(n);
478
- o && Q(o);
479
- const l = s[n?.ENVIRONMENT];
480
- l && y(l);
481
- }, [y, s, c]), b(() => {
482
- g(!te(e)), a(e);
483
- }, [
484
- e.currentLanguage,
485
- e.currentLanguageId,
486
- e.modulePermissionToken,
487
- e.organizationId,
488
- e.currentNavigationPath,
489
- e.sourcePath
490
- ]);
491
- const P = G([
19
+ const n = u([
492
20
  {
493
21
  path: e.basePath,
494
22
  children: t,
495
- element: /* @__PURE__ */ f(oe, {})
23
+ element: /* @__PURE__ */ r(g, {})
496
24
  }
497
25
  ]);
498
- return m ? /* @__PURE__ */ f("div", { children: "TODO: Show fancy Error" }) : p ? /* @__PURE__ */ f("div", { children: p }) : d ? /* @__PURE__ */ f(U, { client: i, children: /* @__PURE__ */ f($, { enabled: r, children: /* @__PURE__ */ f(J, { router: P }) }) }) : /* @__PURE__ */ f("div", { children: "TODO: Show fancy Loadingspinner" });
26
+ return /* @__PURE__ */ r(p, { props: e, env: o, queryClient: i, children: /* @__PURE__ */ r(m, { enabled: a, children: /* @__PURE__ */ r(l, { router: n }) }) });
499
27
  };
500
28
  export {
501
- ve as ModuleBase
29
+ x as ModuleBase
502
30
  };