@actdim/dynstruct 1.1.6 → 1.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/appDomain/appContracts.d.ts +2 -1
- package/dist/appDomain/appContracts.d.ts.map +1 -1
- package/dist/appDomain/appContracts.es.js.map +1 -1
- package/dist/appDomain/security/securityProvider.d.ts.map +1 -1
- package/dist/appDomain/security/securityProvider.es.js +48 -50
- package/dist/appDomain/security/securityProvider.es.js.map +1 -1
- package/dist/componentModel/adapters.d.ts +2 -2
- package/dist/componentModel/adapters.d.ts.map +1 -1
- package/dist/componentModel/adapters.es.js +10 -12
- package/dist/componentModel/adapters.es.js.map +1 -1
- package/dist/componentModel/contracts.d.ts +18 -18
- package/dist/componentModel/contracts.d.ts.map +1 -1
- package/dist/componentModel/contracts.es.js.map +1 -1
- package/dist/componentModel/core.d.ts.map +1 -1
- package/dist/componentModel/core.es.js +86 -86
- package/dist/componentModel/core.es.js.map +1 -1
- package/dist/componentModel/react.d.ts.map +1 -1
- package/dist/componentModel/react.es.js +130 -136
- package/dist/componentModel/react.es.js.map +1 -1
- package/dist/services/ServiceProvider.d.ts +6 -4
- package/dist/services/ServiceProvider.d.ts.map +1 -1
- package/dist/services/ServiceProvider.es.js +8 -13
- package/dist/services/ServiceProvider.es.js.map +1 -1
- package/dist/services/StorageService.d.ts +5 -14
- package/dist/services/StorageService.d.ts.map +1 -1
- package/dist/services/StorageService.es.js +37 -48
- package/dist/services/StorageService.es.js.map +1 -1
- package/dist/services/{NavService.d.ts → react/NavService.d.ts} +3 -3
- package/dist/services/react/NavService.d.ts.map +1 -0
- package/dist/services/{NavService.es.js → react/NavService.es.js} +2 -2
- package/dist/services/react/NavService.es.js.map +1 -0
- package/dist/services/react/ServiceProvider.d.ts +7 -0
- package/dist/services/react/ServiceProvider.d.ts.map +1 -0
- package/dist/services/react/ServiceProvider.es.js +24 -0
- package/dist/services/react/ServiceProvider.es.js.map +1 -0
- package/dist/services/react/StorageService.d.ts +16 -0
- package/dist/services/react/StorageService.d.ts.map +1 -0
- package/dist/services/react/StorageService.es.js +55 -0
- package/dist/services/react/StorageService.es.js.map +1 -0
- package/package.json +1 -1
- package/dist/services/NavService.d.ts.map +0 -1
- package/dist/services/NavService.es.js.map +0 -1
|
@@ -1,200 +1,194 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { observer as
|
|
1
|
+
import d, { useLayoutEffect as w, useEffect as M, useMemo as G } from "react";
|
|
2
|
+
import { observer as S } from "mobx-react-lite";
|
|
3
3
|
import { observable as P } from "mobx";
|
|
4
|
-
import { useLazyRef as
|
|
5
|
-
import { getGlobalFlags as
|
|
6
|
-
import { useComponentContext as
|
|
7
|
-
import { $ON_CHANGE as
|
|
8
|
-
import { lazy as
|
|
9
|
-
import { getComponentSourceByCaller as
|
|
10
|
-
function
|
|
4
|
+
import { useLazyRef as F } from "../reactHooks.es.js";
|
|
5
|
+
import { getGlobalFlags as h } from "../globals.es.js";
|
|
6
|
+
import { useComponentContext as H, ReactComponentContext as L } from "./componentContext.es.js";
|
|
7
|
+
import { $ON_CHANGE as z, $ON_CHANGING as A, $ON_GET as T } from "./contracts.es.js";
|
|
8
|
+
import { lazy as U } from "@actdim/utico/utils";
|
|
9
|
+
import { getComponentSourceByCaller as _, getComponentMsgBus as J, toHtmlId as V, registerMsgBroker as q, isBinding as K, createRecursiveProxy as Q, createEffect as W } from "./core.es.js";
|
|
10
|
+
function C(e) {
|
|
11
11
|
return e.replace(/^./, e[0].toUpperCase());
|
|
12
12
|
}
|
|
13
|
-
function
|
|
13
|
+
function X(e) {
|
|
14
14
|
return e.replace(/^[a-z][a-z0-9+.-]*:\/\/[^\/]+/, "");
|
|
15
15
|
}
|
|
16
|
-
function
|
|
17
|
-
let t,
|
|
16
|
+
function Y(e, i) {
|
|
17
|
+
let t, l;
|
|
18
18
|
e || (e = {});
|
|
19
|
-
let
|
|
20
|
-
|
|
21
|
-
const
|
|
22
|
-
let
|
|
23
|
-
const
|
|
24
|
-
|
|
19
|
+
let u = e.regType;
|
|
20
|
+
u || (u = _(6), u = X(u)), i || (i = {});
|
|
21
|
+
const $ = e.view;
|
|
22
|
+
let v = e.msgBus;
|
|
23
|
+
const b = /* @__PURE__ */ new Map(), B = U(() => J(v, (r) => {
|
|
24
|
+
r?.sourceId == null && (r.sourceId = t.id);
|
|
25
25
|
}));
|
|
26
|
-
let
|
|
26
|
+
let a = {
|
|
27
27
|
...e.msgBroker
|
|
28
28
|
};
|
|
29
|
-
|
|
30
|
-
const
|
|
31
|
-
const
|
|
32
|
-
if (t.parentId = g,
|
|
33
|
-
let
|
|
34
|
-
if (!
|
|
35
|
-
const
|
|
36
|
-
|
|
29
|
+
a.abortController || (a.abortController = new AbortController());
|
|
30
|
+
const y = H(), N = S((r) => {
|
|
31
|
+
const n = H(), g = n.currentId;
|
|
32
|
+
if (t.parentId = g, v || (v = n.msgBus), !t.id) {
|
|
33
|
+
let o = i.$id;
|
|
34
|
+
if (!o) {
|
|
35
|
+
const f = i.$key;
|
|
36
|
+
f ? o = `${V(u)}#${f}` : o = n.getNextId(u);
|
|
37
37
|
}
|
|
38
|
-
t.id =
|
|
38
|
+
t.id = o;
|
|
39
39
|
}
|
|
40
|
-
|
|
40
|
+
w(() => {
|
|
41
41
|
try {
|
|
42
|
-
if (
|
|
43
|
-
const
|
|
44
|
-
console.debug(`${
|
|
42
|
+
if (n.register(t.id, u, g), h().debug) {
|
|
43
|
+
const o = t.getHierarchyId();
|
|
44
|
+
console.debug(`${o}>layout`);
|
|
45
45
|
}
|
|
46
|
-
|
|
47
|
-
} catch (
|
|
48
|
-
e.events?.onError?.(t,
|
|
46
|
+
q(t), e.events?.onLayout?.(t), i.onLayout?.(t);
|
|
47
|
+
} catch (o) {
|
|
48
|
+
e.events?.onError?.(t, o), i.onError?.(t, o);
|
|
49
49
|
}
|
|
50
50
|
return () => {
|
|
51
|
-
if (
|
|
52
|
-
const
|
|
53
|
-
console.debug(`${
|
|
51
|
+
if (h().debug) {
|
|
52
|
+
const o = t.getHierarchyId();
|
|
53
|
+
console.debug(`${o}>layout-destroy`);
|
|
54
54
|
}
|
|
55
|
-
|
|
55
|
+
n.unregister(t.id), a.abortController?.abort(), e.events?.onLayoutDestroy?.(t), i.onLayoutDestroy?.(t);
|
|
56
56
|
};
|
|
57
|
-
}, [e,
|
|
57
|
+
}, [e, i, n]), M(() => {
|
|
58
58
|
try {
|
|
59
|
-
if (
|
|
60
|
-
const
|
|
61
|
-
console.debug(`${
|
|
59
|
+
if (h().debug) {
|
|
60
|
+
const o = t.getHierarchyId();
|
|
61
|
+
console.debug(`${o}>ready`);
|
|
62
62
|
}
|
|
63
|
-
e.events?.onReady?.(t),
|
|
64
|
-
} catch (
|
|
65
|
-
if (
|
|
66
|
-
const
|
|
67
|
-
console.debug(`${
|
|
63
|
+
e.events?.onReady?.(t), i.onReady?.(t);
|
|
64
|
+
} catch (o) {
|
|
65
|
+
if (h().debug) {
|
|
66
|
+
const f = t.getHierarchyId();
|
|
67
|
+
console.debug(`${f}>destroy`);
|
|
68
68
|
}
|
|
69
|
-
e.events?.onError?.(t,
|
|
69
|
+
e.events?.onError?.(t, o), i.onError?.(t, o);
|
|
70
70
|
}
|
|
71
71
|
return () => {
|
|
72
|
-
e.events?.onDestroy?.(t),
|
|
72
|
+
e.events?.onDestroy?.(t), i.onDestroy?.(t);
|
|
73
73
|
};
|
|
74
|
-
}, [e,
|
|
74
|
+
}, [e, i, n]);
|
|
75
75
|
let s;
|
|
76
76
|
try {
|
|
77
|
-
if (
|
|
78
|
-
const
|
|
79
|
-
console.debug(`${
|
|
77
|
+
if (h().debug) {
|
|
78
|
+
const o = t.getHierarchyId();
|
|
79
|
+
console.debug(`${o}>view`);
|
|
80
80
|
}
|
|
81
|
-
typeof
|
|
82
|
-
} catch (
|
|
83
|
-
const
|
|
84
|
-
s = /* @__PURE__ */
|
|
81
|
+
typeof $ == "function" ? s = $(r, t) : s = /* @__PURE__ */ d.createElement(d.Fragment, null, r.children);
|
|
82
|
+
} catch (o) {
|
|
83
|
+
const f = JSON.stringify(o);
|
|
84
|
+
s = /* @__PURE__ */ d.createElement(d.Fragment, null, f);
|
|
85
85
|
}
|
|
86
|
-
const c =
|
|
87
|
-
() => ({ ...
|
|
88
|
-
[e,
|
|
86
|
+
const c = G(
|
|
87
|
+
() => ({ ...n, currentId: t.id }),
|
|
88
|
+
[e, i, n]
|
|
89
89
|
);
|
|
90
|
-
return /* @__PURE__ */
|
|
91
|
-
}),
|
|
92
|
-
if (
|
|
93
|
-
for (const [
|
|
94
|
-
if (typeof
|
|
95
|
-
const g =
|
|
96
|
-
const
|
|
97
|
-
return /* @__PURE__ */
|
|
90
|
+
return /* @__PURE__ */ d.createElement(L.Provider, { value: c }, s);
|
|
91
|
+
}), I = {};
|
|
92
|
+
if (l = {}, e.props && Object.assign(l, e.props), e.actions && Object.assign(l, e.actions), e.children)
|
|
93
|
+
for (const [r, n] of Object.entries(e.children))
|
|
94
|
+
if (typeof n == "function") {
|
|
95
|
+
const g = n, s = (c) => {
|
|
96
|
+
const o = g(c);
|
|
97
|
+
return /* @__PURE__ */ d.createElement(o.View, null);
|
|
98
98
|
};
|
|
99
|
-
Reflect.set(
|
|
99
|
+
Reflect.set(I, C(r), s);
|
|
100
100
|
} else
|
|
101
|
-
Reflect.set(
|
|
102
|
-
for (const [
|
|
103
|
-
|
|
104
|
-
const
|
|
105
|
-
onPropChanging:
|
|
106
|
-
let s = !0, c =
|
|
107
|
-
return c && (s = c(String(
|
|
101
|
+
Reflect.set(I, r, n);
|
|
102
|
+
for (const [r, n] of Object.entries(i))
|
|
103
|
+
r in l && (K(n) ? b.set(r, n) : Reflect.set(l, r, n));
|
|
104
|
+
const E = {
|
|
105
|
+
onPropChanging: i.onPropChanging || e.events?.onPropChanging ? (r, n, g) => {
|
|
106
|
+
let s = !0, c = i.onPropChanging;
|
|
107
|
+
return c && (s = c(String(r), n, g)), s && (c = e.events?.onPropChanging, c && (s = c(String(r), n, g))), s;
|
|
108
108
|
} : void 0,
|
|
109
|
-
onPropChange:
|
|
110
|
-
|
|
109
|
+
onPropChange: i.onPropChange || e.events?.onPropChange ? (r, n) => {
|
|
110
|
+
i.onPropChange?.(String(r), n), e.events?.onPropChange?.(String(r), n);
|
|
111
111
|
} : void 0
|
|
112
112
|
};
|
|
113
|
-
function
|
|
114
|
-
const
|
|
115
|
-
return
|
|
113
|
+
function R(r) {
|
|
114
|
+
const n = `${T}${C(r)}`;
|
|
115
|
+
return i[n] || e.events?.[n];
|
|
116
116
|
}
|
|
117
|
-
function
|
|
118
|
-
const
|
|
117
|
+
function x(r) {
|
|
118
|
+
const n = `${A}${C(r)}`;
|
|
119
119
|
return ((g, s) => {
|
|
120
|
-
let c = !0,
|
|
121
|
-
return
|
|
120
|
+
let c = !0, o = i[n];
|
|
121
|
+
return o && (c = o(g, s)), c && (o = e.events?.[n], o && (c = o(g, s))), c;
|
|
122
122
|
});
|
|
123
123
|
}
|
|
124
|
-
function
|
|
125
|
-
const
|
|
124
|
+
function j(r) {
|
|
125
|
+
const n = `${z}${C(r)}`;
|
|
126
126
|
return ((g) => {
|
|
127
|
-
|
|
127
|
+
i[n]?.(g), e.events?.[n]?.(g);
|
|
128
128
|
});
|
|
129
129
|
}
|
|
130
|
-
let
|
|
130
|
+
let k = {};
|
|
131
131
|
if (e.props) {
|
|
132
|
-
for (const
|
|
133
|
-
|
|
134
|
-
onGet:
|
|
135
|
-
onChanging:
|
|
136
|
-
onChange:
|
|
132
|
+
for (const r of Object.keys(e.props))
|
|
133
|
+
E[r] = {
|
|
134
|
+
onGet: R(r),
|
|
135
|
+
onChanging: x(r),
|
|
136
|
+
onChange: j(r)
|
|
137
137
|
};
|
|
138
|
-
for (const
|
|
139
|
-
|
|
138
|
+
for (const r of Object.keys(e.props))
|
|
139
|
+
k[r] = P.deep;
|
|
140
140
|
}
|
|
141
141
|
if (e.actions)
|
|
142
|
-
for (const
|
|
142
|
+
for (const r of Object.keys(e.actions))
|
|
143
143
|
;
|
|
144
|
-
|
|
144
|
+
l = P(l, k, {
|
|
145
145
|
deep: !0
|
|
146
|
-
}),
|
|
147
|
-
let
|
|
146
|
+
}), l = Q(l, b, E);
|
|
147
|
+
let O = {};
|
|
148
148
|
if (t = {
|
|
149
|
-
id:
|
|
150
|
-
key:
|
|
151
|
-
regType:
|
|
149
|
+
id: i.$id,
|
|
150
|
+
key: i.$key,
|
|
151
|
+
regType: u,
|
|
152
152
|
parentId: void 0,
|
|
153
|
-
getHierarchyId: () =>
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
},
|
|
161
|
-
getParent: () => {
|
|
162
|
-
},
|
|
163
|
-
getNodeMap: () => {
|
|
164
|
-
},
|
|
165
|
-
bindings: v,
|
|
153
|
+
getHierarchyId: () => y.getHierarchyPath(t.id),
|
|
154
|
+
getChainDown: () => y.getChainDown(t.id),
|
|
155
|
+
getChainUp: () => y.getChainUp(t.id),
|
|
156
|
+
getChildren: () => y.getChildren(t.id),
|
|
157
|
+
getParent: () => y.getParent(t.id),
|
|
158
|
+
getNodeMap: () => y.getNodeMap(),
|
|
159
|
+
bindings: b,
|
|
166
160
|
get msgBus() {
|
|
167
|
-
return
|
|
161
|
+
return B();
|
|
168
162
|
},
|
|
169
|
-
msgBroker:
|
|
170
|
-
effects:
|
|
163
|
+
msgBroker: a,
|
|
164
|
+
effects: O,
|
|
171
165
|
// view: componentDef.view,
|
|
172
|
-
View:
|
|
173
|
-
children:
|
|
174
|
-
model:
|
|
166
|
+
View: N,
|
|
167
|
+
children: I,
|
|
168
|
+
model: l
|
|
175
169
|
}, e.effects)
|
|
176
|
-
for (const [
|
|
177
|
-
|
|
170
|
+
for (const [r, n] of Object.entries(e.effects))
|
|
171
|
+
O[r] = W(
|
|
178
172
|
t,
|
|
179
|
-
|
|
180
|
-
|
|
173
|
+
r,
|
|
174
|
+
n
|
|
181
175
|
);
|
|
182
|
-
return e.events?.onInit && e.events.onInit(t),
|
|
176
|
+
return e.events?.onInit && e.events.onInit(t), i.onInit && i.onInit(t), t;
|
|
183
177
|
}
|
|
184
|
-
function
|
|
185
|
-
const t =
|
|
186
|
-
return
|
|
178
|
+
function oe(e, i) {
|
|
179
|
+
const t = F(() => Y(e, i));
|
|
180
|
+
return w(() => () => {
|
|
187
181
|
t.current = null;
|
|
188
182
|
}, []), t.current;
|
|
189
183
|
}
|
|
190
|
-
function
|
|
184
|
+
function se(e) {
|
|
191
185
|
return (t) => {
|
|
192
|
-
const
|
|
193
|
-
return /* @__PURE__ */
|
|
186
|
+
const l = e(t);
|
|
187
|
+
return /* @__PURE__ */ d.createElement(l.View, { ...t });
|
|
194
188
|
};
|
|
195
189
|
}
|
|
196
190
|
export {
|
|
197
|
-
|
|
198
|
-
|
|
191
|
+
se as getFC,
|
|
192
|
+
oe as useComponent
|
|
199
193
|
};
|
|
200
194
|
//# sourceMappingURL=react.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.es.js","sources":["../../src/componentModel/react.tsx"],"sourcesContent":["import React, { PropsWithChildren, useEffect, useLayoutEffect, FC, useMemo } from 'react';\r\nimport { Mutable } from '@actdim/utico/typeCore';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { action, observable } from 'mobx';\r\nimport { useLazyRef } from '@/reactHooks';\r\nimport { getGlobalFlags } from '@/globals';\r\nimport { ReactComponentContext, useComponentContext } from './componentContext';\r\nimport {\r\n Binding,\r\n Component,\r\n ComponentChildren,\r\n ComponentDef,\r\n ComponentModel,\r\n ComponentMsgHeaders,\r\n ComponentParams,\r\n ComponentStruct,\r\n ComponentViewImplFn,\r\n ComponentViewProps,\r\n EffectController,\r\n EffectFn,\r\n ValueChangeHandler,\r\n ValueChangingHandler,\r\n} from './contracts';\r\nimport { $ON_CHANGE, $ON_CHANGING, $ON_GET, $isBinding, ComponentMsgFilter } from './contracts';\r\nimport { lazy } from '@actdim/utico/utils';\r\nimport {\r\n createEffect,\r\n createRecursiveProxy,\r\n getComponentSourceByCaller,\r\n getComponentMsgBus,\r\n isBinding,\r\n ProxyEventHandlers,\r\n registerMsgBroker,\r\n toHtmlId,\r\n} from './core';\r\n\r\nfunction capitalize(name: string) {\r\n return name.replace(/^./, name[0].toUpperCase());\r\n}\r\n\r\nfunction cleanSourceRef(sourceRef: string) {\r\n // remove origin\r\n return sourceRef.replace(/^[a-z][a-z0-9+.-]*:\\/\\/[^\\/]+/, '');\r\n}\r\n\r\nfunction createComponent<TStruct extends ComponentStruct = ComponentStruct>(\r\n componentDef: ComponentDef<TStruct>,\r\n params?: ComponentParams<TStruct>,\r\n): Component<TStruct> {\r\n // result\r\n let component: Mutable<Component<TStruct>>;\r\n let model: Mutable<ComponentModel<TStruct>>;\r\n\r\n if (!componentDef) {\r\n componentDef = {};\r\n }\r\n\r\n let regType = componentDef.regType;\r\n if (!regType) {\r\n regType = getComponentSourceByCaller(6);\r\n // type = getComponentNameByCaller(6);\r\n regType = cleanSourceRef(regType);\r\n // throw new Error('Valid component definition is required');\r\n }\r\n\r\n if (!params) {\r\n params = {};\r\n }\r\n\r\n const view = componentDef.view;\r\n let msgBus = componentDef.msgBus;\r\n\r\n const bindings = new Map<PropertyKey, Binding>();\r\n\r\n const componentMsgBus = lazy(() => {\r\n return getComponentMsgBus(msgBus, (headers) => {\r\n if (headers?.sourceId == undefined) {\r\n headers.sourceId = component.id;\r\n }\r\n }); // as ComponentModel<TStruct>['msgBus']\r\n });\r\n\r\n let msgBroker = {\r\n ...componentDef.msgBroker,\r\n };\r\n\r\n if (!msgBroker.abortController) {\r\n msgBroker.abortController = new AbortController();\r\n }\r\n\r\n const ViewFC = observer((props: ComponentViewProps) => {\r\n const context = useComponentContext();\r\n const parentId = context.currentId;\r\n\r\n component.parentId = parentId;\r\n\r\n if (!msgBus) {\r\n msgBus = context.msgBus;\r\n }\r\n\r\n if (!component.id) {\r\n let id = params.$id;\r\n if (!id) {\r\n const key = params.$key;\r\n if (key) {\r\n id = `${toHtmlId(regType)}#${key}`;\r\n } else {\r\n id = context.getNextId(regType);\r\n }\r\n }\r\n\r\n component.id = id;\r\n component.getHierarchyId = () => context.getHierarchyPath(id);\r\n component.getChainDown = () => context.getChainDown(id);\r\n component.getChainUp = () => context.getChainUp(id);\r\n component.getChildren = () => context.getChildren(id);\r\n component.getParent = () => context.getParent(id);\r\n component.getNodeMap = () => context.getNodeMap();\r\n }\r\n\r\n useLayoutEffect(() => {\r\n try {\r\n context.register(component.id, regType, parentId);\r\n\r\n if (getGlobalFlags().debug) {\r\n const hierarchyId = component.getHierarchyId();\r\n console.debug(`${hierarchyId}>layout`);\r\n }\r\n\r\n registerMsgBroker(component);\r\n\r\n componentDef.events?.onLayout?.(component);\r\n params.onLayout?.(component);\r\n } catch (err) {\r\n componentDef.events?.onError?.(component, err);\r\n params.onError?.(component, err);\r\n }\r\n\r\n return () => {\r\n if (getGlobalFlags().debug) {\r\n const hierarchyId = component.getHierarchyId();\r\n console.debug(`${hierarchyId}>layout-destroy`);\r\n }\r\n context.unregister(component.id);\r\n\r\n msgBroker.abortController?.abort();\r\n\r\n componentDef.events?.onLayoutDestroy?.(component);\r\n params.onLayoutDestroy?.(component);\r\n };\r\n }, [componentDef, params, context]);\r\n\r\n useEffect(() => {\r\n try {\r\n if (getGlobalFlags().debug) {\r\n // mount\r\n const hierarchyId = component.getHierarchyId();\r\n console.debug(`${hierarchyId}>ready`);\r\n }\r\n componentDef.events?.onReady?.(component);\r\n params.onReady?.(component);\r\n } catch (err) {\r\n if (getGlobalFlags().debug) {\r\n // unmount\r\n const hierarchyId = component.getHierarchyId();\r\n console.debug(`${hierarchyId}>destroy`);\r\n }\r\n componentDef.events?.onError?.(component, err);\r\n params.onError?.(component, err);\r\n }\r\n return () => {\r\n componentDef.events?.onDestroy?.(component);\r\n params.onDestroy?.(component);\r\n };\r\n }, [componentDef, params, context]);\r\n\r\n let content: React.ReactNode;\r\n // let content: any;\r\n try {\r\n if (getGlobalFlags().debug) {\r\n // render\r\n const hierarchyId = component.getHierarchyId();\r\n console.debug(`${hierarchyId}>view`);\r\n }\r\n if (typeof view === 'function') {\r\n content = view(props, component);\r\n } else {\r\n // content = props.children;\r\n content = <>{props.children}</>;\r\n }\r\n } catch (err) {\r\n // throw err;\r\n const errDetails = JSON.stringify(err);\r\n // msgBus.send\r\n content = <>{errDetails}</>;\r\n }\r\n const scopeContext = useMemo(\r\n () => ({ ...context, currentId: component.id }),\r\n [componentDef, params, context],\r\n );\r\n return (\r\n <ReactComponentContext.Provider value={scopeContext}>\r\n {content}\r\n </ReactComponentContext.Provider>\r\n );\r\n });\r\n\r\n const children = {} as ComponentChildren<TStruct['children']>;\r\n\r\n model = {} as Mutable<ComponentModel<TStruct>>;\r\n\r\n if (componentDef.props) {\r\n Object.assign(model, componentDef.props);\r\n }\r\n\r\n if (componentDef.actions) {\r\n Object.assign(model, componentDef.actions);\r\n }\r\n\r\n if (componentDef.children) {\r\n for (const [key, value] of Object.entries(componentDef.children)) {\r\n if (typeof value == 'function') {\r\n const view = value as (params: any) => Component;\r\n const ChildViewFC: ComponentViewImplFn<TStruct> = (props) => {\r\n const c = view(props);\r\n return <c.View />;\r\n // if (typeof c.view === \"function\") {\r\n // return c.view(props);\r\n // }\r\n // return <>{props.children}</>;\r\n };\r\n Reflect.set(children, capitalize(key), ChildViewFC);\r\n } else {\r\n Reflect.set(children, key, value);\r\n }\r\n }\r\n }\r\n\r\n // Reflect.ownKeys/Object.keys\r\n for (const [key, value] of Object.entries(params)) {\r\n // model.hasOwnProperty(key)\r\n if (key in model) {\r\n if (isBinding(value)) {\r\n bindings.set(key, value);\r\n } else {\r\n Reflect.set(model, key, value);\r\n }\r\n }\r\n }\r\n\r\n const proxyEventHandlers: Pick<ProxyEventHandlers, 'onPropChanging' | 'onPropChange'> = {\r\n onPropChanging:\r\n params.onPropChanging || componentDef.events?.onPropChanging\r\n ? (prop, oldValue, newValue) => {\r\n let result = true;\r\n let handler = params.onPropChanging;\r\n if (handler) {\r\n result = handler(String(prop), oldValue, newValue);\r\n }\r\n if (result) {\r\n handler = componentDef.events?.onPropChanging;\r\n if (handler) {\r\n result = handler(String(prop), oldValue, newValue);\r\n }\r\n }\r\n return result;\r\n }\r\n : undefined,\r\n onPropChange:\r\n params.onPropChange || componentDef.events?.onPropChange\r\n ? (prop, value) => {\r\n params.onPropChange?.(String(prop), value);\r\n componentDef.events?.onPropChange?.(String(prop), value);\r\n }\r\n : undefined,\r\n };\r\n\r\n function resolveOnGetEventHandler(prop: string) {\r\n const key = `${$ON_GET}${capitalize(prop)}`;\r\n return params[key] || componentDef.events?.[key];\r\n }\r\n\r\n function resolveOnChangingEventHandler(prop: string) {\r\n const key = `${$ON_CHANGING}${capitalize(prop)}`;\r\n return ((oldValue: any, newValue: any) => {\r\n let result = true;\r\n let handler = params[key] as ValueChangingHandler<any>;\r\n if (handler) {\r\n result = handler(oldValue, newValue);\r\n }\r\n if (result) {\r\n handler = componentDef.events?.[key] as ValueChangingHandler<any>;\r\n if (handler) {\r\n result = handler(oldValue, newValue);\r\n }\r\n }\r\n return result;\r\n }) as ValueChangingHandler;\r\n }\r\n\r\n function resolveOnChangeEventHandler(prop: string) {\r\n const key = `${$ON_CHANGE}${capitalize(prop)}`;\r\n return ((value: any) => {\r\n (params[key] as ValueChangeHandler<any>)?.(value);\r\n (componentDef.events?.[key] as ValueChangeHandler<any>)?.(value);\r\n }) as ValueChangeHandler;\r\n }\r\n\r\n let annotationMap: Record<string, any> = {};\r\n\r\n if (componentDef.props) {\r\n for (const prop of Object.keys(componentDef.props)) {\r\n proxyEventHandlers[prop] = {\r\n onGet: resolveOnGetEventHandler(prop),\r\n onChanging: resolveOnChangingEventHandler(prop),\r\n onChange: resolveOnChangeEventHandler(prop),\r\n };\r\n }\r\n\r\n for (const key of Object.keys(componentDef.props)) {\r\n annotationMap[key] = observable.deep;\r\n }\r\n }\r\n\r\n if (componentDef.actions) {\r\n const annotationMap: Record<string, any> = {};\r\n for (const key of Object.keys(componentDef.actions)) {\r\n annotationMap[key] = action;\r\n }\r\n }\r\n\r\n model = observable(model, annotationMap, {\r\n deep: true,\r\n });\r\n\r\n model = createRecursiveProxy(model, bindings, proxyEventHandlers);\r\n\r\n let effects: Record<string, EffectController> = {};\r\n component = {\r\n id: params.$id,\r\n key: params.$key,\r\n regType: regType,\r\n parentId: undefined,\r\n getHierarchyId: () => undefined,\r\n getChainDown: () => undefined,\r\n getChainUp: () => undefined,\r\n getChildren: () => undefined,\r\n getParent: () => undefined,\r\n getNodeMap: () => undefined,\r\n bindings: bindings,\r\n get msgBus() {\r\n return componentMsgBus();\r\n },\r\n msgBroker: msgBroker,\r\n effects: effects,\r\n // view: componentDef.view,\r\n View: ViewFC,\r\n children: children,\r\n model: model,\r\n };\r\n\r\n if (componentDef.effects) {\r\n for (const [name, fn] of Object.entries(componentDef.effects)) {\r\n effects[name] = createEffect(\r\n component,\r\n name,\r\n fn as EffectFn<TStruct, ComponentMsgHeaders>,\r\n );\r\n }\r\n }\r\n\r\n if (componentDef.events?.onInit) {\r\n componentDef.events.onInit(component);\r\n }\r\n\r\n if (params.onInit) {\r\n params.onInit(component);\r\n }\r\n\r\n return component;\r\n}\r\n\r\nexport function useComponent<\r\n TStruct extends ComponentStruct = ComponentStruct,\r\n TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders,\r\n>(componentDef: ComponentDef<TStruct, TMsgHeaders>, params: ComponentParams<TStruct>) {\r\n const ref = useLazyRef(() => createComponent(componentDef, params));\r\n useLayoutEffect(() => {\r\n return () => {\r\n ref.current = null;\r\n };\r\n }, []); // [params]?\r\n return ref.current;\r\n}\r\n\r\n// asFC/toFC\r\nexport function getFC<TStruct extends ComponentStruct>(\r\n factory: (params: ComponentParams<TStruct>) => Component<TStruct>,\r\n): FC<ComponentParams<TStruct>> {\r\n // observer\r\n const fc = (params: ComponentParams<TStruct> & PropsWithChildren) => {\r\n // componentHook\r\n const c = factory(params); // without useRef!\r\n // return c.view();\r\n return <c.View {...params} />;\r\n };\r\n return fc;\r\n}\r\n"],"names":["capitalize","name","cleanSourceRef","sourceRef","createComponent","componentDef","params","component","model","regType","getComponentSourceByCaller","view","msgBus","bindings","componentMsgBus","lazy","getComponentMsgBus","headers","msgBroker","ViewFC","observer","props","context","useComponentContext","parentId","id","key","toHtmlId","useLayoutEffect","getGlobalFlags","hierarchyId","registerMsgBroker","err","useEffect","content","React","errDetails","scopeContext","useMemo","ReactComponentContext","children","value","ChildViewFC","c","isBinding","proxyEventHandlers","prop","oldValue","newValue","result","handler","resolveOnGetEventHandler","$ON_GET","resolveOnChangingEventHandler","$ON_CHANGING","resolveOnChangeEventHandler","$ON_CHANGE","annotationMap","observable","createRecursiveProxy","effects","fn","createEffect","useComponent","ref","useLazyRef","getFC","factory"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"react.es.js","sources":["../../src/componentModel/react.tsx"],"sourcesContent":["import React, { PropsWithChildren, useEffect, useLayoutEffect, FC, useMemo } from 'react';\r\nimport { Mutable } from '@actdim/utico/typeCore';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { action, observable } from 'mobx';\r\nimport { useLazyRef } from '@/reactHooks';\r\nimport { getGlobalFlags } from '@/globals';\r\nimport { ReactComponentContext, useComponentContext } from './componentContext';\r\nimport {\r\n Binding,\r\n Component,\r\n ComponentChildren,\r\n ComponentDef,\r\n ComponentModel,\r\n ComponentMsgHeaders,\r\n ComponentParams,\r\n ComponentStruct,\r\n ComponentViewImplFn,\r\n ComponentViewProps,\r\n EffectController,\r\n EffectFn,\r\n ValueChangeHandler,\r\n ValueChangingHandler,\r\n} from './contracts';\r\nimport { $ON_CHANGE, $ON_CHANGING, $ON_GET, $isBinding, ComponentMsgFilter } from './contracts';\r\nimport { lazy } from '@actdim/utico/utils';\r\nimport {\r\n createEffect,\r\n createRecursiveProxy,\r\n getComponentSourceByCaller,\r\n getComponentMsgBus,\r\n isBinding,\r\n ProxyEventHandlers,\r\n registerMsgBroker,\r\n toHtmlId,\r\n} from './core';\r\n\r\nfunction capitalize(name: string) {\r\n return name.replace(/^./, name[0].toUpperCase());\r\n}\r\n\r\nfunction cleanSourceRef(sourceRef: string) {\r\n // remove origin\r\n return sourceRef.replace(/^[a-z][a-z0-9+.-]*:\\/\\/[^\\/]+/, '');\r\n}\r\n\r\nfunction createComponent<TStruct extends ComponentStruct = ComponentStruct>(\r\n componentDef: ComponentDef<TStruct>,\r\n params?: ComponentParams<TStruct>,\r\n): Component<TStruct> {\r\n // result\r\n let component: Mutable<Component<TStruct>>;\r\n let model: Mutable<ComponentModel<TStruct>>;\r\n\r\n if (!componentDef) {\r\n componentDef = {};\r\n }\r\n\r\n let regType = componentDef.regType;\r\n if (!regType) {\r\n regType = getComponentSourceByCaller(6);\r\n // type = getComponentNameByCaller(6);\r\n regType = cleanSourceRef(regType);\r\n // throw new Error('Valid component definition is required');\r\n }\r\n\r\n if (!params) {\r\n params = {};\r\n }\r\n\r\n const view = componentDef.view;\r\n let msgBus = componentDef.msgBus;\r\n\r\n const bindings = new Map<PropertyKey, Binding>();\r\n\r\n const componentMsgBus = lazy(() => {\r\n return getComponentMsgBus(msgBus, (headers) => {\r\n if (headers?.sourceId == undefined) {\r\n headers.sourceId = component.id;\r\n }\r\n }); // as ComponentModel<TStruct>['msgBus']\r\n });\r\n\r\n let msgBroker = {\r\n ...componentDef.msgBroker,\r\n };\r\n\r\n if (!msgBroker.abortController) {\r\n msgBroker.abortController = new AbortController();\r\n }\r\n\r\n const context = useComponentContext();\r\n\r\n const ViewFC = observer((props: ComponentViewProps) => {\r\n const context = useComponentContext();\r\n const parentId = context.currentId;\r\n\r\n component.parentId = parentId;\r\n\r\n if (!msgBus) {\r\n msgBus = context.msgBus;\r\n }\r\n\r\n if (!component.id) {\r\n let id = params.$id;\r\n if (!id) {\r\n const key = params.$key;\r\n if (key) {\r\n id = `${toHtmlId(regType)}#${key}`;\r\n } else {\r\n id = context.getNextId(regType);\r\n }\r\n }\r\n component.id = id;\r\n }\r\n\r\n useLayoutEffect(() => {\r\n try {\r\n context.register(component.id, regType, parentId);\r\n\r\n if (getGlobalFlags().debug) {\r\n const hierarchyId = component.getHierarchyId();\r\n console.debug(`${hierarchyId}>layout`);\r\n }\r\n\r\n registerMsgBroker(component);\r\n\r\n componentDef.events?.onLayout?.(component);\r\n params.onLayout?.(component);\r\n } catch (err) {\r\n componentDef.events?.onError?.(component, err);\r\n params.onError?.(component, err);\r\n }\r\n\r\n return () => {\r\n if (getGlobalFlags().debug) {\r\n const hierarchyId = component.getHierarchyId();\r\n console.debug(`${hierarchyId}>layout-destroy`);\r\n }\r\n context.unregister(component.id);\r\n\r\n msgBroker.abortController?.abort();\r\n\r\n componentDef.events?.onLayoutDestroy?.(component);\r\n params.onLayoutDestroy?.(component);\r\n };\r\n }, [componentDef, params, context]);\r\n\r\n useEffect(() => {\r\n try {\r\n if (getGlobalFlags().debug) {\r\n // mount\r\n const hierarchyId = component.getHierarchyId();\r\n console.debug(`${hierarchyId}>ready`);\r\n }\r\n componentDef.events?.onReady?.(component);\r\n params.onReady?.(component);\r\n } catch (err) {\r\n if (getGlobalFlags().debug) {\r\n // unmount\r\n const hierarchyId = component.getHierarchyId();\r\n console.debug(`${hierarchyId}>destroy`);\r\n }\r\n componentDef.events?.onError?.(component, err);\r\n params.onError?.(component, err);\r\n }\r\n return () => {\r\n componentDef.events?.onDestroy?.(component);\r\n params.onDestroy?.(component);\r\n };\r\n }, [componentDef, params, context]);\r\n\r\n let content: React.ReactNode;\r\n // let content: any;\r\n try {\r\n if (getGlobalFlags().debug) {\r\n // render\r\n const hierarchyId = component.getHierarchyId();\r\n console.debug(`${hierarchyId}>view`);\r\n }\r\n if (typeof view === 'function') {\r\n content = view(props, component);\r\n } else {\r\n // content = props.children;\r\n content = <>{props.children}</>;\r\n }\r\n } catch (err) {\r\n // throw err;\r\n const errDetails = JSON.stringify(err);\r\n // msgBus.send\r\n content = <>{errDetails}</>;\r\n }\r\n const scopeContext = useMemo(\r\n () => ({ ...context, currentId: component.id }),\r\n [componentDef, params, context],\r\n );\r\n return (\r\n <ReactComponentContext.Provider value={scopeContext}>\r\n {content}\r\n </ReactComponentContext.Provider>\r\n );\r\n });\r\n\r\n const children = {} as ComponentChildren<TStruct['children']>;\r\n\r\n model = {} as Mutable<ComponentModel<TStruct>>;\r\n\r\n if (componentDef.props) {\r\n Object.assign(model, componentDef.props);\r\n }\r\n\r\n if (componentDef.actions) {\r\n Object.assign(model, componentDef.actions);\r\n }\r\n\r\n if (componentDef.children) {\r\n for (const [key, value] of Object.entries(componentDef.children)) {\r\n if (typeof value == 'function') {\r\n const view = value as (params: any) => Component;\r\n const ChildViewFC: ComponentViewImplFn<TStruct> = (props) => {\r\n const c = view(props);\r\n return <c.View />;\r\n // if (typeof c.view === \"function\") {\r\n // return c.view(props);\r\n // }\r\n // return <>{props.children}</>;\r\n };\r\n Reflect.set(children, capitalize(key), ChildViewFC);\r\n } else {\r\n Reflect.set(children, key, value);\r\n }\r\n }\r\n }\r\n\r\n // Reflect.ownKeys/Object.keys\r\n for (const [key, value] of Object.entries(params)) {\r\n // model.hasOwnProperty(key)\r\n if (key in model) {\r\n if (isBinding(value)) {\r\n bindings.set(key, value);\r\n } else {\r\n Reflect.set(model, key, value);\r\n }\r\n }\r\n }\r\n\r\n const proxyEventHandlers: Pick<ProxyEventHandlers, 'onPropChanging' | 'onPropChange'> = {\r\n onPropChanging:\r\n params.onPropChanging || componentDef.events?.onPropChanging\r\n ? (prop, oldValue, newValue) => {\r\n let result = true;\r\n let handler = params.onPropChanging;\r\n if (handler) {\r\n result = handler(String(prop), oldValue, newValue);\r\n }\r\n if (result) {\r\n handler = componentDef.events?.onPropChanging;\r\n if (handler) {\r\n result = handler(String(prop), oldValue, newValue);\r\n }\r\n }\r\n return result;\r\n }\r\n : undefined,\r\n onPropChange:\r\n params.onPropChange || componentDef.events?.onPropChange\r\n ? (prop, value) => {\r\n params.onPropChange?.(String(prop), value);\r\n componentDef.events?.onPropChange?.(String(prop), value);\r\n }\r\n : undefined,\r\n };\r\n\r\n function resolveOnGetEventHandler(prop: string) {\r\n const key = `${$ON_GET}${capitalize(prop)}`;\r\n return params[key] || componentDef.events?.[key];\r\n }\r\n\r\n function resolveOnChangingEventHandler(prop: string) {\r\n const key = `${$ON_CHANGING}${capitalize(prop)}`;\r\n return ((oldValue: any, newValue: any) => {\r\n let result = true;\r\n let handler = params[key] as ValueChangingHandler<any>;\r\n if (handler) {\r\n result = handler(oldValue, newValue);\r\n }\r\n if (result) {\r\n handler = componentDef.events?.[key] as ValueChangingHandler<any>;\r\n if (handler) {\r\n result = handler(oldValue, newValue);\r\n }\r\n }\r\n return result;\r\n }) as ValueChangingHandler;\r\n }\r\n\r\n function resolveOnChangeEventHandler(prop: string) {\r\n const key = `${$ON_CHANGE}${capitalize(prop)}`;\r\n return ((value: any) => {\r\n (params[key] as ValueChangeHandler<any>)?.(value);\r\n (componentDef.events?.[key] as ValueChangeHandler<any>)?.(value);\r\n }) as ValueChangeHandler;\r\n }\r\n\r\n let annotationMap: Record<string, any> = {};\r\n\r\n if (componentDef.props) {\r\n for (const prop of Object.keys(componentDef.props)) {\r\n proxyEventHandlers[prop] = {\r\n onGet: resolveOnGetEventHandler(prop),\r\n onChanging: resolveOnChangingEventHandler(prop),\r\n onChange: resolveOnChangeEventHandler(prop),\r\n };\r\n }\r\n\r\n for (const key of Object.keys(componentDef.props)) {\r\n annotationMap[key] = observable.deep;\r\n }\r\n }\r\n\r\n if (componentDef.actions) {\r\n const annotationMap: Record<string, any> = {};\r\n for (const key of Object.keys(componentDef.actions)) {\r\n annotationMap[key] = action;\r\n }\r\n }\r\n\r\n model = observable(model, annotationMap, {\r\n deep: true,\r\n });\r\n\r\n model = createRecursiveProxy(model, bindings, proxyEventHandlers);\r\n\r\n let effects: Record<string, EffectController> = {};\r\n component = {\r\n id: params.$id,\r\n key: params.$key,\r\n regType: regType,\r\n parentId: undefined,\r\n getHierarchyId: () => context.getHierarchyPath(component.id),\r\n getChainDown: () => context.getChainDown(component.id),\r\n getChainUp: () => context.getChainUp(component.id),\r\n getChildren: () => context.getChildren(component.id),\r\n getParent: () => context.getParent(component.id),\r\n getNodeMap: () => context.getNodeMap(),\r\n bindings: bindings,\r\n get msgBus() {\r\n return componentMsgBus();\r\n },\r\n msgBroker: msgBroker,\r\n effects: effects,\r\n // view: componentDef.view,\r\n View: ViewFC,\r\n children: children,\r\n model: model,\r\n };\r\n\r\n if (componentDef.effects) {\r\n for (const [name, fn] of Object.entries(componentDef.effects)) {\r\n effects[name] = createEffect(\r\n component,\r\n name,\r\n fn as EffectFn<TStruct, ComponentMsgHeaders>,\r\n );\r\n }\r\n }\r\n\r\n if (componentDef.events?.onInit) {\r\n componentDef.events.onInit(component);\r\n }\r\n\r\n if (params.onInit) {\r\n params.onInit(component);\r\n }\r\n\r\n return component;\r\n}\r\n\r\nexport function useComponent<\r\n TStruct extends ComponentStruct = ComponentStruct,\r\n TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders,\r\n>(componentDef: ComponentDef<TStruct, TMsgHeaders>, params: ComponentParams<TStruct>) {\r\n const ref = useLazyRef(() => createComponent(componentDef, params));\r\n useLayoutEffect(() => {\r\n return () => {\r\n ref.current = null;\r\n };\r\n }, []); // [params]?\r\n return ref.current;\r\n}\r\n\r\n// asFC/toFC\r\nexport function getFC<TStruct extends ComponentStruct>(\r\n factory: (params: ComponentParams<TStruct>) => Component<TStruct>,\r\n): FC<ComponentParams<TStruct>> {\r\n const result = (params: ComponentParams<TStruct> & PropsWithChildren) => {\r\n // componentHook\r\n const c = factory(params); // without useRef!\r\n // return c.view();\r\n return <c.View {...params} />;\r\n };\r\n return result;\r\n}\r\n\r\n// TODO:\r\n// do not observe props with \"_\", \"$\" prefixes\r\n"],"names":["capitalize","name","cleanSourceRef","sourceRef","createComponent","componentDef","params","component","model","regType","getComponentSourceByCaller","view","msgBus","bindings","componentMsgBus","lazy","getComponentMsgBus","headers","msgBroker","context","useComponentContext","ViewFC","observer","props","parentId","id","key","toHtmlId","useLayoutEffect","getGlobalFlags","hierarchyId","registerMsgBroker","err","useEffect","content","React","errDetails","scopeContext","useMemo","ReactComponentContext","children","value","ChildViewFC","c","isBinding","proxyEventHandlers","prop","oldValue","newValue","result","handler","resolveOnGetEventHandler","$ON_GET","resolveOnChangingEventHandler","$ON_CHANGING","resolveOnChangeEventHandler","$ON_CHANGE","annotationMap","observable","createRecursiveProxy","effects","fn","createEffect","useComponent","ref","useLazyRef","getFC","factory"],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BaseAppMsgStruct } from '../appDomain/appContracts';
|
|
2
2
|
import { MsgProviderAdapter } from '../componentModel/adapters';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
import { MsgBus } from '@actdim/msgmesh/contracts';
|
|
4
|
+
export declare function createServiceProvider(msgBus: MsgBus<BaseAppMsgStruct>, adapters?: MsgProviderAdapter[], abortSignal?: AbortSignal): {
|
|
5
|
+
adapters: MsgProviderAdapter[];
|
|
6
|
+
abortSignal: AbortSignal;
|
|
7
|
+
};
|
|
6
8
|
//# sourceMappingURL=ServiceProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServiceProvider.d.ts","sourceRoot":"","sources":["../../src/services/ServiceProvider.
|
|
1
|
+
{"version":3,"file":"ServiceProvider.d.ts","sourceRoot":"","sources":["../../src/services/ServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAoB,MAAM,4BAA4B,CAAC;AAClF,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAEnD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC,EAAE,kBAAkB,EAAE,EAAE,WAAW,CAAC,EAAE,WAAW;;;EAUjI"}
|
|
@@ -1,17 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const r = new AbortController();
|
|
9
|
-
return s(e.msgBus, t.adapters, r.signal), () => {
|
|
10
|
-
r.abort();
|
|
11
|
-
};
|
|
12
|
-
}, [e.msgBus, t.adapters]), /* @__PURE__ */ n.createElement(i.Provider, { value: t.adapters }, t.children);
|
|
1
|
+
import { registerAdapters as n } from "../componentModel/adapters.es.js";
|
|
2
|
+
function i(o, e, r) {
|
|
3
|
+
const t = new AbortController();
|
|
4
|
+
return r && (r = AbortSignal.any([r, t.signal])), n(o, e, r), {
|
|
5
|
+
adapters: e,
|
|
6
|
+
abortSignal: r
|
|
7
|
+
};
|
|
13
8
|
}
|
|
14
9
|
export {
|
|
15
|
-
|
|
10
|
+
i as createServiceProvider
|
|
16
11
|
};
|
|
17
12
|
//# sourceMappingURL=ServiceProvider.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServiceProvider.es.js","sources":["../../src/services/ServiceProvider.
|
|
1
|
+
{"version":3,"file":"ServiceProvider.es.js","sources":["../../src/services/ServiceProvider.ts"],"sourcesContent":["import { BaseAppMsgStruct } from '@/appDomain/appContracts';\r\nimport { MsgProviderAdapter, registerAdapters } from '../componentModel/adapters';\r\nimport { MsgBus } from '@actdim/msgmesh/contracts';\r\n\r\nexport function createServiceProvider(msgBus: MsgBus<BaseAppMsgStruct>, adapters?: MsgProviderAdapter[], abortSignal?: AbortSignal) {\r\n const abortController = new AbortController();\r\n if (abortSignal) {\r\n abortSignal = AbortSignal.any([abortSignal, abortController.signal]);\r\n }\r\n registerAdapters(msgBus, adapters, abortSignal);\r\n return {\r\n adapters,\r\n abortSignal\r\n }\r\n}\r\n\r\n"],"names":["createServiceProvider","msgBus","adapters","abortSignal","abortController","registerAdapters"],"mappings":";AAIO,SAASA,EAAsBC,GAAkCC,GAAiCC,GAA2B;AAChI,QAAMC,IAAkB,IAAI,gBAAA;AAC5B,SAAID,MACAA,IAAc,YAAY,IAAI,CAACA,GAAaC,EAAgB,MAAM,CAAC,IAEvEC,EAAiBJ,GAAQC,GAAUC,CAAW,GACvC;AAAA,IACH,UAAAD;AAAA,IACA,aAAAC;AAAA,EAAA;AAER;"}
|
|
@@ -1,16 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
storeName?: string;
|
|
7
|
-
};
|
|
8
|
-
msgScope: {
|
|
9
|
-
provide: BaseAppMsgChannels<'APP-KV-STORE-GET' | 'APP-KV-STORE-SET' | 'APP-KV-STORE-REMOVE'>;
|
|
10
|
-
};
|
|
1
|
+
import { BaseAppMsgStruct } from '../appDomain/appContracts';
|
|
2
|
+
import { MsgBus } from '@actdim/msgmesh/contracts';
|
|
3
|
+
export declare function createStorageService(msgBus: MsgBus<BaseAppMsgStruct>, storeName: string, abortSignal?: AbortSignal): Promise<{
|
|
4
|
+
storeName: string;
|
|
5
|
+
abortSignal: AbortSignal;
|
|
11
6
|
}>;
|
|
12
|
-
export declare const useStorageService: (params: ComponentParams<Struct>) => Component<Struct>;
|
|
13
|
-
export type StorageServiceStruct = Struct;
|
|
14
|
-
export declare const StorageServiceFC: FC<ComponentParams<TStruct>>;
|
|
15
|
-
export {};
|
|
16
7
|
//# sourceMappingURL=StorageService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StorageService.d.ts","sourceRoot":"","sources":["../../src/services/StorageService.
|
|
1
|
+
{"version":3,"file":"StorageService.d.ts","sourceRoot":"","sources":["../../src/services/StorageService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAEnD,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW;;;GAwDxH"}
|
|
@@ -1,55 +1,44 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
});
|
|
12
|
-
return t = l({
|
|
13
|
-
props: {
|
|
14
|
-
storeName: ""
|
|
1
|
+
import { PersistentStore as i } from "@actdim/utico/store/persistentStore";
|
|
2
|
+
async function s(t, a, e) {
|
|
3
|
+
const c = new AbortController();
|
|
4
|
+
e && (e = AbortSignal.any([e, c.signal]));
|
|
5
|
+
const n = () => i.open(a);
|
|
6
|
+
return t.provide({
|
|
7
|
+
channel: "APP-KV-STORE-GET",
|
|
8
|
+
group: "in",
|
|
9
|
+
options: {
|
|
10
|
+
abortSignal: e
|
|
15
11
|
},
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
{
|
|
28
|
-
key: e.payload.key
|
|
29
|
-
},
|
|
30
|
-
e.payload.value
|
|
31
|
-
);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
12
|
+
callback: async (o) => await (await n()).get(o.payload.key)
|
|
13
|
+
}), t.provide({
|
|
14
|
+
channel: "APP-KV-STORE-SET",
|
|
15
|
+
group: "in",
|
|
16
|
+
options: {
|
|
17
|
+
abortSignal: e
|
|
18
|
+
},
|
|
19
|
+
callback: async (o) => {
|
|
20
|
+
await (await n()).set(
|
|
21
|
+
{
|
|
22
|
+
key: o.payload.key
|
|
34
23
|
},
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
24
|
+
o.payload.value
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
}), t.provide({
|
|
28
|
+
channel: "APP-KV-STORE-REMOVE",
|
|
29
|
+
group: "in",
|
|
30
|
+
options: {
|
|
31
|
+
abortSignal: e
|
|
43
32
|
},
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
r();
|
|
47
|
-
}
|
|
33
|
+
callback: async (o) => {
|
|
34
|
+
await (await n()).delete(o.payload.key);
|
|
48
35
|
}
|
|
49
|
-
}
|
|
50
|
-
|
|
36
|
+
}), {
|
|
37
|
+
storeName: a,
|
|
38
|
+
abortSignal: e
|
|
39
|
+
};
|
|
40
|
+
}
|
|
51
41
|
export {
|
|
52
|
-
|
|
53
|
-
m as useStorageService
|
|
42
|
+
s as createStorageService
|
|
54
43
|
};
|
|
55
44
|
//# sourceMappingURL=StorageService.es.js.map
|