@owlmeans/client 0.1.18-rc.2 → 0.1.18-rc.21

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 (66) hide show
  1. package/README.md +36 -12
  2. package/agent-meta/manifest.json +2 -2
  3. package/agent-meta/skills/client/SKILL.md +194 -19
  4. package/build/context.d.ts.map +1 -1
  5. package/build/context.js +1 -3
  6. package/build/context.js.map +1 -1
  7. package/build/entrypoint.d.ts +3 -0
  8. package/build/entrypoint.d.ts.map +1 -0
  9. package/build/entrypoint.js +4 -0
  10. package/build/entrypoint.js.map +1 -0
  11. package/build/helper.js +3 -3
  12. package/build/helper.js.map +1 -1
  13. package/build/index.d.ts +1 -1
  14. package/build/index.d.ts.map +1 -1
  15. package/build/index.js +1 -1
  16. package/build/index.js.map +1 -1
  17. package/build/navigate.d.ts.map +1 -1
  18. package/build/navigate.js +15 -18
  19. package/build/navigate.js.map +1 -1
  20. package/build/router.d.ts.map +1 -1
  21. package/build/router.js +12 -6
  22. package/build/router.js.map +1 -1
  23. package/build/services/debug.js.map +1 -1
  24. package/build/store.d.ts +19 -3
  25. package/build/store.d.ts.map +1 -1
  26. package/build/store.js +57 -50
  27. package/build/store.js.map +1 -1
  28. package/build/types.d.ts +16 -5
  29. package/build/types.d.ts.map +1 -1
  30. package/build/utils/entrypoint.d.ts +3 -0
  31. package/build/utils/entrypoint.d.ts.map +1 -0
  32. package/build/utils/{module.js → entrypoint.js} +2 -2
  33. package/build/utils/entrypoint.js.map +1 -0
  34. package/build/utils/index.d.ts +1 -1
  35. package/build/utils/index.d.ts.map +1 -1
  36. package/build/utils/index.js +1 -1
  37. package/build/utils/index.js.map +1 -1
  38. package/build/utils/route.d.ts.map +1 -1
  39. package/build/utils/route.js +12 -6
  40. package/build/utils/route.js.map +1 -1
  41. package/build/utils/router.d.ts +4 -4
  42. package/build/utils/router.d.ts.map +1 -1
  43. package/build/utils/router.js +8 -8
  44. package/build/utils/router.js.map +1 -1
  45. package/package.json +12 -12
  46. package/src/context.ts +1 -4
  47. package/src/entrypoint.ts +6 -0
  48. package/src/helper.tsx +6 -6
  49. package/src/index.ts +1 -1
  50. package/src/navigate.ts +16 -19
  51. package/src/router.ts +14 -10
  52. package/src/services/debug.ts +2 -2
  53. package/src/store.ts +71 -54
  54. package/src/types.ts +18 -5
  55. package/src/utils/{module.ts → entrypoint.ts} +2 -2
  56. package/src/utils/index.ts +1 -1
  57. package/src/utils/route.tsx +15 -8
  58. package/src/utils/router.ts +11 -11
  59. package/build/module.d.ts +0 -3
  60. package/build/module.d.ts.map +0 -1
  61. package/build/module.js +0 -4
  62. package/build/module.js.map +0 -1
  63. package/build/utils/module.d.ts +0 -3
  64. package/build/utils/module.d.ts.map +0 -1
  65. package/build/utils/module.js.map +0 -1
  66. package/src/module.ts +0 -6
@@ -1 +1 @@
1
- {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/services/debug.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/services/debug.ts"],"names":[],"mappings":"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"}
package/build/store.d.ts CHANGED
@@ -1,4 +1,20 @@
1
- import type { UseStoreHelper, UseStoreListHelper } from '@owlmeans/state';
2
- export declare const useStoreModel: UseStoreHelper;
3
- export declare const useStoreList: UseStoreListHelper;
1
+ import type { ResourceRecord } from '@owlmeans/resource';
2
+ import type { StateModel } from '@owlmeans/state';
3
+ import type { UseStoreListOptions } from './types.js';
4
+ /**
5
+ * One record from a state resource, live.
6
+ *
7
+ * It never throws for missing data: an id the store knows nothing about yields a model whose
8
+ * `empty` is true — reading `record` gives the resource's configured default, and nothing is
9
+ * written into the store on the way. An ABSENT id is the same answer rather than an error, since
10
+ * a screen renders before the record that supplies the id has arrived; on a `single` resource an
11
+ * absent id addresses its sole record. Writing through an empty model with no id is refused.
12
+ */
13
+ export declare const useStoreModel: <T extends ResourceRecord = ResourceRecord>(id?: string, alias?: string) => StateModel<T>;
14
+ /**
15
+ * A live LIST from a state resource: every record the query accepts, re-evaluated on every write
16
+ * that changes the answer, so a screen never recomputes ids and never re-subscribes to keep up.
17
+ * Omitting `query` matches everything.
18
+ */
19
+ export declare const useStoreList: <T extends ResourceRecord = ResourceRecord>(opts?: UseStoreListOptions<T>) => StateModel<T>[];
4
20
  //# sourceMappingURL=store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,cAAc,EAAyB,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAI5G,eAAO,MAAM,aAAa,EAAE,cAQ3B,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,kBAoD1B,CAAA"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAiCrD;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,cAAc,GAAG,cAAc,OAChE,MAAM,UAAU,MAAM,KAC1B,UAAU,CAAC,CAAC,CASd,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,cAAc,GAAG,cAAc,SAC7D,mBAAmB,CAAC,CAAC,CAAC,KAC5B,UAAU,CAAC,CAAC,CAAC,EAkBf,CAAA"}
package/build/store.js CHANGED
@@ -1,55 +1,62 @@
1
- import { useEffect, useId, useMemo, useState } from 'react';
1
+ import { useMemo, useSyncExternalStore } from 'react';
2
2
  import { useContext } from './context.js';
3
- export const useStoreModel = (id, opts) => {
4
- const list = useStoreList(id, opts);
5
- if (list.length < 1) {
6
- throw new SyntaxError('Store always return model and create it if not exists');
7
- }
8
- return list[0];
3
+ /**
4
+ * Turn one state subscription into the pair `useSyncExternalStore` wants.
5
+ *
6
+ * The value is cached rather than rebuilt per render: the hook is asked for a snapshot on every
7
+ * render and must answer with the same reference until something actually changed, or React
8
+ * re-renders forever. A state subscription hands its value over synchronously, so the first
9
+ * snapshot is taken by subscribing and unsubscribing again — no render ever runs without one,
10
+ * and no subscription outlives the call.
11
+ */
12
+ const bind = (subscribe) => {
13
+ let current;
14
+ let seeded = false;
15
+ const capture = (notify) => (value) => {
16
+ current = value;
17
+ seeded = true;
18
+ notify?.();
19
+ };
20
+ return {
21
+ subscribe: (notify) => subscribe(capture(notify)),
22
+ snapshot: () => {
23
+ if (!seeded) {
24
+ subscribe(capture())();
25
+ }
26
+ return current;
27
+ }
28
+ };
9
29
  };
10
- export const useStoreList = (ids, opts) => {
11
- if (typeof ids === 'object' && !Array.isArray(ids)) {
12
- opts = ids;
13
- }
14
- const params = typeof opts === 'object' ? opts : {};
15
- if (typeof ids === 'string' || Array.isArray(ids)) {
16
- params.id = ids;
17
- }
18
- if (typeof opts === 'string') {
19
- params.resource = opts;
20
- }
21
- else if (typeof opts === 'boolean') {
22
- params.listen = opts;
23
- }
24
- params.listen = params.listen ?? true;
30
+ /**
31
+ * One record from a state resource, live.
32
+ *
33
+ * It never throws for missing data: an id the store knows nothing about yields a model whose
34
+ * `empty` is true reading `record` gives the resource's configured default, and nothing is
35
+ * written into the store on the way. An ABSENT id is the same answer rather than an error, since
36
+ * a screen renders before the record that supplies the id has arrived; on a `single` resource an
37
+ * absent id addresses its sole record. Writing through an empty model with no id is refused.
38
+ */
39
+ export const useStoreModel = (id, alias) => {
25
40
  const context = useContext();
26
- const resource = useMemo(() => context.getStateResource(params.resource), [params.resource]);
27
- const deps = [
28
- Array.isArray(params.id) ? params.id.join(',') : params.id,
29
- params.query == null,
30
- JSON.stringify(params.default),
31
- params.listen
32
- ];
33
- const id = useId();
34
- const [models, setModels] = useState([]);
35
- let _return = [...models];
36
- const unsubscribe = useMemo(() => {
37
- const [unsubscribe, _initialModels] = resource.subscribe({
38
- _systemId: id,
39
- id: params.id,
40
- listener: models => {
41
- params.listen && setModels(models);
42
- },
43
- default: params.default,
44
- query: params.query,
45
- });
46
- setModels(_initialModels);
47
- if (_return.length < 1) {
48
- _return.push(..._initialModels);
49
- }
50
- return unsubscribe;
51
- }, deps);
52
- useEffect(() => unsubscribe, deps);
53
- return _return;
41
+ const resource = useMemo(() => context.getStateResource(alias), [context, alias]);
42
+ const store = useMemo(() => bind(listener => resource.watch(id, listener)), [resource, id]);
43
+ return useSyncExternalStore(store.subscribe, store.snapshot, store.snapshot);
44
+ };
45
+ /**
46
+ * A live LIST from a state resource: every record the query accepts, re-evaluated on every write
47
+ * that changes the answer, so a screen never recomputes ids and never re-subscribes to keep up.
48
+ * Omitting `query` matches everything.
49
+ */
50
+ export const useStoreList = (opts) => {
51
+ const context = useContext();
52
+ const resource = useMemo(() => context.getStateResource(opts?.resource), [context, opts?.resource]);
53
+ /**
54
+ * The subscription is keyed on the query's CONTENT, not on whether one was given: a screen
55
+ * that narrows its filter has to re-subscribe, and keyed on identity it kept answering the
56
+ * first filter it ever saw with nothing to say the list had gone stale.
57
+ */
58
+ const key = JSON.stringify([opts?.query ?? null, opts?.sort ?? null]);
59
+ const store = useMemo(() => bind(listener => resource.query(opts?.query, listener, { sort: opts?.sort })), [resource, key]);
60
+ return useSyncExternalStore(store.subscribe, store.snapshot, store.snapshot);
54
61
  };
55
62
  //# sourceMappingURL=store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAGzC,MAAM,CAAC,MAAM,aAAa,GAAmB,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE;IACxD,MAAM,IAAI,GAAG,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;IAEnC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,WAAW,CAAC,uDAAuD,CAAC,CAAA;IAChF,CAAC;IAED,OAAO,IAAI,CAAC,CAAC,CAAC,CAAA;AAChB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAuB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;IAC5D,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACnD,IAAI,GAAG,GAAG,CAAA;IACZ,CAAC;IACD,MAAM,MAAM,GAA0C,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;IAC1F,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,CAAC,EAAE,GAAG,GAAG,CAAA;IACjB,CAAC;IACD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAA;IACxB,CAAC;SAAM,IAAI,OAAO,IAAI,KAAK,SAAS,EAAE,CAAC;QACrC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAA;IACtB,CAAC;IACD,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,CAAA;IAErC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAA;IAC5B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;IAE5F,MAAM,IAAI,GAAG;QACX,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;QAC1D,MAAM,CAAC,KAAK,IAAI,IAAI;QACpB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;QAC9B,MAAM,CAAC,MAAM;KACd,CAAA;IAED,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAA+B,EAAE,CAAC,CAAA;IAEtE,IAAI,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,CAAA;IAEzB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE;QAC/B,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC;YACvD,SAAS,EAAE,EAAE;YACb,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,QAAQ,EAAE,MAAM,CAAC,EAAE;gBACjB,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,CAAA;YACpC,CAAC;YACD,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC,CAAA;QACF,SAAS,CAAC,cAAc,CAAC,CAAA;QAEzB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAA;QACjC,CAAC;QAED,OAAO,WAAW,CAAA;IACpB,CAAC,EAAE,IAAI,CAAC,CAAA;IAER,SAAS,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;IAElC,OAAO,OAA4B,CAAA;AACrC,CAAC,CAAA"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAA;AAGrD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAGzC;;;;;;;;GAQG;AACH,MAAM,IAAI,GAAG,CAAI,SAAuD,EAAE,EAAE;IAC1E,IAAI,OAAsB,CAAA;IAC1B,IAAI,MAAM,GAAG,KAAK,CAAA;IAElB,MAAM,OAAO,GAAG,CAAC,MAAmB,EAAE,EAAE,CAAC,CAAC,KAAQ,EAAE,EAAE;QACpD,OAAO,GAAG,KAAK,CAAA;QACf,MAAM,GAAG,IAAI,CAAA;QACb,MAAM,EAAE,EAAE,CAAA;IACZ,CAAC,CAAA;IAED,OAAO;QACL,SAAS,EAAE,CAAC,MAAkB,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7D,QAAQ,EAAE,GAAM,EAAE;YAChB,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAA;YACxB,CAAC;YAED,OAAO,OAAY,CAAA;QACrB,CAAC;KACF,CAAA;AACH,CAAC,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,EAAW,EAAE,KAAc,EACZ,EAAE;IACjB,MAAM,OAAO,GAAG,UAAU,EAAE,CAAA;IAC5B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAI,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;IACpF,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE,CAAC,IAAI,CAAgB,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,EACnE,CAAC,QAAQ,EAAE,EAAE,CAAC,CACf,CAAA;IAED,OAAO,oBAAoB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;AAC9E,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,IAA6B,EACZ,EAAE;IACnB,MAAM,OAAO,GAAG,UAAU,EAAE,CAAA;IAC5B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAI,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAA;IAEtG;;;;OAIG;IACH,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC,CAAA;IACrE,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE,CAAC,IAAI,CACR,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CACxE,EACD,CAAC,QAAQ,EAAE,GAAG,CAAC,CAChB,CAAA;IAED,OAAO,oBAAoB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;AAC9E,CAAC,CAAA"}
package/build/types.d.ts CHANGED
@@ -1,11 +1,12 @@
1
1
  import type { PropsWithChildren, FC, DependencyList } from 'react';
2
2
  import type { AbstractRequest } from '@owlmeans/entrypoint';
3
3
  import type { ClientConfig, ClientContext as BasicClientContext } from '@owlmeans/client-context';
4
+ import type { Criteria, ResourceRecord, Sort } from '@owlmeans/resource';
4
5
  import type { StateResourceAppend } from '@owlmeans/state';
5
6
  import type { ClientEntrypoint } from '@owlmeans/client-entrypoint';
6
7
  import type { DebugServiceAppend, ModalServiceAppend } from './components/types.js';
7
8
  import type { ConfigResourceAppend } from '@owlmeans/config';
8
- import type { ConfigRecord } from '@owlmeans/context';
9
+ import type { ConfigRecord, EntrypointReference } from '@owlmeans/context';
9
10
  import type { NavigateFunction, RouterService, Location, RouteObject, LibraryRouter } from '@owlmeans/router';
10
11
  export interface RouterModel {
11
12
  routes: RouteObject[];
@@ -29,9 +30,9 @@ export interface AppProps extends PropsWithChildren {
29
30
  /** Opt out of mounting the router (e.g. when routing is hosted elsewhere). */
30
31
  noRouter?: boolean;
31
32
  }
32
- export interface RoutedComponent<ExtraProps = {}> extends FC<PropsWithChildren<ModuleContextParams & ExtraProps>> {
33
+ export interface RoutedComponent<ExtraProps = {}> extends FC<PropsWithChildren<EntrypointContextParams & ExtraProps>> {
33
34
  }
34
- export interface ModuleContextParams<T extends {} = {}> {
35
+ export interface EntrypointContextParams<T extends {} = {}> {
35
36
  alias: string;
36
37
  params: AbstractRequest<T>['params'];
37
38
  path: string;
@@ -46,13 +47,15 @@ export interface NavRequest<T extends Record<string, any> = Record<string, any>>
46
47
  replace?: boolean;
47
48
  silent?: boolean;
48
49
  }
50
+ /** A navigation target is a protocol reference in application code, with strings retained for adapters. */
51
+ export type EntrypointTarget = EntrypointReference | string;
49
52
  export interface Navigator {
50
53
  _navigate: NavigateFunction;
51
54
  navigate: <R extends NavRequest = NavRequest>(module: ClientEntrypoint<string, AbstractRequest>, request?: R) => Promise<void>;
52
- go: <R extends NavRequest = NavRequest>(alias: string, request?: R) => Promise<void>;
55
+ go: <R extends NavRequest = NavRequest>(target: EntrypointTarget, request?: R) => Promise<void>;
53
56
  back: () => Promise<void>;
54
57
  pressBack: () => () => void;
55
- press: <R extends NavRequest = NavRequest>(alias: string, request?: R) => () => void;
58
+ press: <R extends NavRequest = NavRequest>(target: EntrypointTarget, request?: R) => () => void;
56
59
  location: <R extends NavRequest = NavRequest>() => Location<R>;
57
60
  }
58
61
  export interface DebugConfigRecord extends ConfigRecord {
@@ -62,4 +65,12 @@ export interface UseValueParams<T> {
62
65
  default?: T;
63
66
  deps?: DependencyList;
64
67
  }
68
+ /** What `useStoreList` subscribes to. Every field is optional; nothing at all means everything. */
69
+ export interface UseStoreListOptions<T extends ResourceRecord = ResourceRecord> {
70
+ /** The live query. Omitted or `{}` matches every record the resource holds. */
71
+ query?: Criteria<T>;
72
+ sort?: Sort<T>[];
73
+ /** Which state resource to read; the context's default one when omitted. */
74
+ resource?: string;
75
+ }
65
76
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { EntrypointContextParams } from '../types.js';
2
+ export declare const EntrypointContext: import("react").Context<EntrypointContextParams<{}>>;
3
+ //# sourceMappingURL=entrypoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entrypoint.d.ts","sourceRoot":"","sources":["../../src/utils/entrypoint.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAiB,MAAM,aAAa,CAAA;AAMzE,eAAO,MAAM,iBAAiB,sDAK5B,CAAA"}
@@ -1,8 +1,8 @@
1
1
  import { createContext } from 'react';
2
- export const ModuleContext = createContext({
2
+ export const EntrypointContext = createContext({
3
3
  alias: '',
4
4
  params: {},
5
5
  path: '',
6
6
  context: {}
7
7
  });
8
- //# sourceMappingURL=module.js.map
8
+ //# sourceMappingURL=entrypoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entrypoint.js","sourceRoot":"","sources":["../../src/utils/entrypoint.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAOrC,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAA0B;IACtE,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,EAAE;IACV,IAAI,EAAE,EAAE;IACR,OAAO,EAAE,EAAa;CACvB,CAAC,CAAA"}
@@ -1,4 +1,4 @@
1
1
  export * from './router.js';
2
2
  export * from './route.js';
3
- export * from './module.js';
3
+ export * from './entrypoint.js';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA"}
@@ -1,4 +1,4 @@
1
1
  export * from './router.js';
2
2
  export * from './route.js';
3
- export * from './module.js';
3
+ export * from './entrypoint.js';
4
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../src/utils/route.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AAChE,OAAO,KAAK,EAAwC,aAAa,EAAE,MAAM,aAAa,CAAA;AAEtF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAKnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAE5D,KAAK,MAAM,GAAG,YAAY,CAAA;AAC1B,UAAU,OAAO,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC;CAAI;AAEzE,eAAO,MAAM,mBAAmB,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,EAyD7D,CAAA;AAED,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAA;AAEvF,UAAU,cAAc;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAA;IACjC,WAAW,EAAE,OAAO,CAAA;CACrB"}
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../src/utils/route.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AAChE,OAAO,KAAK,EAA4C,aAAa,EAAE,MAAM,aAAa,CAAA;AAE1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAKnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAE5D,KAAK,MAAM,GAAG,YAAY,CAAA;AAC1B,UAAU,OAAO,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC;CAAI;AAEzE,eAAO,MAAM,mBAAmB,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,EAgE7D,CAAA;AAED,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAA;AAEvF,UAAU,cAAc;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAA;IACjC,WAAW,EAAE,OAAO,CAAA;CACrB"}
@@ -6,10 +6,16 @@ import { AuthorizationError } from '@owlmeans/auth';
6
6
  export const createRouteRenderer = ({ context, module, hasChildren }) => () => {
7
7
  const params = context.router().useParams();
8
8
  const reply = provideResponse();
9
+ // Own guards plus every ancestor's — the same set the request would be judged by. Whether a
10
+ // screen is guarded is a question about THIS list being non-empty, never about the declaration
11
+ // carrying a `guards` property: binding always assigns the array, empty when nothing was
12
+ // declared, and an empty list means an open screen. Asking the wrong question refuses every
13
+ // guest screen with `frontend-guard`, since no guard can match when there are none.
14
+ const aliases = module.getGuards();
9
15
  useEffect(() => {
10
- if (module.guards != null) {
11
- const guards = module.getGuards().map(guard => context.service(guard));
12
- const request = provideRequest(module.alias, module.getPath());
16
+ if (aliases.length > 0) {
17
+ const guards = aliases.map(guard => context.service(guard));
18
+ const request = provideRequest(module.alias, module.path());
13
19
  const reply = provideResponse();
14
20
  let canceled = false;
15
21
  Promise.all(guards.map(async (guard) => {
@@ -32,9 +38,9 @@ export const createRouteRenderer = ({ context, module, hasChildren }) => () => {
32
38
  });
33
39
  return () => { canceled = true; };
34
40
  }
35
- }, module.guards ?? []);
41
+ }, aliases);
36
42
  let Renderer = module.handle?.({
37
- alias: module.alias, path: module.getPath(),
43
+ alias: module.alias, path: module.path(),
38
44
  params, body: {}, headers: {}, query: {},
39
45
  }, reply);
40
46
  if (reply.error != null) {
@@ -47,7 +53,7 @@ export const createRouteRenderer = ({ context, module, hasChildren }) => () => {
47
53
  if (isComponent(Renderer)) {
48
54
  const EnsuredRenderer = memo(Renderer);
49
55
  const props = {
50
- context, params, alias: module.getAlias(), path: module.getPath()
56
+ context, params, alias: module.alias, path: module.path()
51
57
  };
52
58
  if (hasChildren) {
53
59
  return _jsx(EnsuredRenderer, { ...props, children: _jsx(Outlet, {}) });
@@ -1 +1 @@
1
- {"version":3,"file":"route.js","sourceRoot":"","sources":["../../src/utils/route.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../src/utils/route.tsx"],"names":[],"mappings":"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"}
@@ -4,13 +4,13 @@ import type { ClientContext } from '../types.js';
4
4
  type Config = ClientConfig;
5
5
  interface Context<C extends Config = Config> extends ClientContext<C> {
6
6
  }
7
- export declare const buildModuleTree: <R, C extends Config = Config, T extends Context<C> = Context<C>>(context: T) => ModuleTree<R>;
8
- export declare const visitModuleTree: <T, R>(tree: ModuleTree<T>, visitor: ModuleTreeVisitor<T, R>) => Promise<R[]>;
7
+ export declare const buildEntrypointTree: <R, C extends Config = Config, T extends Context<C> = Context<C>>(context: T) => EntrypointTree<R>;
8
+ export declare const visitEntrypointTree: <T, R>(tree: EntrypointTree<T>, visitor: EntrypointTreeVisitor<T, R>) => Promise<R[]>;
9
9
  export declare const initializeRouter: (context: Context) => Promise<import("@owlmeans/router").RouteObject[]>;
10
- export interface ModuleTreeVisitor<T, R> {
10
+ export interface EntrypointTreeVisitor<T, R> {
11
11
  (module: ClientEntrypoint<T>, children: R[], alone: boolean): Promise<R>;
12
12
  }
13
- interface ModuleTree<T> extends Map<ClientEntrypoint<T>, ModuleTree<T>> {
13
+ interface EntrypointTree<T> extends Map<ClientEntrypoint<T>, EntrypointTree<T>> {
14
14
  }
15
15
  export {};
16
16
  //# sourceMappingURL=router.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/utils/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAGnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,KAAK,MAAM,GAAG,YAAY,CAAA;AAC1B,UAAU,OAAO,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC;CAAI;AAEzE,eAAO,MAAM,eAAe,GAAI,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,KAAG,UAAU,CAAC,CAAC,CA2BzH,CAAA;AAED,eAAO,MAAM,eAAe,GAAU,CAAC,EAAE,CAAC,QAAQ,UAAU,CAAC,CAAC,CAAC,WAAW,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,EAAE,CAKpF,CAAA;AAE3B,eAAO,MAAM,gBAAgB,YAAmB,OAAO,sDAOtD,CAAA;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC,EAAE,CAAC;IACrC,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CACzE;AAED,UAAU,UAAU,CAAC,CAAC,CAAE,SAAQ,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;CACtE"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/utils/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAGnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,KAAK,MAAM,GAAG,YAAY,CAAA;AAC1B,UAAU,OAAO,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC;CAAI;AAEzE,eAAO,MAAM,mBAAmB,GAAI,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,KAAG,cAAc,CAAC,CAAC,CA2BjI,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAU,CAAC,EAAE,CAAC,QAAQ,cAAc,CAAC,CAAC,CAAC,WAAW,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,EAAE,CAKhG,CAAA;AAE3B,eAAO,MAAM,gBAAgB,YAAmB,OAAO,sDAOtD,CAAA;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC,EAAE,CAAC;IACzC,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CACzE;AAED,UAAU,cAAc,CAAC,CAAC,CAAE,SAAQ,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;CAC9E"}
@@ -1,13 +1,13 @@
1
1
  import { AppType } from '@owlmeans/context';
2
2
  import { makeRouterModel } from '../router.js';
3
- export const buildModuleTree = (context) => {
4
- const modules = context.entrypoints().filter(module => module.route.route.type === AppType.Frontend
3
+ export const buildEntrypointTree = (context) => {
4
+ const entrypoints = context.entrypoints().filter(module => module.route.route.type === AppType.Frontend
5
5
  && (module.sticky || module.route.route.service == null
6
6
  || module.route.route.service === context.cfg.service));
7
7
  const flatTree = new Map();
8
8
  const roots = [];
9
- modules.forEach(module => {
10
- const parentAlias = module.getParentAlias();
9
+ entrypoints.forEach(module => {
10
+ const parentAlias = module.route.route.parent;
11
11
  if (parentAlias == null) {
12
12
  roots.push(module);
13
13
  }
@@ -18,12 +18,12 @@ export const buildModuleTree = (context) => {
18
18
  flatTree.set(parent, list);
19
19
  }
20
20
  });
21
- const reduceModules = (modules) => modules.reduce((tree, module) => tree.set(module, reduceModules(flatTree.get(module) ?? [])), new Map());
22
- return reduceModules(roots);
21
+ const reduceEntrypoints = (entrypoints) => entrypoints.reduce((tree, module) => tree.set(module, reduceEntrypoints(flatTree.get(module) ?? [])), new Map());
22
+ return reduceEntrypoints(roots);
23
23
  };
24
- export const visitModuleTree = async (tree, visitor) => Array.from(tree.entries()).reduce(async (result, [module, tree], _, source) => [
24
+ export const visitEntrypointTree = async (tree, visitor) => Array.from(tree.entries()).reduce(async (result, [module, tree], _, source) => [
25
25
  ...(await result),
26
- await visitor(module, await visitModuleTree(tree, visitor), source.length === 1)
26
+ await visitor(module, await visitEntrypointTree(tree, visitor), source.length === 1)
27
27
  ], Promise.resolve([]));
28
28
  export const initializeRouter = async (context) => {
29
29
  if (!context.cfg.ready) {
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/utils/router.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAO9C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAkE,OAAU,EAAiB,EAAE;IAC5H,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,EAAuB,CAAC,MAAM,CAC/D,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,QAAQ;WACjD,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI;eAClD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAC3D,CAAA;IAED,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA8C,CAAA;IACtE,MAAM,KAAK,GAA0B,EAAE,CAAA;IAEvC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACvB,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,EAAE,CAAA;QAC3C,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACpB,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAsB,WAAW,CAAC,CAAA;YACnE,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;YACvC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACjB,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,aAAa,GAAG,CAAC,OAA8B,EAAiB,EAAE,CAAC,OAAO,CAAC,MAAM,CACrF,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,GAAG,EAAE,CACzF,CAAA;IAED,OAAO,aAAa,CAAC,KAAK,CAAC,CAAA;AAC7B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAQ,IAAmB,EAAE,OAAgC,EAAgB,EAAE,CACjH,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAC/B,KAAK,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;IAC3C,GAAG,CAAC,MAAM,MAAM,CAAC;IACjB,MAAM,OAAO,CAAC,MAAM,EAAE,MAAM,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;CACjF,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;AAE3B,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,OAAgB,EAAE,EAAE;IACzD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QACvB,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,CAAA;QAChC,MAAM,OAAO,CAAC,kBAAkB,EAAE,CAAA;IACpC,CAAC;IACD,MAAM,KAAK,GAAG,eAAe,EAAE,CAAA;IAC/B,OAAO,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;AACrC,CAAC,CAAA"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/utils/router.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAO9C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAkE,OAAU,EAAqB,EAAE;IACpI,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,EAAuB,CAAC,MAAM,CACnE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,QAAQ;WACjD,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI;eAClD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAC3D,CAAA;IAED,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA8C,CAAA;IACtE,MAAM,KAAK,GAA0B,EAAE,CAAA;IAEvC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QAC3B,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAA;QAC7C,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACpB,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAsB,WAAW,CAAC,CAAA;YACnE,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;YACvC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACjB,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,iBAAiB,GAAG,CAAC,WAAkC,EAAqB,EAAE,CAAC,WAAW,CAAC,MAAM,CACrG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,GAAG,EAAE,CAC7F,CAAA;IAED,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAA;AACjC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAQ,IAAuB,EAAE,OAAoC,EAAgB,EAAE,CAC7H,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAC/B,KAAK,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;IAC3C,GAAG,CAAC,MAAM,MAAM,CAAC;IACjB,MAAM,OAAO,CAAC,MAAM,EAAE,MAAM,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;CACrF,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;AAE3B,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,OAAgB,EAAE,EAAE;IACzD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QACvB,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,CAAA;QAChC,MAAM,OAAO,CAAC,kBAAkB,EAAE,CAAA;IACpC,CAAC;IACD,MAAM,KAAK,GAAG,eAAe,EAAE,CAAA;IAC/B,OAAO,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;AACrC,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@owlmeans/client",
3
- "version": "0.1.18-rc.2",
3
+ "version": "0.1.18-rc.21",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -28,17 +28,17 @@
28
28
  }
29
29
  },
30
30
  "dependencies": {
31
- "@owlmeans/auth": "^0.1.18-rc.2",
32
- "@owlmeans/client-context": "^0.1.18-rc.2",
33
- "@owlmeans/client-entrypoint": "^0.1.18-rc.2",
34
- "@owlmeans/client-resource": "^0.1.18-rc.2",
35
- "@owlmeans/config": "^0.1.18-rc.2",
36
- "@owlmeans/context": "^0.1.18-rc.2",
37
- "@owlmeans/error": "^0.1.18-rc.2",
38
- "@owlmeans/entrypoint": "^0.1.18-rc.2",
39
- "@owlmeans/resource": "^0.1.18-rc.2",
40
- "@owlmeans/router": "^0.1.18-rc.2",
41
- "@owlmeans/state": "^0.1.18-rc.2"
31
+ "@owlmeans/auth": "^0.1.18-rc.14",
32
+ "@owlmeans/client-context": "^0.1.18-rc.18",
33
+ "@owlmeans/client-entrypoint": "^0.1.18-rc.18",
34
+ "@owlmeans/client-resource": "^0.1.18-rc.18",
35
+ "@owlmeans/config": "^0.1.18-rc.17",
36
+ "@owlmeans/context": "^0.1.18-rc.13",
37
+ "@owlmeans/error": "^0.1.18-rc.13",
38
+ "@owlmeans/entrypoint": "^0.1.18-rc.16",
39
+ "@owlmeans/resource": "^0.1.18-rc.14",
40
+ "@owlmeans/router": "^0.1.18-rc.13",
41
+ "@owlmeans/state": "^0.1.18-rc.15"
42
42
  },
43
43
  "peerDependencies": {
44
44
  "@remix-run/router": "*",
package/src/context.ts CHANGED
@@ -3,7 +3,7 @@ import { createContext, useContext as useCtx } from 'react'
3
3
  import type { Context as ReactContext } from 'react'
4
4
  import { makeClientContext as makeBasicContext, PLUGINS } from '@owlmeans/client-context'
5
5
  import type { ClientConfig } from '@owlmeans/client-context'
6
- import { AppType, CONFIG_RECORD, Layer } from '@owlmeans/context'
6
+ import { AppType, CONFIG_RECORD } from '@owlmeans/context'
7
7
  import type { ClientContext } from './types.js'
8
8
  import { appendStateResource } from '@owlmeans/state'
9
9
  import { appendModalService } from './components/modal.js'
@@ -15,7 +15,6 @@ import { ROUTER_SERVICE } from '@owlmeans/router'
15
15
  const defaultCfg: ClientConfig = {
16
16
  services: {},
17
17
  brand: {},
18
- layer: Layer.Service,
19
18
  trusted: [],
20
19
  [CONFIG_RECORD]: [],
21
20
  ready: false,
@@ -51,8 +50,6 @@ export const makeClientContext = <C extends ClientConfig, T extends ClientContex
51
50
 
52
51
  context.router = () => context.service<RouterService>(ROUTER_SERVICE)
53
52
 
54
- context.makeContext = makeClientContext as typeof context.makeContext
55
-
56
53
  return context
57
54
  }
58
55
 
@@ -0,0 +1,6 @@
1
+
2
+ import { useContext } from 'react'
3
+ import { EntrypointContext } from './utils/index.js'
4
+ import type { EntrypointContextParams } from './types.js'
5
+
6
+ export const useEntrypoint = <T extends {} = {}>() => useContext(EntrypointContext) as EntrypointContextParams<T>
package/src/helper.tsx CHANGED
@@ -1,10 +1,10 @@
1
1
  import type { AbstractRequest, AbstractResponse } from '@owlmeans/entrypoint'
2
- import type { ModuleContextParams, RoutedComponent, ClientContext } from './types.js'
2
+ import type { EntrypointContextParams, RoutedComponent, ClientContext } from './types.js'
3
3
  import type { RefedEntrypointHandler } from '@owlmeans/client-entrypoint'
4
4
  import { HandledRenderer } from './utils/route.js'
5
5
  import { isValidElement } from 'react'
6
6
  import type { PropsWithChildren } from 'react'
7
- import { ModuleContext } from './utils/module.js'
7
+ import { EntrypointContext } from './utils/entrypoint.js'
8
8
  import type { ClientConfig } from '@owlmeans/client-context'
9
9
  import { assertContext } from '@owlmeans/context'
10
10
 
@@ -17,7 +17,7 @@ export const handler = <T extends {}>(
17
17
  R extends AbstractRequest = AbstractRequest,
18
18
  P extends AbstractResponse<HandledRenderer<T>> = AbstractResponse<HandledRenderer<T>>
19
19
  >(req: R, res: P): any => {
20
- const location = `client-handler:${ref.ref?.getAlias() ?? 'unknown'}`
20
+ const location = `client-handler:${ref.ref?.alias ?? 'unknown'}`
21
21
  if (ref.ref == null) {
22
22
  throw new SyntaxError('Module reference is not provided')
23
23
  }
@@ -40,12 +40,12 @@ export const handler = <T extends {}>(
40
40
 
41
41
  const Renderer: RoutedComponent = ({ children, ...props }) => {
42
42
  const Renderer = Component as unknown as RendererType
43
- return <ModuleContext.Provider value={props}>
43
+ return <EntrypointContext.Provider value={props}>
44
44
  <Renderer {...props}>{children}</Renderer>
45
- </ModuleContext.Provider>
45
+ </EntrypointContext.Provider>
46
46
  }
47
47
 
48
48
  return Renderer
49
49
  }
50
50
 
51
- type RendererType = HandledRenderer<PropsWithChildren<ModuleContextParams>> & RoutedComponent
51
+ type RendererType = HandledRenderer<PropsWithChildren<EntrypointContextParams>> & RoutedComponent
package/src/index.ts CHANGED
@@ -4,7 +4,7 @@ export * from './components/index.js'
4
4
  export * from './services/index.js'
5
5
  export * from './helper.js'
6
6
  export * from './navigate.js'
7
- export * from './module.js'
7
+ export * from './entrypoint.js'
8
8
  export * from './router.js'
9
9
  export * from './types.js'
10
10
  export * from './store.js'