@actdim/dynstruct 1.2.6 → 1.2.8

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.
Files changed (60) hide show
  1. package/README.md +2460 -18
  2. package/dist/appDomain/appContracts.d.ts.map +1 -1
  3. package/dist/appDomain/appContracts.es.js +1 -1
  4. package/dist/appDomain/appContracts.es.js.map +1 -1
  5. package/dist/appDomain/navigation.es.js.map +1 -1
  6. package/dist/appDomain/security/securityContracts.es.js.map +1 -1
  7. package/dist/appDomain/security/securityProvider.d.ts +6 -5
  8. package/dist/appDomain/security/securityProvider.d.ts.map +1 -1
  9. package/dist/appDomain/security/securityProvider.es.js +70 -45
  10. package/dist/appDomain/security/securityProvider.es.js.map +1 -1
  11. package/dist/appDomain/util.es.js.map +1 -1
  12. package/dist/componentModel/DynamicContent.d.ts +3 -4
  13. package/dist/componentModel/DynamicContent.d.ts.map +1 -1
  14. package/dist/componentModel/DynamicContent.es.js.map +1 -1
  15. package/dist/componentModel/adapters.es.js.map +1 -1
  16. package/dist/componentModel/componentContext.d.ts +5 -5
  17. package/dist/componentModel/componentContext.d.ts.map +1 -1
  18. package/dist/componentModel/componentContext.es.js.map +1 -1
  19. package/dist/componentModel/contracts.d.ts +29 -21
  20. package/dist/componentModel/contracts.d.ts.map +1 -1
  21. package/dist/componentModel/contracts.es.js +17 -7
  22. package/dist/componentModel/contracts.es.js.map +1 -1
  23. package/dist/componentModel/core.d.ts +2 -3
  24. package/dist/componentModel/core.d.ts.map +1 -1
  25. package/dist/componentModel/core.es.js +101 -101
  26. package/dist/componentModel/core.es.js.map +1 -1
  27. package/dist/componentModel/react/errorBoundary.d.ts +19 -0
  28. package/dist/componentModel/react/errorBoundary.d.ts.map +1 -0
  29. package/dist/componentModel/react/errorBoundary.es.js +52 -0
  30. package/dist/componentModel/react/errorBoundary.es.js.map +1 -0
  31. package/dist/componentModel/react.d.ts +2 -2
  32. package/dist/componentModel/react.d.ts.map +1 -1
  33. package/dist/componentModel/react.es.js +158 -140
  34. package/dist/componentModel/react.es.js.map +1 -1
  35. package/dist/componentModel/scope.d.ts +1 -1
  36. package/dist/componentModel/scope.d.ts.map +1 -1
  37. package/dist/componentModel/scope.es.js +1 -1
  38. package/dist/componentModel/scope.es.js.map +1 -1
  39. package/dist/globals.es.js.map +1 -1
  40. package/dist/net/apiError.es.js.map +1 -1
  41. package/dist/net/client.d.ts +9 -5
  42. package/dist/net/client.d.ts.map +1 -1
  43. package/dist/net/client.es.js +96 -80
  44. package/dist/net/client.es.js.map +1 -1
  45. package/dist/net/request.es.js.map +1 -1
  46. package/dist/reactHooks.d.ts +1 -1
  47. package/dist/reactHooks.d.ts.map +1 -1
  48. package/dist/reactHooks.es.js.map +1 -1
  49. package/dist/services/ServiceProvider.es.js.map +1 -1
  50. package/dist/services/StorageService.es.js.map +1 -1
  51. package/dist/services/react/NavService.d.ts.map +1 -1
  52. package/dist/services/react/NavService.es.js +15 -15
  53. package/dist/services/react/NavService.es.js.map +1 -1
  54. package/dist/services/react/ServiceProvider.d.ts +2 -2
  55. package/dist/services/react/ServiceProvider.d.ts.map +1 -1
  56. package/dist/services/react/ServiceProvider.es.js.map +1 -1
  57. package/dist/services/react/StorageService.d.ts.map +1 -1
  58. package/dist/services/react/StorageService.es.js +7 -7
  59. package/dist/services/react/StorageService.es.js.map +1 -1
  60. package/package.json +4 -2
@@ -2,17 +2,21 @@ import { IFetcher, IRequestParams } from './request';
2
2
  import { BaseAppContext } from '../appDomain/appContracts';
3
3
  export declare function extractApiName(name: string, suffixes: string[]): string | null;
4
4
  export declare class ClientBase {
5
- protected baseUrl: string;
6
- protected name: string;
5
+ baseUrl: string;
6
+ name: string;
7
+ apiId: string;
7
8
  private requestStateMap;
8
9
  private fetcher;
9
10
  private msgBus;
10
11
  private accessToken;
11
- private init;
12
12
  private apiSuffixes;
13
+ private apiConfig;
14
+ private abortController;
13
15
  constructor(context: BaseAppContext, fetcher?: IFetcher, apiSuffixes?: string[]);
14
- protected getBaseUrlAsync(): Promise<void>;
15
- private updateSecurityAsync;
16
+ [Symbol.dispose](): void;
17
+ protected init(): Promise<void>;
18
+ protected updateApiConfig(): Promise<void>;
19
+ private updateSecurity;
16
20
  private addAuthorizationAsync;
17
21
  private executeRequestInternalAsync;
18
22
  private executeRequestAsync;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/net/client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqB,QAAQ,EAAqB,cAAc,EAAiB,MAAM,WAAW,CAAC;AAE1G,OAAO,EAAoB,cAAc,EAAe,MAAM,0BAA0B,CAAC;AAIzF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAa9E;AAID,qBAAa,UAAU;IACnB,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAE1B,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;IAGvB,OAAO,CAAC,eAAe,CAA6B;IAEpD,OAAO,CAAC,OAAO,CAAW;IAE1B,OAAO,CAAC,MAAM,CAA2B;IAEzC,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO,CAAC,IAAI,CAAe;IAE3B,OAAO,CAAC,WAAW,CAAW;gBAElB,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,WAAW,WAAe;cAgBnE,eAAe;YAcjB,mBAAmB;YAUnB,qBAAqB;YAqBrB,2BAA2B;YAkD3B,mBAAmB;IA+CpB,UAAU,CAAC,CAAC,EAAE,aAAa,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;CA2CxE"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/net/client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqB,QAAQ,EAAqB,cAAc,EAAiB,MAAM,WAAW,CAAC;AAE1G,OAAO,EAAoB,cAAc,EAA8B,MAAM,0BAA0B,CAAC;AAIxG,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAa9E;AAID,qBAAa,UAAU;IACZ,OAAO,EAAE,MAAM,CAAC;IAEhB,IAAI,EAAE,MAAM,CAAC;IAEb,KAAK,EAAE,MAAM,CAAC;IAGrB,OAAO,CAAC,eAAe,CAA6B;IAEpD,OAAO,CAAC,OAAO,CAAW;IAE1B,OAAO,CAAC,MAAM,CAA2B;IAEzC,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO,CAAC,WAAW,CAAW;IAE9B,OAAO,CAAC,SAAS,CAAgB;IAEjC,OAAO,CAAC,eAAe,CAAkB;gBAE7B,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,WAAW,WAAe;IA2BnF,CAAC,MAAM,CAAC,OAAO,CAAC;cAIA,IAAI;cASJ,eAAe;YAiBjB,cAAc;YAQd,qBAAqB;YAwBrB,2BAA2B;YAkD3B,mBAAmB;IAiDpB,UAAU,CAAC,CAAC,EAAE,aAAa,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;CA2CxE"}
@@ -1,126 +1,142 @@
1
1
  import { v4 as d } from "uuid";
2
- import o from "http-status";
3
- import { getResponseResult as u } from "./request.es.js";
2
+ import c from "http-status";
3
+ import { getResponseResult as f } from "./request.es.js";
4
4
  import { ApiError as r } from "./apiError.es.js";
5
- import { $CONFIG_GET as f } from "../appDomain/appContracts.es.js";
6
- import { $AUTH_SIGNIN as p, $CONTEXT_GET as y, $AUTH_REFRESH as w, $AUTH_ENSURE as g } from "../appDomain/security/securityContracts.es.js";
7
- function A(i, e) {
8
- if (!i)
9
- return i;
10
- const t = e.map((c) => c.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|"), s = new RegExp(`(_?(${t}))+?$`, "i");
11
- let a = i.replace(s, "");
12
- return a = a.trim(), a.length > 0 ? a : i;
5
+ import { $CONFIG_GET as p } from "../appDomain/appContracts.es.js";
6
+ import { $AUTH_SIGNIN as u, $CONTEXT_GET as g, $AUTH_REFRESH as w, $AUTH_ENSURE as y } from "../appDomain/security/securityContracts.es.js";
7
+ function R(o, t) {
8
+ if (!o)
9
+ return o;
10
+ const e = t.map((n) => n.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|"), s = new RegExp(`(_?(${e}))+?$`, "i");
11
+ let i = o.replace(s, "");
12
+ return i = i.trim(), i.length > 0 ? i : o;
13
13
  }
14
- const T = ["api", "controller", "client", "fetcher"];
15
- class B {
14
+ const b = ["api", "controller", "client", "fetcher"];
15
+ class k {
16
16
  baseUrl;
17
17
  name;
18
+ apiId;
18
19
  // private requestStates
19
20
  requestStateMap;
20
21
  fetcher;
21
22
  msgBus;
22
23
  accessToken;
23
- init;
24
24
  apiSuffixes;
25
- constructor(e, n, t = T) {
26
- this.apiSuffixes = t, this.fetcher = n || window, this.requestStateMap = /* @__PURE__ */ new Map(), this.msgBus = e.msgBus, this.msgBus.on({
27
- channel: p,
25
+ apiConfig;
26
+ abortController;
27
+ constructor(t, a, e = b) {
28
+ this.apiSuffixes = e, this.fetcher = a || window, this.requestStateMap = /* @__PURE__ */ new Map(), this.msgBus = t.msgBus, this.abortController = new AbortController();
29
+ const s = [this.abortController.signal];
30
+ t?.abortSignal && s.push(t.abortSignal);
31
+ const i = AbortSignal.any(s);
32
+ this.msgBus.on({
33
+ channel: u,
28
34
  group: "out",
29
- callback: (s) => {
30
- this.accessToken = s.payload.accessToken;
35
+ callback: (n) => {
36
+ this.accessToken = n.payload.accessToken;
37
+ },
38
+ options: {
39
+ abortSignal: i
31
40
  }
32
- }), this.init = Promise.all([this.getBaseUrlAsync(), this.updateSecurityAsync()]);
41
+ });
33
42
  }
34
- async getBaseUrlAsync() {
35
- const n = (await this.msgBus.request({
36
- channel: f
37
- })).payload, t = A(this.name, this.apiSuffixes), s = Object.entries(n.apis).find((a) => a[0].toLowerCase() === t?.toLowerCase());
38
- s || console.warn(`API "${t}" is not defined in the current configuration. Using default configuration.`), this.baseUrl = s?.[1].url || n.baseUrl;
43
+ [Symbol.dispose]() {
44
+ this.abortController.abort();
39
45
  }
40
- async updateSecurityAsync() {
41
- if (!this.accessToken) {
42
- const e = await this.msgBus.request({
43
- channel: y
44
- });
45
- this.accessToken = e.payload.accessToken;
46
- }
47
- return this.accessToken;
46
+ async init() {
47
+ this.baseUrl || await this.updateApiConfig(), this.accessToken || await this.updateSecurity();
48
+ }
49
+ async updateApiConfig() {
50
+ const a = (await this.msgBus.request({
51
+ channel: p
52
+ })).payload;
53
+ let e = this.apiId;
54
+ e || (this.apiId = e = R(this.name, this.apiSuffixes));
55
+ const s = Object.entries(a?.apis || {}).find((i) => i[0].toLowerCase() === e?.toLowerCase());
56
+ s || console.warn(`API "${e}" is not defined in the current configuration. Using default configuration.`), this.apiConfig = s?.[1], this.baseUrl = this.apiConfig?.url || a?.baseUrl;
48
57
  }
49
- async addAuthorizationAsync(e) {
50
- const n = await this.updateSecurityAsync();
51
- if (!n)
58
+ async updateSecurity() {
59
+ const t = await this.msgBus.request({
60
+ channel: g
61
+ });
62
+ return this.accessToken = t.payload.accessToken, this.accessToken;
63
+ }
64
+ async addAuthorizationAsync(t) {
65
+ this.accessToken || await this.updateSecurity();
66
+ const a = this.accessToken;
67
+ if (!a)
52
68
  throw r.create({
53
- status: o.UNAUTHORIZED
69
+ status: c.UNAUTHORIZED
54
70
  });
55
- const t = "Authorization", s = e.headers, a = `Bearer ${n}`;
71
+ const e = "Authorization", s = t.headers, i = `Bearer ${a}`;
56
72
  if (s instanceof Headers)
57
- s.set(t, a);
73
+ s.set(e, i);
58
74
  else
59
75
  throw new Error("Unsupported headers");
60
76
  }
61
- async executeRequestInternalAsync(e) {
77
+ async executeRequestInternalAsync(t) {
62
78
  try {
63
- let n = !0;
64
- const t = e.callbacks && e.callbacks.onBeforeSendRequest;
65
- if (t) {
79
+ let a = !0;
80
+ const e = t.callbacks && t.callbacks.onBeforeSendRequest;
81
+ if (e) {
66
82
  const s = {
67
- request: e,
83
+ request: t,
68
84
  cancel: !1,
69
85
  handled: !1
70
86
  };
71
- if (await t(s), s.cancel)
72
- if (n = !1, e.status = "canceled", s.handled)
73
- e.result = s.result;
87
+ if (await e(s), s.cancel)
88
+ if (a = !1, t.status = "canceled", s.handled)
89
+ t.result = s.result;
74
90
  else
75
91
  throw new Error("The request was aborted");
76
92
  }
77
- if (n) {
78
- e.status = "executing";
79
- const s = await this.fetcher.fetch(e.url, e);
80
- r.assert(s, e);
81
- let a = e.callbacks && e.callbacks.onResponseRead;
82
- a || (a = async (l) => {
83
- const h = await u(s, e);
93
+ if (a) {
94
+ t.status = "executing";
95
+ const s = await this.fetcher.fetch(t.url, t);
96
+ r.assert(s, t);
97
+ let i = t.callbacks && t.callbacks.onResponseRead;
98
+ i || (i = async (l) => {
99
+ const h = await f(s, t);
84
100
  l.result = h;
85
101
  });
86
- const c = {
102
+ const n = {
87
103
  response: s
88
104
  };
89
- await a(c), e.result = c.result, e.status = "succeeded";
105
+ await i(n), t.result = n.result, t.status = "succeeded";
90
106
  }
91
- } catch (n) {
92
- throw e.status = "failed", n;
107
+ } catch (a) {
108
+ throw t.status = "failed", a;
93
109
  }
94
- return e;
110
+ return t;
95
111
  }
96
- async executeRequestAsync(e) {
97
- let n = 0;
112
+ async executeRequestAsync(t) {
113
+ let a = 0;
98
114
  do
99
115
  try {
100
- return e.useAuth && await this.addAuthorizationAsync(e), await this.executeRequestInternalAsync(e);
101
- } catch (t) {
102
- if (t instanceof r) {
103
- if (n > 0 || t.status === o.UPGRADE_REQUIRED)
104
- throw t;
105
- if (t.status === o.UNAUTHORIZED) {
106
- t.response?.headers?.get("token-expired") ? await this.msgBus.request({
116
+ return t.useAuth && await this.addAuthorizationAsync(t), await this.executeRequestInternalAsync(t);
117
+ } catch (e) {
118
+ if (e instanceof r) {
119
+ if (a > 0 || e.status === c.UPGRADE_REQUIRED)
120
+ throw e;
121
+ if (e.status === c.UNAUTHORIZED) {
122
+ e.response?.headers?.get("token-expired") ? await this.msgBus.request({
107
123
  channel: w
108
124
  }) : await this.msgBus.request({
109
- channel: g
125
+ channel: y
110
126
  });
111
127
  continue;
112
- }
113
- continue;
128
+ } else if (e.status >= c.INTERNAL_SERVER_ERROR)
129
+ continue;
114
130
  }
115
- throw t;
131
+ throw e;
116
132
  } finally {
117
- n++;
133
+ a++;
118
134
  }
119
135
  while (!0);
120
136
  }
121
137
  // T extends IApiResponse
122
- async fetchAsync(e) {
123
- await this.init, e = { ...{
138
+ async fetchAsync(t) {
139
+ await this.init, t = { ...{
124
140
  contentType: "application/json",
125
141
  method: "POST",
126
142
  body: null,
@@ -128,18 +144,18 @@ class B {
128
144
  cache: "default",
129
145
  credentials: "same-origin",
130
146
  mode: "cors"
131
- }, ...e }, e.id || (e.id = d()), e.headers instanceof Headers || (e.headers = new Headers(e.headers)), e.headers.append("Content-Type", e.contentType), e.method === "POST" && (e.body || (e.body = ""));
132
- let t = {
133
- ...e,
147
+ }, ...t }, t.id || (t.id = d()), t.headers instanceof Headers || (t.headers = new Headers(t.headers)), t.headers.append("Content-Type", t.contentType), t.method === "POST" && (t.body || (t.body = ""));
148
+ let e = {
149
+ ...t,
134
150
  status: "queued",
135
151
  response: void 0,
136
152
  result: void 0
137
153
  };
138
- return this.requestStateMap.set(e.id, t), await this.executeRequestAsync(t), t.result;
154
+ return this.requestStateMap.set(t.id, e), await this.executeRequestAsync(e), e.result;
139
155
  }
140
156
  }
141
157
  export {
142
- B as ClientBase,
143
- A as extractApiName
158
+ k as ClientBase,
159
+ R as extractApiName
144
160
  };
145
161
  //# sourceMappingURL=client.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.es.js","sources":["../../src/net/client.ts"],"sourcesContent":["import { v4 as uuid } from \"uuid\";\r\nimport httpStatus from \"http-status\";\r\nimport { getResponseResult, IFetcher, IRequestCallbacks, IRequestParams, IRequestState } from \"./request\";\r\nimport { ApiError } from \"./apiError\";\r\nimport { BaseAppMsgStruct, BaseAppContext, $CONFIG_GET } from \"@/appDomain/appContracts\";\r\nimport { MsgBus } from \"@actdim/msgmesh/contracts\";\r\nimport { $AUTH_ENSURE, $AUTH_REFRESH, $AUTH_SIGNIN, $CONTEXT_GET } from \"@/appDomain/security/securityContracts\";\r\n\r\nexport function extractApiName(name: string, suffixes: string[]): string | null {\r\n if (!name) {\r\n return name;\r\n // return null; // ?\r\n }\r\n const escaped = suffixes.map((s) => s.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"));\r\n const group = escaped.join(\"|\");\r\n const pattern = new RegExp(`(_?(${group}))+?$`, \"i\");\r\n\r\n let result = name.replace(pattern, \"\");\r\n\r\n result = result.trim();\r\n return result.length > 0 ? result : name;\r\n}\r\n\r\nconst API_SUFFIXES = [\"api\", \"controller\", \"client\", \"fetcher\"];\r\n// App(Api)ClientBase\r\nexport class ClientBase {\r\n protected baseUrl: string;\r\n\r\n protected name: string;\r\n\r\n // private requestStates\r\n private requestStateMap: Map<string, IRequestState>;\r\n\r\n private fetcher: IFetcher;\r\n\r\n private msgBus: MsgBus<BaseAppMsgStruct>;\r\n\r\n private accessToken: string;\r\n\r\n private init: Promise<any>;\r\n\r\n private apiSuffixes: string[];\r\n\r\n constructor(context: BaseAppContext, fetcher?: IFetcher, apiSuffixes = API_SUFFIXES) {\r\n this.apiSuffixes = apiSuffixes;\r\n this.fetcher = fetcher || window;\r\n this.requestStateMap = new Map<string, IRequestState>();\r\n this.msgBus = context.msgBus;\r\n // TODO: unsubscribe\r\n this.msgBus.on({\r\n channel: $AUTH_SIGNIN,\r\n group: \"out\",\r\n callback: (msg) => {\r\n this.accessToken = msg.payload.accessToken;\r\n }\r\n });\r\n this.init = Promise.all([this.getBaseUrlAsync(), this.updateSecurityAsync()]);\r\n }\r\n\r\n protected async getBaseUrlAsync() {\r\n const msg = await this.msgBus.request({\r\n channel: $CONFIG_GET\r\n });\r\n const config = msg.payload;\r\n const apiName = extractApiName(this.name, this.apiSuffixes);\r\n const apiEntry = Object.entries(config.apis).find((entry) => entry[0].toLowerCase() === apiName?.toLowerCase());\r\n if (!apiEntry) {\r\n // console.debug\r\n console.warn(`API \"${apiName}\" is not defined in the current configuration. Using default configuration.`);\r\n }\r\n this.baseUrl = apiEntry?.[1].url || config.baseUrl;\r\n }\r\n\r\n private async updateSecurityAsync() {\r\n if (!this.accessToken) {\r\n const msg = await this.msgBus.request({\r\n channel: $CONTEXT_GET\r\n });\r\n this.accessToken = msg.payload.accessToken;\r\n }\r\n return this.accessToken;\r\n }\r\n\r\n private async addAuthorizationAsync(request: IRequestParams) {\r\n const accessToken = await this.updateSecurityAsync();\r\n if (!accessToken) {\r\n throw ApiError.create({\r\n status: httpStatus.UNAUTHORIZED\r\n });\r\n }\r\n const authorizationHeader = \"Authorization\";\r\n const headers = request.headers;\r\n const headerValue = `Bearer ${accessToken}`;\r\n if (headers instanceof Headers) {\r\n // if (headers.has(authorizationHeader)) {\r\n // headers.delete(authorizationHeader)\r\n // }\r\n // headers.append(authorizationHeader, headerValue);\r\n headers.set(authorizationHeader, headerValue);\r\n } else {\r\n throw new Error(\"Unsupported headers\"); // object type\r\n }\r\n }\r\n\r\n private async executeRequestInternalAsync(request: IRequestState) {\r\n try {\r\n let proceed = true;\r\n const onBeforeSendRequest = request.callbacks && request.callbacks.onBeforeSendRequest;\r\n if (onBeforeSendRequest) {\r\n const event = {\r\n request: request,\r\n cancel: false,\r\n handled: false\r\n } as Parameters<IRequestCallbacks[\"onBeforeSendRequest\"]>[0];\r\n await onBeforeSendRequest(event);\r\n if (event.cancel) {\r\n // interrupt\r\n proceed = false;\r\n request.status = \"canceled\";\r\n if (event.handled) {\r\n request.result = event.result;\r\n } else {\r\n // ApiError?\r\n throw new Error(\"The request was aborted\"); // has been? canceled?\r\n }\r\n }\r\n }\r\n if (proceed) {\r\n request.status = \"executing\";\r\n const response = await this.fetcher.fetch(request.url, request);\r\n ApiError.assert(response, request);\r\n let onResponseRead = request.callbacks && request.callbacks.onResponseRead;\r\n if (!onResponseRead) {\r\n onResponseRead = async (event) => {\r\n const result = await getResponseResult(response, request);\r\n event.result = result;\r\n };\r\n }\r\n const event = {\r\n response: response\r\n } as Parameters<IRequestCallbacks[\"onResponseRead\"]>[0];\r\n\r\n await onResponseRead(event);\r\n request.result = event.result;\r\n request.status = \"succeeded\";\r\n }\r\n } catch (err) {\r\n request.status = \"failed\";\r\n // throw ApiError.create(undefined, request);\r\n throw err;\r\n }\r\n return request;\r\n }\r\n\r\n private async executeRequestAsync(request: IRequestState): Promise<IRequestState> {\r\n let attempt = 0;\r\n do {\r\n try {\r\n if (request.useAuth) {\r\n await this.addAuthorizationAsync(request);\r\n }\r\n return await this.executeRequestInternalAsync(request);\r\n } catch (err) {\r\n if (err instanceof ApiError) {\r\n if (attempt > 0) {\r\n throw err;\r\n }\r\n if (err.status === httpStatus.UPGRADE_REQUIRED) {\r\n // await this.context.msgBus.request({\r\n // channel: \"APP.RELOAD\"\r\n // });\r\n throw err;\r\n } else if (err.status === httpStatus.UNAUTHORIZED) {\r\n if (err.response?.headers?.get(\"token-expired\")) {\r\n // token expired or invalid\r\n await this.msgBus.request({\r\n channel: $AUTH_REFRESH\r\n });\r\n } else {\r\n await this.msgBus.request({\r\n channel: $AUTH_ENSURE\r\n });\r\n }\r\n // codes:\r\n // TOKEN_EXPIRED\r\n // TOKEN_INVALID\r\n // TOKEN_MISSING\r\n // AUTH_REQUIRED\r\n // header: WWW-Authenticate\r\n continue;\r\n }\r\n continue;\r\n }\r\n throw err;\r\n } finally {\r\n attempt++;\r\n }\r\n } while (true);\r\n }\r\n\r\n // T extends IApiResponse\r\n public async fetchAsync<T>(requestParams: IRequestParams): Promise<T> {\r\n await this.init;\r\n\r\n const defaultParams: Partial<IRequestParams> = {\r\n contentType: \"application/json\",\r\n method: \"POST\",\r\n body: null,\r\n headers: {},\r\n cache: \"default\",\r\n credentials: \"same-origin\",\r\n mode: \"cors\"\r\n };\r\n\r\n requestParams = { ...defaultParams, ...requestParams };\r\n if (!requestParams.id) {\r\n requestParams.id = uuid();\r\n }\r\n\r\n if (!(requestParams.headers instanceof Headers)) {\r\n requestParams.headers = new Headers(requestParams.headers);\r\n }\r\n\r\n requestParams.headers.append(\"Content-Type\", requestParams.contentType);\r\n // \"api-version\"\r\n\r\n if (requestParams.method === \"POST\") {\r\n if (!requestParams.body) {\r\n requestParams.body = \"\";\r\n }\r\n }\r\n\r\n let request = {\r\n ...requestParams,\r\n status: \"queued\",\r\n response: undefined,\r\n result: undefined\r\n } as IRequestState;\r\n\r\n this.requestStateMap.set(requestParams.id, request);\r\n\r\n await this.executeRequestAsync(request);\r\n return request.result;\r\n }\r\n}\r\n\r\n// TODO: check MLWEB-2172\r\n// TODO: support request cancellation\r\n// https://stackoverflow.com/questions/31061838/how-do-i-cancel-an-http-fetch-request\r\n// https://mukeshprajapati0251.medium.com/cancel-rest-api-pending-request-1af65e70366d\r\n\r\n/* \r\nif (status === 404) {\r\n return response.text().then((_responseText) => {\r\n let result404: any = null;\r\n result404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as __API__ProblemDetails;\r\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n\r\nBLOB\r\nlet reader = new FileReader();\r\n reader.onload = event => resolve((event.target as any).result);\r\n reader.readAsText(blob);\r\n*/\r\n"],"names":["extractApiName","name","suffixes","group","s","pattern","result","API_SUFFIXES","ClientBase","context","fetcher","apiSuffixes","$AUTH_SIGNIN","msg","config","$CONFIG_GET","apiName","apiEntry","entry","$CONTEXT_GET","request","accessToken","ApiError","httpStatus","authorizationHeader","headers","headerValue","proceed","onBeforeSendRequest","event","response","onResponseRead","getResponseResult","err","attempt","$AUTH_REFRESH","$AUTH_ENSURE","requestParams","uuid"],"mappings":"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"}
1
+ {"version":3,"file":"client.es.js","sources":["../../src/net/client.ts"],"sourcesContent":null,"names":["extractApiName","name","suffixes","group","s","pattern","result","API_SUFFIXES","ClientBase","context","fetcher","apiSuffixes","abortSignals","abortSignal","$AUTH_SIGNIN","msg","config","$CONFIG_GET","apiId","apiEntry","entry","$CONTEXT_GET","request","accessToken","ApiError","httpStatus","authorizationHeader","headers","headerValue","proceed","onBeforeSendRequest","event","response","onResponseRead","getResponseResult","err","attempt","$AUTH_REFRESH","$AUTH_ENSURE","requestParams","uuid"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"request.es.js","sources":["../../src/net/request.ts"],"sourcesContent":["// Transport\r\n\r\nimport httpStatus from \"http-status\";\r\nimport { AsyncFunc, AwaitedReturnType, Func } from \"@actdim/utico/typeCore\";\r\nimport { ApiError } from \"./apiError\";\r\n\r\nexport type IFetcher = {\r\n fetch(url: RequestInfo | URL, init?: RequestInit): Promise<Response>;\r\n};\r\n\r\n// IParsedBody\r\nexport type IResolvedBody = {\r\n [K in keyof Body]?: Body[K] extends Func ? AwaitedReturnType<Body[K]> : Body[K];\r\n};\r\n\r\n// https://www.iana.org/assignments/media-types/media-types.xhtml\r\nexport type MimeType =\r\n // application\r\n | \"application/atom+xml\"\r\n | \"application/json\"\r\n | \"application/javascript\"\r\n | \"application/octet-stream\"\r\n | \"application/pdf\"\r\n | \"application/postscript\"\r\n | \"application/soap+xml\"\r\n | \"application/font-woff\"\r\n | \"application/xhtml+xml\"\r\n | \"application/zip\"\r\n | \"application/gzip\"\r\n | \"application/x-tex\"\r\n | \"application/xml\"\r\n | \"application/msword\"\r\n // text\r\n | \"text/cmd\"\r\n | \"text/css\"\r\n | \"text/csv\"\r\n | \"text/html\"\r\n // \"text/javascript\" |\r\n | \"text/plain\"\r\n | \"text/xml\"\r\n | \"text/markdown\"\r\n // image\r\n | \"image/png\"\r\n | \"image/jpeg\"\r\n | \"image/tiff\";\r\n\r\n// RequestExecutionStatus\r\nexport type RequestStatus =\r\n // Created\r\n | \"\" // none/created/new/unsent\r\n // Queued\r\n | \"queued\" // scheduled\r\n // Executing\r\n | \"executing\" // sent/pending/processing/in-progress\r\n // \"suspended\" | // on-hold\r\n // Successful\r\n | \"succeeded\" // successful/resolved/done/completed/finished/fulfilled/complete\r\n // Unsuccessful\r\n | \"failed\" // unsuccessful/rejected\r\n // Aborted\r\n | \"canceled\"; // aborted/terminated\r\n\r\nexport type IResponseState = Response & {\r\n // parsed?\r\n resolved?: IResolvedBody;\r\n};\r\n\r\nexport type IRequestState = IRequestParams & {\r\n status: RequestStatus;\r\n result?: any;\r\n};\r\n\r\nexport const getResponseBlob = (response: Response) => response.blob();\r\n\r\nexport const getResponseJson = (response: Response) => response.json();\r\n\r\nexport const getResponseText = (response: Response) => response.text();\r\n\r\nexport const getResponseArrayBuffer = (response: Response) => response.arrayBuffer();\r\n\r\n// https://stackoverflow.com/questions/64781995/how-to-get-mime-type-of-an-array-buffer-object\r\nexport async function getResponseResult(response: IResponseState, request: IRequestState): Promise<any> {\r\n // const headers: { [key: string]: string } = {};\r\n let contentType =\r\n request.contentType ||\r\n (request.headers && request.headers instanceof Headers ? request.headers.get(\"content-type\") : request.headers[\"Content-Type\"]);\r\n if (response.headers) {\r\n // for (const k in response.headers.keys()) {\r\n // headers[k] = response.headers.get[k];\r\n // }\r\n // if (response.headers.forEach) {\r\n // response.headers.forEach((v, k) => headers[k] = v);\r\n // }\r\n contentType = response.headers instanceof Headers ? response.headers.get(\"content-type\") : response.headers[\"content-type\"];\r\n }\r\n let result: any = undefined;\r\n if (!response.resolved) {\r\n response.resolved = {};\r\n }\r\n const resolved = response.resolved;\r\n contentType = (contentType || \"\").toLowerCase();\r\n if (contentType.startsWith(\"text/\")) {\r\n result = await response.text();\r\n } else if (contentType.startsWith(\"image/\")) {\r\n result = await response.blob();\r\n } else {\r\n if (contentType.startsWith(\"application/json\")) {\r\n result = await response.json();\r\n resolved.json = result;\r\n } else if (contentType.startsWith(\"octet-stream\")) {\r\n result = await response.blob();\r\n resolved.blob = result;\r\n } else {\r\n try {\r\n resolved.json = await response.clone().json();\r\n } catch {\r\n try {\r\n resolved.text = await response.text();\r\n } catch {\r\n }\r\n }\r\n // unexpected response\r\n // throw new Error(`Unsupported content type: ${contentType}`);\r\n }\r\n }\r\n if (!(response.status === httpStatus.OK || response.status === httpStatus.NO_CONTENT)) {\r\n // JSON.stringify(resolved)\r\n throw ApiError.create(response, request);\r\n }\r\n\r\n request.result = result;\r\n return result;\r\n}\r\n\r\nexport interface IRequestCallbacks<TResult = any> {\r\n // onBeforeExecuteRequest\r\n onBeforeSendRequest?: (event: {\r\n request: IRequestParams;\r\n // interrupt\r\n cancel: boolean;\r\n handled: boolean;\r\n result?: TResult;\r\n }) => Promise<void>;\r\n onResponseRead?: (event: { response: Response; result: TResult }) => Promise<void>;\r\n}\r\n\r\n// IRequestOptions\r\nexport interface IRequestParams<TResult = any> extends RequestInit {\r\n // TODO: support WebSocket transport\r\n id?: string;\r\n tag?: string;\r\n url: string;\r\n // authType?: ...;\r\n useAuth?: boolean;\r\n // authToken?: string; // bearerToken\r\n // TODO: support\r\n // accepts: string[]; // https://developer.mozilla.org/ru/docs/Web/HTTP/Headers/Accept\r\n // TODO: support\r\n crossDomain?: boolean;\r\n contentType?: MimeType; // dataType\r\n httpOnly?: boolean;\r\n // transportType: ...;\r\n callbacks?: IRequestCallbacks<TResult>;\r\n}\r\n"],"names":["getResponseBlob","response","getResponseJson","getResponseText","getResponseArrayBuffer","getResponseResult","request","contentType","result","resolved","httpStatus","ApiError"],"mappings":";;AAwEO,MAAMA,IAAkB,CAACC,MAAuBA,EAAS,KAAA,GAEnDC,IAAkB,CAACD,MAAuBA,EAAS,KAAA,GAEnDE,IAAkB,CAACF,MAAuBA,EAAS,KAAA,GAEnDG,IAAyB,CAACH,MAAuBA,EAAS,YAAA;AAGvE,eAAsBI,EAAkBJ,GAA0BK,GAAsC;AAEpG,MAAIC,IACAD,EAAQ,gBACPA,EAAQ,WAAWA,EAAQ,mBAAmB,UAAUA,EAAQ,QAAQ,IAAI,cAAc,IAAIA,EAAQ,QAAQ,cAAc;AACjI,EAAIL,EAAS,YAOTM,IAAcN,EAAS,mBAAmB,UAAUA,EAAS,QAAQ,IAAI,cAAc,IAAIA,EAAS,QAAQ,cAAc;AAE9H,MAAIO;AACJ,EAAKP,EAAS,aACVA,EAAS,WAAW,CAAA;AAExB,QAAMQ,IAAWR,EAAS;AAE1B,MADAM,KAAeA,KAAe,IAAI,YAAA,GAC9BA,EAAY,WAAW,OAAO;AAC9B,IAAAC,IAAS,MAAMP,EAAS,KAAA;AAAA,WACjBM,EAAY,WAAW,QAAQ;AACtC,IAAAC,IAAS,MAAMP,EAAS,KAAA;AAAA,WAEpBM,EAAY,WAAW,kBAAkB;AACzC,IAAAC,IAAS,MAAMP,EAAS,KAAA,GACxBQ,EAAS,OAAOD;AAAA,WACTD,EAAY,WAAW,cAAc;AAC5C,IAAAC,IAAS,MAAMP,EAAS,KAAA,GACxBQ,EAAS,OAAOD;AAAA;AAEhB,QAAI;AACA,MAAAC,EAAS,OAAO,MAAMR,EAAS,MAAA,EAAQ,KAAA;AAAA,IAC3C,QAAQ;AACJ,UAAI;AACA,QAAAQ,EAAS,OAAO,MAAMR,EAAS,KAAA;AAAA,MACnC,QAAQ;AAAA,MACR;AAAA,IACJ;AAKR,MAAI,EAAEA,EAAS,WAAWS,EAAW,MAAMT,EAAS,WAAWS,EAAW;AAEtE,UAAMC,EAAS,OAAOV,GAAUK,CAAO;AAG3C,SAAAA,EAAQ,SAASE,GACVA;AACX;"}
1
+ {"version":3,"file":"request.es.js","sources":["../../src/net/request.ts"],"sourcesContent":null,"names":["getResponseBlob","response","getResponseJson","getResponseText","getResponseArrayBuffer","getResponseResult","request","contentType","result","resolved","httpStatus","ApiError"],"mappings":";;AAwEO,MAAMA,IAAkB,CAACC,MAAuBA,EAAS,KAAA,GAEnDC,IAAkB,CAACD,MAAuBA,EAAS,KAAA,GAEnDE,IAAkB,CAACF,MAAuBA,EAAS,KAAA,GAEnDG,IAAyB,CAACH,MAAuBA,EAAS,YAAA;AAGvE,eAAsBI,EAAkBJ,GAA0BK,GAAsC;AAEpG,MAAIC,IACAD,EAAQ,gBACPA,EAAQ,WAAWA,EAAQ,mBAAmB,UAAUA,EAAQ,QAAQ,IAAI,cAAc,IAAIA,EAAQ,QAAQ,cAAc;AACjI,EAAIL,EAAS,YAOTM,IAAcN,EAAS,mBAAmB,UAAUA,EAAS,QAAQ,IAAI,cAAc,IAAIA,EAAS,QAAQ,cAAc;AAE9H,MAAIO;AACJ,EAAKP,EAAS,aACVA,EAAS,WAAW,CAAA;AAExB,QAAMQ,IAAWR,EAAS;AAE1B,MADAM,KAAeA,KAAe,IAAI,YAAA,GAC9BA,EAAY,WAAW,OAAO;AAC9B,IAAAC,IAAS,MAAMP,EAAS,KAAA;AAAA,WACjBM,EAAY,WAAW,QAAQ;AACtC,IAAAC,IAAS,MAAMP,EAAS,KAAA;AAAA,WAEpBM,EAAY,WAAW,kBAAkB;AACzC,IAAAC,IAAS,MAAMP,EAAS,KAAA,GACxBQ,EAAS,OAAOD;AAAA,WACTD,EAAY,WAAW,cAAc;AAC5C,IAAAC,IAAS,MAAMP,EAAS,KAAA,GACxBQ,EAAS,OAAOD;AAAA;AAEhB,QAAI;AACA,MAAAC,EAAS,OAAO,MAAMR,EAAS,MAAA,EAAQ,KAAA;AAAA,IAC3C,QAAQ;AACJ,UAAI;AACA,QAAAQ,EAAS,OAAO,MAAMR,EAAS,KAAA;AAAA,MACnC,QAAQ;AAAA,MACR;AAAA,IACJ;AAKR,MAAI,EAAEA,EAAS,WAAWS,EAAW,MAAMT,EAAS,WAAWS,EAAW;AAEtE,UAAMC,EAAS,OAAOV,GAAUK,CAAO;AAG3C,SAAAA,EAAQ,SAASE,GACVA;AACX;"}
@@ -1,2 +1,2 @@
1
- export declare function useLazyRef<T>(factory: () => T): any;
1
+ export declare function useLazyRef<T>(factory: () => T): import('react').RefObject<T>;
2
2
  //# sourceMappingURL=reactHooks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reactHooks.d.ts","sourceRoot":"","sources":["../src/reactHooks.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAM7C"}
1
+ {"version":3,"file":"reactHooks.d.ts","sourceRoot":"","sources":["../src/reactHooks.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,gCAM7C"}
@@ -1 +1 @@
1
- {"version":3,"file":"reactHooks.es.js","sources":["../src/reactHooks.ts"],"sourcesContent":["import { useRef } from \"react\";\r\n\r\nexport function useLazyRef<T>(factory: () => T) {\r\n const ref = useRef<T | null>(null);\r\n if (ref.current === null) {\r\n ref.current = factory();\r\n }\r\n return ref;\r\n}\r\n"],"names":["useLazyRef","factory","ref","useRef"],"mappings":";AAEO,SAASA,EAAcC,GAAkB;AAC5C,QAAMC,IAAMC,EAAiB,IAAI;AACjC,SAAID,EAAI,YAAY,SAChBA,EAAI,UAAUD,EAAA,IAEXC;AACX;"}
1
+ {"version":3,"file":"reactHooks.es.js","sources":["../src/reactHooks.ts"],"sourcesContent":null,"names":["useLazyRef","factory","ref","useRef"],"mappings":";AAEO,SAASA,EAAcC,GAAkB;AAC5C,QAAMC,IAAMC,EAAiB,IAAI;AACjC,SAAID,EAAI,YAAY,SAChBA,EAAI,UAAUD,EAAA,IAEXC;AACX;"}
@@ -1 +1 @@
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
+ {"version":3,"file":"ServiceProvider.es.js","sources":["../../src/services/ServiceProvider.ts"],"sourcesContent":null,"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 +1 @@
1
- {"version":3,"file":"StorageService.es.js","sources":["../../src/services/StorageService.ts"],"sourcesContent":["import { PersistentStore } from '@actdim/utico/store/persistentStore';\r\nimport { $STORE_GET, $STORE_REMOVE, $STORE_SET, BaseAppMsgStruct } from '@/appDomain/appContracts';\r\nimport { MsgBus } from '@actdim/msgmesh/contracts';\r\n\r\nexport async function createStorageService(msgBus: MsgBus<BaseAppMsgStruct>, storeName: string, abortSignal?: AbortSignal) {\r\n\r\n const abortController = new AbortController();\r\n if (abortSignal) {\r\n abortSignal = AbortSignal.any([abortSignal, abortController.signal]);\r\n }\r\n\r\n const getStore = () => {\r\n return PersistentStore.open(storeName);\r\n }\r\n\r\n msgBus.provide({\r\n channel: $STORE_GET,\r\n group: \"in\",\r\n options: {\r\n abortSignal\r\n },\r\n callback: async (msg) => {\r\n const store = await getStore();\r\n return await store.get(msg.payload.key);\r\n }\r\n });\r\n\r\n msgBus.provide({\r\n channel: $STORE_SET,\r\n group: \"in\",\r\n options: {\r\n abortSignal\r\n },\r\n callback: async (msg) => {\r\n const store = await getStore();\r\n await store.set(\r\n {\r\n key: msg.payload.key,\r\n },\r\n msg.payload.value,\r\n );\r\n }\r\n });\r\n\r\n msgBus.provide({\r\n channel: $STORE_REMOVE,\r\n group: \"in\",\r\n options: {\r\n abortSignal\r\n },\r\n callback: async (msg) => {\r\n const store = await getStore();\r\n await store.delete(msg.payload.key);\r\n }\r\n });\r\n\r\n return {\r\n storeName,\r\n abortSignal\r\n }\r\n};"],"names":["createStorageService","msgBus","storeName","abortSignal","abortController","getStore","PersistentStore","$STORE_GET","msg","$STORE_SET","$STORE_REMOVE"],"mappings":";;AAIA,eAAsBA,EAAqBC,GAAkCC,GAAmBC,GAA2B;AAEvH,QAAMC,IAAkB,IAAI,gBAAA;AAC5B,EAAID,MACAA,IAAc,YAAY,IAAI,CAACA,GAAaC,EAAgB,MAAM,CAAC;AAGvE,QAAMC,IAAW,MACNC,EAAgB,KAAKJ,CAAS;AAGzC,SAAAD,EAAO,QAAQ;AAAA,IACX,SAASM;AAAA,IACT,OAAO;AAAA,IACP,SAAS;AAAA,MACL,aAAAJ;AAAA,IAAA;AAAA,IAEJ,UAAU,OAAOK,MAEN,OADO,MAAMH,EAAA,GACD,IAAIG,EAAI,QAAQ,GAAG;AAAA,EAC1C,CACH,GAEDP,EAAO,QAAQ;AAAA,IACX,SAASQ;AAAA,IACT,OAAO;AAAA,IACP,SAAS;AAAA,MACL,aAAAN;AAAA,IAAA;AAAA,IAEJ,UAAU,OAAOK,MAAQ;AAErB,aADc,MAAMH,EAAA,GACR;AAAA,QACR;AAAA,UACI,KAAKG,EAAI,QAAQ;AAAA,QAAA;AAAA,QAErBA,EAAI,QAAQ;AAAA,MAAA;AAAA,IAEpB;AAAA,EAAA,CACH,GAEDP,EAAO,QAAQ;AAAA,IACX,SAASS;AAAA,IACT,OAAO;AAAA,IACP,SAAS;AAAA,MACL,aAAAP;AAAA,IAAA;AAAA,IAEJ,UAAU,OAAOK,MAAQ;AAErB,aADc,MAAMH,EAAA,GACR,OAAOG,EAAI,QAAQ,GAAG;AAAA,IACtC;AAAA,EAAA,CACH,GAEM;AAAA,IACH,WAAAN;AAAA,IACA,aAAAC;AAAA,EAAA;AAER;"}
1
+ {"version":3,"file":"StorageService.es.js","sources":["../../src/services/StorageService.ts"],"sourcesContent":null,"names":["createStorageService","msgBus","storeName","abortSignal","abortController","getStore","PersistentStore","$STORE_GET","msg","$STORE_SET","$STORE_REMOVE"],"mappings":";;AAIA,eAAsBA,EAAqBC,GAAkCC,GAAmBC,GAA2B;AAEvH,QAAMC,IAAkB,IAAI,gBAAA;AAC5B,EAAID,MACAA,IAAc,YAAY,IAAI,CAACA,GAAaC,EAAgB,MAAM,CAAC;AAGvE,QAAMC,IAAW,MACNC,EAAgB,KAAKJ,CAAS;AAGzC,SAAAD,EAAO,QAAQ;AAAA,IACX,SAASM;AAAA,IACT,OAAO;AAAA,IACP,SAAS;AAAA,MACL,aAAAJ;AAAA,IAAA;AAAA,IAEJ,UAAU,OAAOK,MAEN,OADO,MAAMH,EAAA,GACD,IAAIG,EAAI,QAAQ,GAAG;AAAA,EAC1C,CACH,GAEDP,EAAO,QAAQ;AAAA,IACX,SAASQ;AAAA,IACT,OAAO;AAAA,IACP,SAAS;AAAA,MACL,aAAAN;AAAA,IAAA;AAAA,IAEJ,UAAU,OAAOK,MAAQ;AAErB,aADc,MAAMH,EAAA,GACR;AAAA,QACR;AAAA,UACI,KAAKG,EAAI,QAAQ;AAAA,QAAA;AAAA,QAErBA,EAAI,QAAQ;AAAA,MAAA;AAAA,IAEpB;AAAA,EAAA,CACH,GAEDP,EAAO,QAAQ;AAAA,IACX,SAASS;AAAA,IACT,OAAO;AAAA,IACP,SAAS;AAAA,MACL,aAAAP;AAAA,IAAA;AAAA,IAEJ,UAAU,OAAOK,MAAQ;AAErB,aADc,MAAMH,EAAA,GACR,OAAOG,EAAI,QAAQ,GAAG;AAAA,IACtC;AAAA,EAAA,CACH,GAEM;AAAA,IACH,WAAAN;AAAA,IACA,aAAAC;AAAA,EAAA;AAER;"}
@@ -1 +1 @@
1
- {"version":3,"file":"NavService.d.ts","sourceRoot":"","sources":["../../../src/services/react/NavService.tsx"],"names":[],"mappings":"AAQA,OAAO,EACH,kBAAkB,EAClB,gBAAgB,EAChB,UAAU,EACV,SAAS,EACZ,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACR,SAAS,EAGT,eAAe,EACf,eAAe,EAClB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAE1C,KAAK,MAAM,GAAG,eAAe,CACzB,gBAAgB,EAChB;IACI,KAAK,EAAE,iBAAiB,GAAG;QACvB,OAAO,EAAE,UAAU,EAAE,CAAC;QACtB,MAAM,EAAE,SAAS,CAAC;KACrB,CAAC;IACF,QAAQ,EAAE;QACN,OAAO,EAAE,kBAAkB,CACrB,cAAc,GACd,qBAAqB,GACrB,sBAAsB,GACtB,yBAAyB,CAC9B,CAAC;KACL,CAAC;CACL,CACJ,CAAC;AAIF,eAAO,MAAM,aAAa,GAAI,QAAQ,eAAe,CAAC,MAAM,CAAC,sBA+E5D,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC;AACtC,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAwB,CAAC"}
1
+ {"version":3,"file":"NavService.d.ts","sourceRoot":"","sources":["../../../src/services/react/NavService.tsx"],"names":[],"mappings":"AAQA,OAAO,EACH,kBAAkB,EAClB,gBAAgB,EAChB,UAAU,EACV,SAAS,EACZ,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACR,SAAS,EAGT,eAAe,EACf,eAAe,EAClB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAE1C,KAAK,MAAM,GAAG,eAAe,CACzB,gBAAgB,EAChB;IACI,KAAK,EAAE,iBAAiB,GAAG;QACvB,OAAO,EAAE,UAAU,EAAE,CAAC;QACtB,MAAM,EAAE,SAAS,CAAC;KACrB,CAAC;IACF,QAAQ,EAAE;QACN,OAAO,EAAE,kBAAkB,CACrB,cAAc,GACd,qBAAqB,GACrB,sBAAsB,GACtB,yBAAyB,CAC9B,CAAC;KACL,CAAC;CACL,CACJ,CAAC;AAIF,eAAO,MAAM,aAAa,GAAI,QAAQ,eAAe,CAAC,MAAM,CAAC,sBA+E5D,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC;AACtC,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAA0B,CAAC"}
@@ -1,9 +1,9 @@
1
- import { useNavigate as p, useLocation as m, useNavigationType as y, useParams as h, useSearchParams as N } from "react-router-dom";
2
- import { getFC as P, useComponent as v } from "../../componentModel/react.es.js";
1
+ import { useNavigate as p, useLocation as y, useNavigationType as m, useParams as h, useSearchParams as N } from "react-router-dom";
2
+ import { toReact as P, useComponent as v } from "../../componentModel/react.es.js";
3
3
  const A = (n) => {
4
- let t, o;
5
- const e = p(), c = m(), i = y(), l = h(), [u] = N();
6
- return t = v({
4
+ let e, o;
5
+ const s = p(), c = y(), i = m(), l = h(), [u] = N();
6
+ return e = v({
7
7
  props: {
8
8
  history: [],
9
9
  routes: void 0
@@ -13,13 +13,13 @@ const A = (n) => {
13
13
  "APP.NAV.GOTO": {
14
14
  in: {
15
15
  callback: async (a) => {
16
- e(a.payload);
16
+ s(a.payload);
17
17
  }
18
18
  },
19
19
  ex: {
20
20
  callback: async (a) => {
21
- const s = a.payload.route;
22
- e(o.routes[s].path(a.payload.params));
21
+ const t = a.payload.route;
22
+ s(o.routes[t].path(a.payload.params));
23
23
  }
24
24
  }
25
25
  },
@@ -37,16 +37,16 @@ const A = (n) => {
37
37
  }
38
38
  },
39
39
  events: {
40
- onLayout: (a) => {
41
- const s = o.history;
42
- if (s) {
40
+ onLayoutReady: (a) => {
41
+ const t = o.history;
42
+ if (t) {
43
43
  const r = {
44
44
  location: c,
45
45
  searchParams: u,
46
46
  params: l,
47
47
  navType: i
48
48
  };
49
- s.push(r), a.msgBus.send({
49
+ t.push(r), a.msgBus.send({
50
50
  channel: "APP.NAV.CONTEXT.CHANGED",
51
51
  group: "in",
52
52
  payload: r
@@ -55,10 +55,10 @@ const A = (n) => {
55
55
  }
56
56
  },
57
57
  view: () => null
58
- }, n), o = t.model, t;
59
- }, C = P(A);
58
+ }, n), o = e.model, e;
59
+ }, E = P(A);
60
60
  export {
61
- C as NavService,
61
+ E as NavService,
62
62
  A as useNavService
63
63
  };
64
64
  //# sourceMappingURL=NavService.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NavService.es.js","sources":["../../../src/services/react/NavService.tsx"],"sourcesContent":["import {\r\n To,\r\n useLocation,\r\n useNavigate,\r\n useNavigationType,\r\n useParams,\r\n useSearchParams,\r\n} from 'react-router-dom';\r\nimport {\r\n BaseAppMsgChannels,\r\n BaseAppMsgStruct,\r\n NavContext,\r\n NavRoutes,\r\n} from '@/appDomain/appContracts';\r\nimport type {\r\n Component,\r\n ComponentDef,\r\n ComponentModel,\r\n ComponentParams,\r\n ComponentStruct,\r\n} from '@/componentModel/contracts';\r\nimport { getFC, useComponent } from '@/componentModel/react';\r\nimport { PropsWithChildren } from 'react';\r\n\r\ntype Struct = ComponentStruct<\r\n BaseAppMsgStruct,\r\n {\r\n props: PropsWithChildren & {\r\n history: NavContext[];\r\n routes: NavRoutes;\r\n };\r\n msgScope: {\r\n provide: BaseAppMsgChannels<\r\n | 'APP.NAV.GOTO'\r\n | 'APP.NAV.CONTEXT.GET'\r\n | 'APP.NAV.HISTORY.READ'\r\n | 'APP.NAV.CONTEXT.CHANGED'\r\n >;\r\n };\r\n }\r\n>;\r\n\r\n// const store = new PersistentStore('history');\r\n\r\nexport const useNavService = (params: ComponentParams<Struct>) => {\r\n let c: Component<Struct>;\r\n let m: ComponentModel<Struct>;\r\n\r\n const navigate = useNavigate();\r\n\r\n const location = useLocation();\r\n const navType = useNavigationType();\r\n const nvaParams = useParams();\r\n const [searchParams] = useSearchParams();\r\n\r\n const def: ComponentDef<Struct> = {\r\n props: {\r\n history: [],\r\n routes: undefined,\r\n },\r\n msgBroker: {\r\n provide: {\r\n 'APP.NAV.GOTO': {\r\n in: {\r\n callback: async (msg) => {\r\n navigate(msg.payload as To);\r\n },\r\n },\r\n ex: {\r\n callback: async (msg) => {\r\n const route = msg.payload.route;\r\n navigate(m.routes[route].path(msg.payload.params));\r\n },\r\n },\r\n },\r\n 'APP.NAV.CONTEXT.GET': {\r\n in: {\r\n callback: (msg) => {\r\n return m.history[m.history.length - 1];\r\n },\r\n },\r\n },\r\n 'APP.NAV.HISTORY.READ': {\r\n in: {\r\n callback: (msg) => {\r\n return m.history[m.history.length - 1];\r\n },\r\n },\r\n },\r\n 'APP.NAV.CONTEXT.CHANGED': {},\r\n },\r\n },\r\n events: {\r\n onLayout: (c) => {\r\n const history = m.history;\r\n if (history) {\r\n const ctx = {\r\n location: location,\r\n searchParams: searchParams,\r\n params: nvaParams,\r\n navType: navType,\r\n };\r\n history.push(ctx);\r\n c.msgBus.send({\r\n channel: 'APP.NAV.CONTEXT.CHANGED',\r\n group: 'in',\r\n payload: ctx,\r\n });\r\n }\r\n },\r\n },\r\n view: () => {\r\n return null;\r\n },\r\n };\r\n\r\n c = useComponent(def, params);\r\n m = c.model;\r\n\r\n // deps\r\n // location, navType, params, searchParams\r\n\r\n return c;\r\n};\r\n\r\nexport type NavServiceStruct = Struct;\r\nexport const NavService: React.FC<ComponentParams<Struct>> = getFC(useNavService);\r\n"],"names":["useNavService","params","c","m","navigate","useNavigate","location","useLocation","navType","useNavigationType","nvaParams","useParams","searchParams","useSearchParams","useComponent","msg","route","history","ctx","NavService","getFC"],"mappings":";;AA4CO,MAAMA,IAAgB,CAACC,MAAoC;AAC9D,MAAIC,GACAC;AAEJ,QAAMC,IAAWC,EAAA,GAEXC,IAAWC,EAAA,GACXC,IAAUC,EAAA,GACVC,IAAYC,EAAA,GACZ,CAACC,CAAY,IAAIC,EAAA;AA+DvB,SAAAX,IAAIY,EA7D8B;AAAA,IAC9B,OAAO;AAAA,MACH,SAAS,CAAA;AAAA,MACT,QAAQ;AAAA,IAAA;AAAA,IAEZ,WAAW;AAAA,MACP,SAAS;AAAA,QACL,gBAAgB;AAAA,UACZ,IAAI;AAAA,YACA,UAAU,OAAOC,MAAQ;AACrB,cAAAX,EAASW,EAAI,OAAa;AAAA,YAC9B;AAAA,UAAA;AAAA,UAEJ,IAAI;AAAA,YACA,UAAU,OAAOA,MAAQ;AACrB,oBAAMC,IAAQD,EAAI,QAAQ;AAC1B,cAAAX,EAASD,EAAE,OAAOa,CAAK,EAAE,KAAKD,EAAI,QAAQ,MAAM,CAAC;AAAA,YACrD;AAAA,UAAA;AAAA,QACJ;AAAA,QAEJ,uBAAuB;AAAA,UACnB,IAAI;AAAA,YACA,UAAU,CAACA,MACAZ,EAAE,QAAQA,EAAE,QAAQ,SAAS,CAAC;AAAA,UACzC;AAAA,QACJ;AAAA,QAEJ,wBAAwB;AAAA,UACpB,IAAI;AAAA,YACA,UAAU,CAACY,MACAZ,EAAE,QAAQA,EAAE,QAAQ,SAAS,CAAC;AAAA,UACzC;AAAA,QACJ;AAAA,QAEJ,2BAA2B,CAAA;AAAA,MAAC;AAAA,IAChC;AAAA,IAEJ,QAAQ;AAAA,MACJ,UAAU,CAACD,MAAM;AACb,cAAMe,IAAUd,EAAE;AAClB,YAAIc,GAAS;AACT,gBAAMC,IAAM;AAAA,YACR,UAAAZ;AAAA,YACA,cAAAM;AAAA,YACA,QAAQF;AAAA,YACR,SAAAF;AAAA,UAAA;AAEJ,UAAAS,EAAQ,KAAKC,CAAG,GAChBhB,EAAE,OAAO,KAAK;AAAA,YACV,SAAS;AAAA,YACT,OAAO;AAAA,YACP,SAASgB;AAAA,UAAA,CACZ;AAAA,QACL;AAAA,MACJ;AAAA,IAAA;AAAA,IAEJ,MAAM,MACK;AAAA,EACX,GAGkBjB,CAAM,GAC5BE,IAAID,EAAE,OAKCA;AACX,GAGaiB,IAAgDC,EAAMpB,CAAa;"}
1
+ {"version":3,"file":"NavService.es.js","sources":["../../../src/services/react/NavService.tsx"],"sourcesContent":null,"names":["useNavService","params","c","m","navigate","useNavigate","location","useLocation","navType","useNavigationType","nvaParams","useParams","searchParams","useSearchParams","useComponent","msg","route","history","ctx","NavService","toReact"],"mappings":";;AA4CO,MAAMA,IAAgB,CAACC,MAAoC;AAC9D,MAAIC,GACAC;AAEJ,QAAMC,IAAWC,EAAA,GAEXC,IAAWC,EAAA,GACXC,IAAUC,EAAA,GACVC,IAAYC,EAAA,GACZ,CAACC,CAAY,IAAIC,EAAA;AA+DvB,SAAAX,IAAIY,EA7D8B;AAAA,IAC9B,OAAO;AAAA,MACH,SAAS,CAAA;AAAA,MACT,QAAQ;AAAA,IAAA;AAAA,IAEZ,WAAW;AAAA,MACP,SAAS;AAAA,QACL,gBAAgB;AAAA,UACZ,IAAI;AAAA,YACA,UAAU,OAAOC,MAAQ;AACrB,cAAAX,EAASW,EAAI,OAAa;AAAA,YAC9B;AAAA,UAAA;AAAA,UAEJ,IAAI;AAAA,YACA,UAAU,OAAOA,MAAQ;AACrB,oBAAMC,IAAQD,EAAI,QAAQ;AAC1B,cAAAX,EAASD,EAAE,OAAOa,CAAK,EAAE,KAAKD,EAAI,QAAQ,MAAM,CAAC;AAAA,YACrD;AAAA,UAAA;AAAA,QACJ;AAAA,QAEJ,uBAAuB;AAAA,UACnB,IAAI;AAAA,YACA,UAAU,CAACA,MACAZ,EAAE,QAAQA,EAAE,QAAQ,SAAS,CAAC;AAAA,UACzC;AAAA,QACJ;AAAA,QAEJ,wBAAwB;AAAA,UACpB,IAAI;AAAA,YACA,UAAU,CAACY,MACAZ,EAAE,QAAQA,EAAE,QAAQ,SAAS,CAAC;AAAA,UACzC;AAAA,QACJ;AAAA,QAEJ,2BAA2B,CAAA;AAAA,MAAC;AAAA,IAChC;AAAA,IAEJ,QAAQ;AAAA,MACJ,eAAe,CAACD,MAAM;AAClB,cAAMe,IAAUd,EAAE;AAClB,YAAIc,GAAS;AACT,gBAAMC,IAAM;AAAA,YACR,UAAAZ;AAAA,YACA,cAAAM;AAAA,YACA,QAAQF;AAAA,YACR,SAAAF;AAAA,UAAA;AAEJ,UAAAS,EAAQ,KAAKC,CAAG,GAChBhB,EAAE,OAAO,KAAK;AAAA,YACV,SAAS;AAAA,YACT,OAAO;AAAA,YACP,SAASgB;AAAA,UAAA,CACZ;AAAA,QACL;AAAA,MACJ;AAAA,IAAA;AAAA,IAEJ,MAAM,MACK;AAAA,EACX,GAGkBjB,CAAM,GAC5BE,IAAID,EAAE,OAKCA;AACX,GAGaiB,IAAgDC,EAAQpB,CAAa;"}
@@ -1,7 +1,7 @@
1
- import { PropsWithChildren } from 'react';
1
+ import { PropsWithChildren, default as React } from 'react';
2
2
  import { MsgProviderAdapter } from '../../componentModel/adapters';
3
3
  export declare function ServiceProvider(props: PropsWithChildren<{
4
4
  adapters?: MsgProviderAdapter[];
5
5
  abortSignal?: AbortSignal;
6
- }>): any;
6
+ }>): React.JSX.Element;
7
7
  //# sourceMappingURL=ServiceProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceProvider.d.ts","sourceRoot":"","sources":["../../../src/services/react/ServiceProvider.tsx"],"names":[],"mappings":"AACA,OAAO,EAAiB,iBAAiB,EAAmB,MAAM,OAAO,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAoB,MAAM,+BAA+B,CAAC;AAQrF,wBAAgB,eAAe,CAC3B,KAAK,EAAE,iBAAiB,CAAC;IACrB,QAAQ,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAChC,WAAW,CAAC,EAAE,WAAW,CAAC;CAC7B,CAAC,OAyBL"}
1
+ {"version":3,"file":"ServiceProvider.d.ts","sourceRoot":"","sources":["../../../src/services/react/ServiceProvider.tsx"],"names":[],"mappings":"AACA,OAAO,EAAiB,iBAAiB,EAAmB,MAAM,OAAO,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAoB,MAAM,+BAA+B,CAAC;AACrF,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,wBAAgB,eAAe,CAC3B,KAAK,EAAE,iBAAiB,CAAC;IACrB,QAAQ,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAChC,WAAW,CAAC,EAAE,WAAW,CAAC;CAC7B,CAAC,qBAyBL"}
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceProvider.es.js","sources":["../../../src/services/react/ServiceProvider.tsx"],"sourcesContent":["import { useComponentContext } from '@/componentModel/componentContext';\r\nimport { createContext, PropsWithChildren, useLayoutEffect } from 'react';\r\nimport { MsgProviderAdapter, registerAdapters } from '../../componentModel/adapters';\r\nimport React from 'react';\r\n\r\nconst ReactContext = createContext<{\r\n adapters: MsgProviderAdapter[];\r\n abortSignal?: AbortSignal;\r\n}>(undefined);\r\n\r\nexport function ServiceProvider(\r\n props: PropsWithChildren<{\r\n adapters?: MsgProviderAdapter[];\r\n abortSignal?: AbortSignal;\r\n }>,\r\n) {\r\n const context = useComponentContext();\r\n const abortController = new AbortController();\r\n let abortSignal = props.abortSignal;\r\n if (abortSignal) {\r\n abortSignal = AbortSignal.any([abortSignal, abortController.signal]);\r\n }\r\n useLayoutEffect(() => {\r\n registerAdapters(context.msgBus, props.adapters, abortSignal);\r\n return () => {\r\n abortController.abort();\r\n };\r\n }, [context.msgBus, props.adapters]);\r\n\r\n return (\r\n <ReactContext.Provider\r\n value={{\r\n adapters: props.adapters,\r\n abortSignal: abortSignal,\r\n }}\r\n >\r\n {props.children}\r\n </ReactContext.Provider>\r\n );\r\n}\r\n"],"names":["ReactContext","createContext","ServiceProvider","props","context","useComponentContext","abortController","abortSignal","useLayoutEffect","registerAdapters","React"],"mappings":";;;AAKA,MAAMA,IAAeC,EAGlB,MAAS;AAEL,SAASC,EACZC,GAIF;AACE,QAAMC,IAAUC,EAAA,GACVC,IAAkB,IAAI,gBAAA;AAC5B,MAAIC,IAAcJ,EAAM;AACxB,SAAII,MACAA,IAAc,YAAY,IAAI,CAACA,GAAaD,EAAgB,MAAM,CAAC,IAEvEE,EAAgB,OACZC,EAAiBL,EAAQ,QAAQD,EAAM,UAAUI,CAAW,GACrD,MAAM;AACT,IAAAD,EAAgB,MAAA;AAAA,EACpB,IACD,CAACF,EAAQ,QAAQD,EAAM,QAAQ,CAAC,GAG/B,gBAAAO,EAAA;AAAA,IAACV,EAAa;AAAA,IAAb;AAAA,MACG,OAAO;AAAA,QACH,UAAUG,EAAM;AAAA,QAChB,aAAAI;AAAA,MAAA;AAAA,IACJ;AAAA,IAECJ,EAAM;AAAA,EAAA;AAGnB;"}
1
+ {"version":3,"file":"ServiceProvider.es.js","sources":["../../../src/services/react/ServiceProvider.tsx"],"sourcesContent":null,"names":["ReactContext","createContext","ServiceProvider","props","context","useComponentContext","abortController","abortSignal","useLayoutEffect","registerAdapters","React"],"mappings":";;;AAKA,MAAMA,IAAeC,EAGlB,MAAS;AAEL,SAASC,EACZC,GAIF;AACE,QAAMC,IAAUC,EAAA,GACVC,IAAkB,IAAI,gBAAA;AAC5B,MAAIC,IAAcJ,EAAM;AACxB,SAAII,MACAA,IAAc,YAAY,IAAI,CAACA,GAAaD,EAAgB,MAAM,CAAC,IAEvEE,EAAgB,OACZC,EAAiBL,EAAQ,QAAQD,EAAM,UAAUI,CAAW,GACrD,MAAM;AACT,IAAAD,EAAgB,MAAA;AAAA,EACpB,IACD,CAACF,EAAQ,QAAQD,EAAM,QAAQ,CAAC,GAG/B,gBAAAO,EAAA;AAAA,IAACV,EAAa;AAAA,IAAb;AAAA,MACG,OAAO;AAAA,QACH,UAAUG,EAAM;AAAA,QAChB,aAAAI;AAAA,MAAA;AAAA,IACJ;AAAA,IAECJ,EAAM;AAAA,EAAA;AAGnB;"}
@@ -1 +1 @@
1
- {"version":3,"file":"StorageService.d.ts","sourceRoot":"","sources":["../../../src/services/react/StorageService.tsx"],"names":[],"mappings":"AAAA,OAAO,EACH,eAAe,EACf,eAAe,EACf,SAAS,EAGZ,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAE1C,KAAK,MAAM,GAAG,eAAe,CACzB,gBAAgB,EAChB;IACI,KAAK,EAAE,iBAAiB,GAAG;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,QAAQ,EAAE;QACN,OAAO,EAAE,kBAAkB,CAAC,eAAe,GAAG,eAAe,GAAG,kBAAkB,CAAC,CAAC;KACvF,CAAC;CACL,CACJ,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,QAAQ,eAAe,CAAC,MAAM,CAAC,sBA+DhE,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAC1C,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAA4B,CAAC"}
1
+ {"version":3,"file":"StorageService.d.ts","sourceRoot":"","sources":["../../../src/services/react/StorageService.tsx"],"names":[],"mappings":"AAAA,OAAO,EACH,eAAe,EACf,eAAe,EACf,SAAS,EAGZ,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAE1C,KAAK,MAAM,GAAG,eAAe,CACzB,gBAAgB,EAChB;IACI,KAAK,EAAE,iBAAiB,GAAG;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,QAAQ,EAAE;QACN,OAAO,EAAE,kBAAkB,CAAC,eAAe,GAAG,eAAe,GAAG,kBAAkB,CAAC,CAAC;KACvF,CAAC;CACL,CACJ,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,QAAQ,eAAe,CAAC,MAAM,CAAC,sBA+DhE,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAC1C,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAA8B,CAAC"}
@@ -1,9 +1,9 @@
1
- import { getFC as c, useComponent as l } from "../../componentModel/react.es.js";
2
- import { PersistentStore as y } from "@actdim/utico/store/persistentStore";
3
- const m = (s) => {
1
+ import { toReact as s, useComponent as l } from "../../componentModel/react.es.js";
2
+ import { PersistentStore as m } from "@actdim/utico/store/persistentStore";
3
+ const p = (c) => {
4
4
  let a, n;
5
5
  async function r() {
6
- t = await y.open(n.storeName);
6
+ t = await m.open(n.storeName);
7
7
  }
8
8
  let t, i;
9
9
  const o = new Promise((e) => {
@@ -46,10 +46,10 @@ const m = (s) => {
46
46
  r();
47
47
  }
48
48
  }
49
- }, s), n = a.model, r().then(() => i()), a;
50
- }, w = c(m);
49
+ }, c), n = a.model, r().then(() => i()), a;
50
+ }, w = s(p);
51
51
  export {
52
52
  w as StorageService,
53
- m as useStorageService
53
+ p as useStorageService
54
54
  };
55
55
  //# sourceMappingURL=StorageService.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StorageService.es.js","sources":["../../../src/services/react/StorageService.tsx"],"sourcesContent":["import {\r\n ComponentParams,\r\n ComponentStruct,\r\n Component,\r\n ComponentModel,\r\n ComponentDef,\r\n} from '@/componentModel/contracts';\r\nimport { getFC, useComponent } from '@/componentModel/react';\r\nimport { PersistentStore } from '@actdim/utico/store/persistentStore';\r\nimport { BaseAppMsgChannels, BaseAppMsgStruct } from '@/appDomain/appContracts';\r\nimport { PropsWithChildren } from 'react';\r\n\r\ntype Struct = ComponentStruct<\r\n BaseAppMsgStruct,\r\n {\r\n props: PropsWithChildren & {\r\n storeName?: string;\r\n };\r\n msgScope: {\r\n provide: BaseAppMsgChannels<'APP.STORE.GET' | 'APP.STORE.SET' | 'APP.STORE.REMOVE'>;\r\n };\r\n }\r\n>;\r\n\r\nexport const useStorageService = (params: ComponentParams<Struct>) => {\r\n let c: Component<Struct>;\r\n let m: ComponentModel<Struct>;\r\n\r\n async function _updateStoreAsync() {\r\n store = await PersistentStore.open(m.storeName);\r\n }\r\n\r\n let store: PersistentStore;\r\n let ready: () => void;\r\n const init = new Promise<void>((res) => {\r\n ready = res;\r\n });\r\n\r\n const def: ComponentDef<Struct> = {\r\n props: {\r\n storeName: '',\r\n },\r\n msgBroker: {\r\n provide: {\r\n 'APP.STORE.GET': {\r\n in: {\r\n callback: async (msg) => {\r\n await init;\r\n const item = await store.get(msg.payload.key); \r\n return item;\r\n },\r\n },\r\n },\r\n 'APP.STORE.SET': {\r\n in: {\r\n callback: async (msg) => {\r\n await init;\r\n await store.set(\r\n {\r\n key: msg.payload.key,\r\n },\r\n msg.payload.value,\r\n );\r\n },\r\n },\r\n },\r\n 'APP.STORE.REMOVE': {\r\n in: {\r\n callback: async (msg) => {\r\n await init;\r\n await store.delete(msg.payload.key);\r\n },\r\n },\r\n },\r\n },\r\n },\r\n events: {\r\n onChangeStoreName: () => {\r\n _updateStoreAsync();\r\n },\r\n },\r\n };\r\n\r\n c = useComponent(def, params);\r\n m = c.model;\r\n _updateStoreAsync().then(() => ready());\r\n return c;\r\n};\r\n\r\nexport type StorageServiceStruct = Struct;\r\nexport const StorageService: React.FC<ComponentParams<Struct>> = getFC(useStorageService);\r\n"],"names":["useStorageService","params","c","m","_updateStoreAsync","store","PersistentStore","ready","init","res","useComponent","msg","StorageService","getFC"],"mappings":";;AAwBO,MAAMA,IAAoB,CAACC,MAAoC;AAClE,MAAIC,GACAC;AAEJ,iBAAeC,IAAoB;AAC/B,IAAAC,IAAQ,MAAMC,EAAgB,KAAKH,EAAE,SAAS;AAAA,EAClD;AAEA,MAAIE,GACAE;AACJ,QAAMC,IAAO,IAAI,QAAc,CAACC,MAAQ;AACpC,IAAAF,IAAQE;AAAA,EACZ,CAAC;AA+CD,SAAAP,IAAIQ,EA7C8B;AAAA,IAC9B,OAAO;AAAA,MACH,WAAW;AAAA,IAAA;AAAA,IAEf,WAAW;AAAA,MACP,SAAS;AAAA,QACL,iBAAiB;AAAA,UACb,IAAI;AAAA,YACA,UAAU,OAAOC,OACb,MAAMH,GACO,MAAMH,EAAM,IAAIM,EAAI,QAAQ,GAAG;AAAA,UAEhD;AAAA,QACJ;AAAA,QAEJ,iBAAiB;AAAA,UACb,IAAI;AAAA,YACA,UAAU,OAAOA,MAAQ;AACrB,oBAAMH,GACN,MAAMH,EAAM;AAAA,gBACR;AAAA,kBACI,KAAKM,EAAI,QAAQ;AAAA,gBAAA;AAAA,gBAErBA,EAAI,QAAQ;AAAA,cAAA;AAAA,YAEpB;AAAA,UAAA;AAAA,QACJ;AAAA,QAEJ,oBAAoB;AAAA,UAChB,IAAI;AAAA,YACA,UAAU,OAAOA,MAAQ;AACrB,oBAAMH,GACN,MAAMH,EAAM,OAAOM,EAAI,QAAQ,GAAG;AAAA,YACtC;AAAA,UAAA;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,IAEJ,QAAQ;AAAA,MACJ,mBAAmB,MAAM;AACrB,QAAAP,EAAA;AAAA,MACJ;AAAA,IAAA;AAAA,EACJ,GAGkBH,CAAM,GAC5BE,IAAID,EAAE,OACNE,IAAoB,KAAK,MAAMG,GAAO,GAC/BL;AACX,GAGaU,IAAoDC,EAAMb,CAAiB;"}
1
+ {"version":3,"file":"StorageService.es.js","sources":["../../../src/services/react/StorageService.tsx"],"sourcesContent":null,"names":["useStorageService","params","c","m","_updateStore","store","PersistentStore","ready","init","res","useComponent","msg","StorageService","toReact"],"mappings":";;AAwBO,MAAMA,IAAoB,CAACC,MAAoC;AAClE,MAAIC,GACAC;AAEJ,iBAAeC,IAAe;AAC1B,IAAAC,IAAQ,MAAMC,EAAgB,KAAKH,EAAE,SAAS;AAAA,EAClD;AAEA,MAAIE,GACAE;AACJ,QAAMC,IAAO,IAAI,QAAc,CAACC,MAAQ;AACpC,IAAAF,IAAQE;AAAA,EACZ,CAAC;AA+CD,SAAAP,IAAIQ,EA7C8B;AAAA,IAC9B,OAAO;AAAA,MACH,WAAW;AAAA,IAAA;AAAA,IAEf,WAAW;AAAA,MACP,SAAS;AAAA,QACL,iBAAiB;AAAA,UACb,IAAI;AAAA,YACA,UAAU,OAAOC,OACb,MAAMH,GACO,MAAMH,EAAM,IAAIM,EAAI,QAAQ,GAAG;AAAA,UAEhD;AAAA,QACJ;AAAA,QAEJ,iBAAiB;AAAA,UACb,IAAI;AAAA,YACA,UAAU,OAAOA,MAAQ;AACrB,oBAAMH,GACN,MAAMH,EAAM;AAAA,gBACR;AAAA,kBACI,KAAKM,EAAI,QAAQ;AAAA,gBAAA;AAAA,gBAErBA,EAAI,QAAQ;AAAA,cAAA;AAAA,YAEpB;AAAA,UAAA;AAAA,QACJ;AAAA,QAEJ,oBAAoB;AAAA,UAChB,IAAI;AAAA,YACA,UAAU,OAAOA,MAAQ;AACrB,oBAAMH,GACN,MAAMH,EAAM,OAAOM,EAAI,QAAQ,GAAG;AAAA,YACtC;AAAA,UAAA;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,IAEJ,QAAQ;AAAA,MACJ,mBAAmB,MAAM;AACrB,QAAAP,EAAA;AAAA,MACJ;AAAA,IAAA;AAAA,EACJ,GAGkBH,CAAM,GAC5BE,IAAID,EAAE,OACNE,IAAe,KAAK,MAAMG,GAAO,GAC1BL;AACX,GAGaU,IAAoDC,EAAQb,CAAiB;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@actdim/dynstruct",
3
- "version": "1.2.6",
3
+ "version": "1.2.8",
4
4
  "description": "A type-safe component system for large-scale apps: explicit dependencies, message bus communication, and structure-first, declarative design",
5
5
  "author": "Pavel Borodaev",
6
6
  "license": "Proprietary",
@@ -71,7 +71,7 @@
71
71
  "typecheck": "tsc -p tsconfig.json --noEmit"
72
72
  },
73
73
  "peerDependencies": {
74
- "@actdim/msgmesh": "^1.2.5",
74
+ "@actdim/msgmesh": "^1.2.7",
75
75
  "@actdim/utico": "^1.1.2",
76
76
  "http-status": "^2.1.0",
77
77
  "jwt-decode": "^4.0.0",
@@ -94,6 +94,8 @@
94
94
  "@types/chai": "^5.2.3",
95
95
  "@types/mocha": "^10.0.10",
96
96
  "@types/node": "^24.10.0",
97
+ "@types/react": "^19.2.14",
98
+ "@types/react-dom": "^19.2.3",
97
99
  "@typescript-eslint/eslint-plugin": "^8.46.3",
98
100
  "@typescript-eslint/parser": "^8.46.3",
99
101
  "@vitejs/plugin-react-swc": "^4.2.1",