@actdim/dynstruct 1.1.2 → 1.1.3

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 (48) hide show
  1. package/dist/appDomain/appContracts.d.ts +1 -1
  2. package/dist/appDomain/appContracts.d.ts.map +1 -1
  3. package/dist/appDomain/appContracts.es.js.map +1 -1
  4. package/dist/appDomain/security/securityContracts.d.ts +1 -1
  5. package/dist/appDomain/security/securityContracts.d.ts.map +1 -1
  6. package/dist/appDomain/security/securityContracts.es.js.map +1 -1
  7. package/dist/appDomain/security/securityProvider.d.ts +1 -1
  8. package/dist/appDomain/security/securityProvider.d.ts.map +1 -1
  9. package/dist/appDomain/security/securityProvider.es.js +62 -62
  10. package/dist/appDomain/security/securityProvider.es.js.map +1 -1
  11. package/dist/componentModel/DynamicContent.d.ts +2 -2
  12. package/dist/componentModel/DynamicContent.d.ts.map +1 -1
  13. package/dist/componentModel/DynamicContent.es.js +1 -1
  14. package/dist/componentModel/DynamicContent.es.js.map +1 -1
  15. package/dist/componentModel/adapters.d.ts +1 -1
  16. package/dist/componentModel/adapters.d.ts.map +1 -1
  17. package/dist/componentModel/adapters.es.js +7 -7
  18. package/dist/componentModel/adapters.es.js.map +1 -1
  19. package/dist/componentModel/componentContext.d.ts.map +1 -1
  20. package/dist/componentModel/componentContext.es.js +58 -56
  21. package/dist/componentModel/componentContext.es.js.map +1 -1
  22. package/dist/componentModel/contracts.d.ts +173 -4
  23. package/dist/componentModel/contracts.d.ts.map +1 -1
  24. package/dist/componentModel/contracts.es.js +11 -1
  25. package/dist/componentModel/contracts.es.js.map +1 -1
  26. package/dist/componentModel/core.d.ts +17 -0
  27. package/dist/componentModel/core.d.ts.map +1 -0
  28. package/dist/componentModel/core.es.js +162 -0
  29. package/dist/componentModel/core.es.js.map +1 -0
  30. package/dist/componentModel/react.d.ts +5 -0
  31. package/dist/componentModel/react.d.ts.map +1 -0
  32. package/dist/componentModel/react.es.js +201 -0
  33. package/dist/componentModel/react.es.js.map +1 -0
  34. package/dist/net/client.es.js +4 -4
  35. package/dist/net/client.es.js.map +1 -1
  36. package/dist/services/NavService.d.ts +1 -1
  37. package/dist/services/NavService.d.ts.map +1 -1
  38. package/dist/services/NavService.es.js +9 -9
  39. package/dist/services/NavService.es.js.map +1 -1
  40. package/dist/services/StorageService.d.ts +4 -3
  41. package/dist/services/StorageService.d.ts.map +1 -1
  42. package/dist/services/StorageService.es.js +15 -15
  43. package/dist/services/StorageService.es.js.map +1 -1
  44. package/package.json +8 -7
  45. package/dist/componentModel/componentModel.d.ts +0 -165
  46. package/dist/componentModel/componentModel.d.ts.map +0 -1
  47. package/dist/componentModel/componentModel.es.js +0 -343
  48. package/dist/componentModel/componentModel.es.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"NavService.es.js","sources":["../../src/services/NavService.tsx"],"sourcesContent":["\r\nimport {\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 { PersistentStore } from '@actdim/utico/store/persistentStore';\r\nimport { BaseAppMsgChannels, BaseAppMsgStruct, NavContext, NavRoutes } from '@/appDomain/appContracts';\r\nimport { getFC, useComponent, type Component, type ComponentDef, type ComponentModel, type ComponentParams, type ComponentStruct } from '@/componentModel/componentModel';\r\n\r\ntype Struct = ComponentStruct<\r\n BaseAppMsgStruct,\r\n {\r\n props: {\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-GET-CONTEXT'\r\n | 'APP-NAV-READ-HISTORY'\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-GET-CONTEXT': {\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-READ-HISTORY': {\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.dispatch({\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 NavServiceFC = getFC(useNavService);\r\n"],"names":["useNavService","params","c","m","navigate","useNavigate","location","useLocation","navType","useNavigationType","nvaParams","useParams","searchParams","useSearchParams","useComponent","msg","route","history","ctx","NavServiceFC","getFC"],"mappings":";;AAiCO,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,SAAS;AAAA,YACd,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,IAAeC,EAAMpB,CAAa;"}
1
+ {"version":3,"file":"NavService.es.js","sources":["../../src/services/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\n\r\ntype Struct = ComponentStruct<\r\n BaseAppMsgStruct,\r\n {\r\n props: {\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-GET-CONTEXT'\r\n | 'APP-NAV-READ-HISTORY'\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-GET-CONTEXT': {\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-READ-HISTORY': {\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 NavServiceFC = getFC(useNavService);\r\n"],"names":["useNavService","params","c","m","navigate","useNavigate","location","useLocation","navType","useNavigationType","nvaParams","useParams","searchParams","useSearchParams","useComponent","msg","route","history","ctx","NavServiceFC","getFC"],"mappings":";;AA2CO,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,IAAeC,EAAMpB,CAAa;"}
@@ -1,8 +1,9 @@
1
- import { ComponentParams, ComponentStruct, Component } from '../componentModel/componentModel';
1
+ import { ComponentParams, ComponentStruct, Component } from '../componentModel/contracts';
2
2
  import { BaseAppMsgChannels, BaseAppMsgStruct } from '../appDomain/appContracts';
3
+ import { PropsWithChildren } from 'react';
3
4
  type Struct = ComponentStruct<BaseAppMsgStruct, {
4
- props: {
5
- name?: string;
5
+ props: PropsWithChildren & {
6
+ storeName?: string;
6
7
  };
7
8
  msgScope: {
8
9
  provide: BaseAppMsgChannels<'APP-KV-STORE-GET' | 'APP-KV-STORE-SET' | 'APP-KV-STORE-REMOVE'>;
@@ -1 +1 @@
1
- {"version":3,"file":"StorageService.d.ts","sourceRoot":"","sources":["../../src/services/StorageService.tsx"],"names":[],"mappings":"AAAA,OAAO,EACH,eAAe,EACf,eAAe,EAGf,SAAS,EAEZ,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAqB,MAAM,0BAA0B,CAAC;AAGnG,KAAK,MAAM,GAAG,eAAe,CACzB,gBAAgB,EAChB;IACI,KAAK,EAAE;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,QAAQ,EAAE;QACN,OAAO,EAAE,kBAAkB,CACvB,kBAAkB,GAAG,kBAAkB,GAAG,qBAAqB,CAClE,CAAC;KACL,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,gBAAgB,8BAA2B,CAAC"}
1
+ {"version":3,"file":"StorageService.d.ts","sourceRoot":"","sources":["../../src/services/StorageService.tsx"],"names":[],"mappings":"AAAA,OAAO,EACH,eAAe,EACf,eAAe,EACf,SAAS,EAGZ,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAqB,MAAM,0BAA0B,CAAC;AACnG,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,CACvB,kBAAkB,GAAG,kBAAkB,GAAG,qBAAqB,CAClE,CAAC;KACL,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,gBAAgB,8BAA2B,CAAC"}
@@ -1,29 +1,29 @@
1
- import { getFC as i, useComponent as l } from "../componentModel/componentModel.es.js";
1
+ import { getFC as c, useComponent as l } from "../componentModel/react.es.js";
2
2
  import { PersistentStore as y } from "@actdim/utico/store/persistentStore";
3
3
  const m = (s) => {
4
- let t, o;
5
- async function c() {
6
- a = await y.openAsync(o.name);
4
+ let t, n;
5
+ async function r() {
6
+ a = await y.open(n.storeName);
7
7
  }
8
- let a, r;
9
- const n = new Promise((e) => {
10
- r = e;
8
+ let a, i;
9
+ const o = new Promise((e) => {
10
+ i = e;
11
11
  });
12
12
  return t = l({
13
13
  props: {
14
- name: ""
14
+ storeName: ""
15
15
  },
16
16
  msgBroker: {
17
17
  provide: {
18
18
  "APP-KV-STORE-GET": {
19
19
  in: {
20
- callback: async (e) => (await n, (await a.getAsync(e.payload.key))?.data.value)
20
+ callback: async (e) => (await o, (await a.get(e.payload.key))?.data.value)
21
21
  }
22
22
  },
23
23
  "APP-KV-STORE-SET": {
24
24
  in: {
25
25
  callback: async (e) => {
26
- await n, await a.setAsync(
26
+ await o, await a.set(
27
27
  {
28
28
  key: e.payload.key
29
29
  },
@@ -35,19 +35,19 @@ const m = (s) => {
35
35
  "APP-KV-STORE-REMOVE": {
36
36
  in: {
37
37
  callback: async (e) => {
38
- await n, await a.deleteAsync(e.payload.key);
38
+ await o, await a.delete(e.payload.key);
39
39
  }
40
40
  }
41
41
  }
42
42
  }
43
43
  },
44
44
  events: {
45
- onChangeName: () => {
46
- c();
45
+ onChangeStoreName: () => {
46
+ r();
47
47
  }
48
48
  }
49
- }, s), o = t.model, c().then(() => r()), t;
50
- }, u = i(m);
49
+ }, s), n = t.model, r().then(() => i()), t;
50
+ }, u = c(m);
51
51
  export {
52
52
  u as StorageServiceFC,
53
53
  m as useStorageService
@@ -1 +1 @@
1
- {"version":3,"file":"StorageService.es.js","sources":["../../src/services/StorageService.tsx"],"sourcesContent":["import {\r\n ComponentParams,\r\n ComponentStruct,\r\n getFC,\r\n useComponent,\r\n Component,\r\n ComponentModel,\r\n} from '@/componentModel/componentModel';\r\nimport { PersistentStore } from '@actdim/utico/store/persistentStore';\r\nimport { BaseAppMsgChannels, BaseAppMsgStruct, useBaseAppContext } from '@/appDomain/appContracts';\r\nimport type { ComponentDef } from '@/componentModel/componentModel';\r\n\r\ntype Struct = ComponentStruct<\r\n BaseAppMsgStruct,\r\n {\r\n props: {\r\n name?: string;\r\n };\r\n msgScope: {\r\n provide: BaseAppMsgChannels<\r\n 'APP-KV-STORE-GET' | 'APP-KV-STORE-SET' | 'APP-KV-STORE-REMOVE'\r\n >;\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.openAsync(m.name);\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 name: '',\r\n },\r\n msgBroker: {\r\n provide: {\r\n 'APP-KV-STORE-GET': {\r\n in: {\r\n callback: async (msg) => {\r\n await init;\r\n const item = await store.getAsync(msg.payload.key);\r\n return item?.data.value;\r\n },\r\n },\r\n },\r\n 'APP-KV-STORE-SET': {\r\n in: {\r\n callback: async (msg) => {\r\n await init;\r\n await store.setAsync(\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-KV-STORE-REMOVE': {\r\n in: {\r\n callback: async (msg) => {\r\n await init;\r\n await store.deleteAsync(msg.payload.key);\r\n },\r\n },\r\n },\r\n },\r\n },\r\n events: {\r\n onChangeName: () => {\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 StorageServiceFC = getFC(useStorageService);\r\n"],"names":["useStorageService","params","c","m","_updateStoreAsync","store","PersistentStore","ready","init","res","useComponent","msg","StorageServiceFC","getFC"],"mappings":";;AA0BO,MAAMA,IAAoB,CAACC,MAAoC;AAClE,MAAIC,GACAC;AAEJ,iBAAeC,IAAoB;AAC/B,IAAAC,IAAQ,MAAMC,EAAgB,UAAUH,EAAE,IAAI;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,MAAM;AAAA,IAAA;AAAA,IAEV,WAAW;AAAA,MACP,SAAS;AAAA,QACL,oBAAoB;AAAA,UAChB,IAAI;AAAA,YACA,UAAU,OAAOC,OACb,MAAMH,IACO,MAAMH,EAAM,SAASM,EAAI,QAAQ,GAAG,IACpC,KAAK;AAAA,UACtB;AAAA,QACJ;AAAA,QAEJ,oBAAoB;AAAA,UAChB,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,uBAAuB;AAAA,UACnB,IAAI;AAAA,YACA,UAAU,OAAOA,MAAQ;AACrB,oBAAMH,GACN,MAAMH,EAAM,YAAYM,EAAI,QAAQ,GAAG;AAAA,YAC3C;AAAA,UAAA;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,IAEJ,QAAQ;AAAA,MACJ,cAAc,MAAM;AAChB,QAAAP,EAAA;AAAA,MACJ;AAAA,IAAA;AAAA,EACJ,GAGkBH,CAAM,GAC5BE,IAAID,EAAE,OACNE,IAAoB,KAAK,MAAMG,GAAO,GAC/BL;AACX,GAGaU,IAAmBC,EAAMb,CAAiB;"}
1
+ {"version":3,"file":"StorageService.es.js","sources":["../../src/services/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, useBaseAppContext } 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<\r\n 'APP-KV-STORE-GET' | 'APP-KV-STORE-SET' | 'APP-KV-STORE-REMOVE'\r\n >;\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-KV-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?.data.value;\r\n },\r\n },\r\n },\r\n 'APP-KV-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-KV-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 StorageServiceFC = getFC(useStorageService);\r\n"],"names":["useStorageService","params","c","m","_updateStoreAsync","store","PersistentStore","ready","init","res","useComponent","msg","StorageServiceFC","getFC"],"mappings":";;AA0BO,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,oBAAoB;AAAA,UAChB,IAAI;AAAA,YACA,UAAU,OAAOC,OACb,MAAMH,IACO,MAAMH,EAAM,IAAIM,EAAI,QAAQ,GAAG,IAC/B,KAAK;AAAA,UACtB;AAAA,QACJ;AAAA,QAEJ,oBAAoB;AAAA,UAChB,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,uBAAuB;AAAA,UACnB,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,IAAmBC,EAAMb,CAAiB;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@actdim/dynstruct",
3
- "version": "1.1.2",
3
+ "version": "1.1.3",
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",
@@ -18,7 +18,7 @@
18
18
  "components",
19
19
  "react",
20
20
  "component-model",
21
- "architecure",
21
+ "architecture",
22
22
  "modularity",
23
23
  "structure",
24
24
  "communication"
@@ -55,8 +55,8 @@
55
55
  "test": "npx vitest --config=vitest.node.config.ts --no-cache",
56
56
  "test:w": "npx vitest --config=vitest.node.config.ts --watch",
57
57
  "test:v8": "npx vite",
58
- "lint": "eslint . -f visualstudio --ext .ts,.tsx --report-unused-disable-directives --max-warnings 0",
59
- "build": "tsc -b && vite build",
58
+ "lint": "eslint \"./**/*.{ts,tsx}\" -f visualstudio --ext .ts,.tsx --report-unused-disable-directives --max-warnings 0",
59
+ "build": "tsc -b tsconfig.json --noEmit && vite build",
60
60
  "pnpm:u": "pnpm update",
61
61
  "pnpm:ou": "pnpm outdated",
62
62
  "ncu:l": "ncu",
@@ -67,11 +67,12 @@
67
67
  "format": "prettier --write .",
68
68
  "format:check": "prettier --check .",
69
69
  "storybook": "storybook dev -p 6006",
70
- "build-storybook": "storybook build"
70
+ "build-storybook": "storybook build",
71
+ "typecheck": "tsc -p tsconfig.json --noEmit"
71
72
  },
72
73
  "peerDependencies": {
73
- "@actdim/msgmesh": "^1.2.2",
74
- "@actdim/utico": "^1.1.1",
74
+ "@actdim/msgmesh": "^1.2.3",
75
+ "@actdim/utico": "^1.1.2",
75
76
  "http-status": "^2.1.0",
76
77
  "jwt-decode": "^4.0.0",
77
78
  "mobx": "^6.15.0",
@@ -1,165 +0,0 @@
1
- import { PropsWithChildren, FC, ReactNode } from 'react';
2
- import { $CG_IN, $CG_OUT, Msg, MsgBus, MsgProviderParams, MsgStruct, MsgSubscriberParams, OutStruct } from '@actdim/msgmesh/msgBusCore';
3
- import { HasKeys, MaybeKeyOf, MaybePromise, Require, Skip } from '@actdim/utico/typeCore';
4
- import { ComponentMsgHeaders, TreeNode } from './contracts';
5
- export declare enum ComponentMsgFilter {
6
- None = 0,
7
- FromAncestors = 1,
8
- FromDescendants = 2
9
- }
10
- export type MsgChannelGroupProviderParams<TStruct extends MsgStruct = MsgStruct, TChannel extends keyof TStruct = keyof TStruct, TGroup extends keyof TStruct[TChannel] = typeof $CG_IN, TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders, TScope = any> = Skip<MsgProviderParams<TStruct, TChannel, TGroup>, 'channel' | 'group' | 'callback' | 'filter'> & {
11
- callback?: (msgIn: Msg<TStruct, TChannel, TGroup, TMsgHeaders>, headers: TMsgHeaders, scope: TScope) => MaybePromise<OutStruct<TStruct, TChannel>>;
12
- filter?: (msg: Msg<TStruct, TChannel, TGroup, TMsgHeaders>, scope: TScope) => boolean;
13
- componentFilter?: ComponentMsgFilter;
14
- };
15
- export type MsgChannelGroupSubscriberParams<TStruct extends MsgStruct = MsgStruct, TChannel extends keyof TStruct = keyof TStruct, TGroup extends keyof TStruct[TChannel] = typeof $CG_IN, TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders, TScope = any> = Skip<MsgSubscriberParams<TStruct, TChannel, TGroup>, 'channel' | 'group' | 'callback' | 'filter'> & {
16
- callback?: (msg: Msg<TStruct, TChannel, TGroup, TMsgHeaders>, scope: TScope) => void;
17
- filter?: (msg: Msg<TStruct, TChannel, TGroup, TMsgHeaders>, scope: TScope) => boolean;
18
- componentFilter?: ComponentMsgFilter;
19
- };
20
- export type MsgBrokerScope<TStruct extends MsgStruct, TKeysToProvide extends keyof TStruct = keyof TStruct, TKeysToSubscribe extends keyof TStruct = keyof TStruct, TKeysToPublish extends keyof TStruct = keyof TStruct> = {
21
- provide?: TKeysToProvide;
22
- subscribe?: TKeysToSubscribe;
23
- publish?: TKeysToPublish;
24
- };
25
- export type ComponentPropStruct = Record<string, any>;
26
- export type ComponentMethodStruct = Record<string, Function>;
27
- export type ComponentRefStruct = {
28
- [name: string]: ComponentStruct | ((params: any) => ComponentStruct);
29
- };
30
- export type ComponentStructBase<TMsgStruct extends MsgStruct = MsgStruct, TPropStruct extends ComponentPropStruct = ComponentPropStruct, TMsgScope extends MsgBrokerScope<TMsgStruct> = MsgBrokerScope<TMsgStruct>> = {
31
- props?: TPropStruct;
32
- actions?: ComponentMethodStruct;
33
- effects?: string[] | string | undefined;
34
- children?: ComponentRefStruct;
35
- msgScope?: TMsgScope;
36
- };
37
- export type ComponentStruct<TMsgStruct extends MsgStruct = MsgStruct, T extends ComponentStructBase<TMsgStruct> = ComponentStructBase<TMsgStruct>> = T & {
38
- msg: TMsgStruct;
39
- };
40
- export type MsgBroker<TStructToProvide extends MsgStruct = MsgStruct, TStructToSubscribe extends MsgStruct = MsgStruct, TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders, TScope = any> = Require<{
41
- provide?: Require<{
42
- [TChannel in keyof TStructToProvide]: {
43
- [TGroup in keyof Skip<TStructToProvide[TChannel], typeof $CG_OUT>]?: MsgChannelGroupProviderParams<TStructToProvide, TChannel, TGroup, TMsgHeaders, TScope>;
44
- };
45
- }, HasKeys<TStructToProvide>>;
46
- subscribe?: Require<{
47
- [TChannel in keyof TStructToSubscribe]: {
48
- [TGroup in keyof TStructToSubscribe[TChannel]]?: MsgChannelGroupSubscriberParams<TStructToSubscribe, TChannel, TGroup, TMsgHeaders, TScope>;
49
- };
50
- }, HasKeys<TStructToSubscribe>>;
51
- abortController?: AbortController;
52
- }, HasKeys<TStructToProvide & TStructToSubscribe>>;
53
- type ValueConverter<TTo, TFrom> = {
54
- convert(value: TFrom): TTo;
55
- convertBack(value: TTo): TFrom;
56
- };
57
- type ValidationResult = {
58
- valid: boolean;
59
- message: string;
60
- };
61
- type Validator<T> = {
62
- options: {
63
- blur: boolean;
64
- };
65
- validate: (value: T) => MaybePromise<ValidationResult>;
66
- };
67
- declare const $isBinding: unique symbol;
68
- declare class Binding<T = any, TFrom = any> {
69
- readonly get: () => T;
70
- readonly set: (value: T) => void;
71
- readonly converter: ValueConverter<T, TFrom>;
72
- readonly validator: Validator<T>;
73
- readonly readOnly: boolean;
74
- constructor(get: () => T, set?: (value: T) => void, converter?: ValueConverter<T, TFrom>, validator?: Validator<T>);
75
- [$isBinding]: boolean;
76
- }
77
- export declare function isBinding(obj: any): obj is Binding;
78
- export declare function bind<T, TFrom = any>(get: () => T, set?: (value: T) => void, converter?: ValueConverter<T, TFrom>, validator?: Validator<T>): Binding<T, TFrom>;
79
- export declare function bindProp<T extends object, P extends keyof T>(target: () => T, prop: P): Binding<T[P], any>;
80
- export type ComponentPropSource<T> = T | Binding<T>;
81
- export type ComponentPropParams<TPropStruct extends ComponentPropStruct> = {
82
- [P in keyof TPropStruct]?: ComponentPropSource<TPropStruct[P]>;
83
- };
84
- declare const $ON_GET = "onGet";
85
- declare const $ON_CHANGING = "onChanging";
86
- declare const $ON_CHANGE = "onChange";
87
- type PropValueChangingHandler<TProp = PropertyKey> = (prop: TProp, oldValue: any, newValue: any) => boolean;
88
- type PropValueChangeHandler<TProp = PropertyKey> = (prop: TProp, value: any) => void;
89
- type ValueChangingHandler<T = any> = (oldValue: T, newValue: T) => boolean;
90
- type ValueChangeHandler<T = any> = (value: T) => void;
91
- type ComponentEvents<TStruct extends ComponentStruct = ComponentStruct> = {
92
- onPropChanging?: PropValueChangingHandler<keyof TStruct['props']>;
93
- onPropChange?: PropValueChangeHandler<keyof TStruct['props']>;
94
- onInit?: (component: Component<TStruct>) => void;
95
- onLayout?: (component: Component<TStruct>) => void;
96
- onReady?: (component: Component<TStruct>) => void;
97
- onLayoutDestroy?: (component: Component<TStruct>) => void;
98
- onDestroy?: (component: Component<TStruct>) => void;
99
- onError?: (component: Component<TStruct>, error: any) => void;
100
- } & {
101
- [P in keyof TStruct['props'] as `${typeof $ON_GET}${Capitalize<P & string>}`]?: () => TStruct['props'][P];
102
- } & {
103
- [P in keyof TStruct['props'] as `${typeof $ON_CHANGING}${Capitalize<P & string>}`]?: ValueChangingHandler<TStruct['props']>;
104
- } & {
105
- [P in keyof TStruct['props'] as `${typeof $ON_CHANGE}${Capitalize<P & string>}`]?: ValueChangeHandler<TStruct['props']>;
106
- };
107
- type ComponentViewProps = {
108
- render?: boolean;
109
- } & PropsWithChildren;
110
- type ComponentViewImplFn<TStruct extends ComponentStruct, TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders> = (props: ComponentViewProps, component?: Component<TStruct, TMsgHeaders>) => ReactNode;
111
- type ComponentViewFn = (props: ComponentViewProps) => ReactNode;
112
- export type ComponentMsgBroker<TStruct extends ComponentStruct, TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders> = MsgBroker<Pick<TStruct['msg'], MaybeKeyOf<TStruct['msg'], TStruct['msgScope']['provide']>>, Pick<TStruct['msg'], MaybeKeyOf<TStruct['msg'], TStruct['msgScope']['subscribe']>>, TMsgHeaders, Component<TStruct, TMsgHeaders>>;
113
- export type EffectFn<TStruct extends ComponentStruct, TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders> = (component: Component<TStruct, TMsgHeaders>) => void | (() => void);
114
- export type ComponentDef<TStruct extends ComponentStruct, TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders> = {
115
- name?: string;
116
- props?: Require<TStruct['props'], HasKeys<TStruct['props']>>;
117
- actions?: Require<TStruct['actions'], HasKeys<TStruct['actions']>>;
118
- effects?: keyof TStruct['effects'] extends never ? never : Record<TStruct['effects'] extends string ? TStruct['effects'] : TStruct['effects'][number], EffectFn<TStruct, TMsgHeaders>>;
119
- children?: ComponentDefChildren<TStruct['children']>;
120
- events?: ComponentEvents<TStruct>;
121
- msgBroker?: ComponentMsgBroker<TStruct, TMsgHeaders>;
122
- msgBus?: MsgBus<TStruct['msg'], TMsgHeaders>;
123
- view?: ComponentViewImplFn<TStruct, TMsgHeaders>;
124
- };
125
- type ComponentDefChildren<TRefStruct extends ComponentRefStruct> = Require<{
126
- [P in keyof TRefStruct]: TRefStruct[P] extends (params: infer TParams) => infer T ? T extends ComponentStruct ? (params: TParams) => Component<T> : never : TRefStruct[P] extends ComponentStruct ? Component<TRefStruct[P]> : never;
127
- }, HasKeys<TRefStruct>>;
128
- type ComponentChildren<TRefStruct extends ComponentRefStruct> = {
129
- [P in keyof TRefStruct as TRefStruct[P] extends Function ? `${Capitalize<P & string>}` : P]: TRefStruct[P] extends (params: infer TParams) => infer T ? T extends ComponentStruct ? FC<ComponentParams<T> & TParams> : never : TRefStruct[P] extends ComponentStruct ? Component<TRefStruct[P]> : never;
130
- };
131
- export type ComponentMsgStruct<TStruct extends ComponentStruct = ComponentStruct> = Pick<TStruct['msg'], MaybeKeyOf<TStruct['msg'], TStruct['msgScope']['provide']> | MaybeKeyOf<TStruct['msg'], TStruct['msgScope']['subscribe']> | MaybeKeyOf<TStruct['msg'], TStruct['msgScope']['publish']>>;
132
- export type ComponentBase<TStruct extends ComponentStruct = ComponentStruct, TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders> = {
133
- id: string;
134
- parentId: string;
135
- getHierarchyId(): string;
136
- getParent(): string | undefined;
137
- getChildren(): string[];
138
- getChainUp(): string[];
139
- getChainDown(): string[];
140
- getNodeMap(): Map<string, TreeNode>;
141
- bindings: Map<PropertyKey, Binding>;
142
- msgBus: MsgBus<ComponentMsgStruct<TStruct>, TMsgHeaders>;
143
- msgBroker: ComponentMsgBroker<TStruct>;
144
- effects: Record<string, EffectController>;
145
- View: ComponentViewFn;
146
- };
147
- export type ComponentModel<TStruct extends ComponentStruct = ComponentStruct> = TStruct['props'] & Readonly<TStruct['actions']>;
148
- export type Component<TStruct extends ComponentStruct = ComponentStruct, TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders> = {
149
- readonly model: ComponentModel<TStruct>;
150
- readonly children: Readonly<ComponentChildren<TStruct['children']>>;
151
- } & Readonly<ComponentBase<TStruct, TMsgHeaders>>;
152
- export type ComponentParams<TStruct extends ComponentStruct = ComponentStruct> = ComponentPropParams<TStruct['props']> & ComponentEvents<TStruct>;
153
- export declare function toHtmlId(url: string, segmentsCount?: number): string;
154
- export type EffectController = {
155
- start: () => void;
156
- pause: () => void;
157
- resume: () => void;
158
- stop: () => void;
159
- restart: () => void;
160
- };
161
- export declare function createEffect<TStruct extends ComponentStruct, TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders>(component: Component<TStruct, TMsgHeaders>, name: string, fn: EffectFn<TStruct, TMsgHeaders>): EffectController;
162
- export declare function useComponent<TStruct extends ComponentStruct = ComponentStruct, TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders>(componentDef: ComponentDef<TStruct, TMsgHeaders>, params: ComponentParams<TStruct>): any;
163
- export declare function getFC<TStruct extends ComponentStruct>(factory: (params: ComponentParams<TStruct>) => Component<TStruct>): FC<ComponentParams<TStruct>>;
164
- export {};
165
- //# sourceMappingURL=componentModel.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"componentModel.d.ts","sourceRoot":"","sources":["../../src/componentModel/componentModel.tsx"],"names":[],"mappings":"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"}