@owlmeans/client 0.1.18-rc.12 → 0.1.18-rc.13

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 (75) hide show
  1. package/README.md +34 -10
  2. package/agent-meta/manifest.json +2 -2
  3. package/agent-meta/skills/client/SKILL.md +25 -11
  4. package/build/components/modal.d.ts.map +1 -1
  5. package/build/components/modal.js.map +1 -1
  6. package/build/components/toggle.d.ts.map +1 -1
  7. package/build/context.d.ts.map +1 -1
  8. package/build/context.js +1 -3
  9. package/build/context.js.map +1 -1
  10. package/build/debug.d.ts.map +1 -1
  11. package/build/entrypoint.d.ts +3 -0
  12. package/build/entrypoint.d.ts.map +1 -0
  13. package/build/entrypoint.js +4 -0
  14. package/build/entrypoint.js.map +1 -0
  15. package/build/errors.d.ts.map +1 -1
  16. package/build/errors.js.map +1 -1
  17. package/build/helper.d.ts.map +1 -1
  18. package/build/helper.js +3 -3
  19. package/build/helper.js.map +1 -1
  20. package/build/index.d.ts +1 -1
  21. package/build/index.d.ts.map +1 -1
  22. package/build/index.js +1 -1
  23. package/build/index.js.map +1 -1
  24. package/build/navigate.d.ts.map +1 -1
  25. package/build/navigate.js +12 -15
  26. package/build/navigate.js.map +1 -1
  27. package/build/router.d.ts.map +1 -1
  28. package/build/router.js +12 -6
  29. package/build/router.js.map +1 -1
  30. package/build/services/debug.d.ts.map +1 -1
  31. package/build/services/debug.js.map +1 -1
  32. package/build/store.d.ts +18 -3
  33. package/build/store.d.ts.map +1 -1
  34. package/build/store.js +56 -55
  35. package/build/store.js.map +1 -1
  36. package/build/types.d.ts +11 -2
  37. package/build/types.d.ts.map +1 -1
  38. package/build/utils/entrypoint.d.ts +3 -0
  39. package/build/utils/entrypoint.d.ts.map +1 -0
  40. package/build/utils/{module.js → entrypoint.js} +2 -2
  41. package/build/utils/entrypoint.js.map +1 -0
  42. package/build/utils/index.d.ts +1 -1
  43. package/build/utils/index.d.ts.map +1 -1
  44. package/build/utils/index.js +1 -1
  45. package/build/utils/index.js.map +1 -1
  46. package/build/utils/route.d.ts.map +1 -1
  47. package/build/utils/route.js +3 -3
  48. package/build/utils/route.js.map +1 -1
  49. package/build/utils/router.d.ts +4 -4
  50. package/build/utils/router.d.ts.map +1 -1
  51. package/build/utils/router.js +8 -8
  52. package/build/utils/router.js.map +1 -1
  53. package/build/value.d.ts.map +1 -1
  54. package/package.json +12 -12
  55. package/src/context.ts +1 -4
  56. package/src/entrypoint.ts +6 -0
  57. package/src/helper.tsx +6 -6
  58. package/src/index.ts +1 -1
  59. package/src/navigate.ts +12 -15
  60. package/src/router.ts +14 -10
  61. package/src/services/debug.ts +2 -2
  62. package/src/store.ts +70 -59
  63. package/src/types.ts +12 -2
  64. package/src/utils/{module.ts → entrypoint.ts} +2 -2
  65. package/src/utils/index.ts +1 -1
  66. package/src/utils/route.tsx +5 -5
  67. package/src/utils/router.ts +11 -11
  68. package/build/module.d.ts +0 -3
  69. package/build/module.d.ts.map +0 -1
  70. package/build/module.js +0 -4
  71. package/build/module.js.map +0 -1
  72. package/build/utils/module.d.ts +0 -3
  73. package/build/utils/module.d.ts.map +0 -1
  74. package/build/utils/module.js.map +0 -1
  75. package/src/module.ts +0 -6
package/build/store.js CHANGED
@@ -1,60 +1,61 @@
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. Pass no id to address the one record of a `single`
36
+ * resource; on any other that is a configuration error and throws.
37
+ */
38
+ export const useStoreModel = (id, alias) => {
25
39
  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
- /**
30
- * The query's CONTENT, not merely whether one was given. A subscription is to the criteria,
31
- * so a screen that narrows its filter has to re-subscribe — keyed on `query == null` it kept
32
- * answering the first filter it ever saw, and nothing indicated the list had gone stale.
33
- */
34
- JSON.stringify(params.query),
35
- JSON.stringify(params.default),
36
- params.listen
37
- ];
38
- const id = useId();
39
- const [models, setModels] = useState([]);
40
- let _return = [...models];
41
- const unsubscribe = useMemo(() => {
42
- const [unsubscribe, _initialModels] = resource.subscribe({
43
- _systemId: id,
44
- id: params.id,
45
- listener: models => {
46
- params.listen && setModels(models);
47
- },
48
- default: params.default,
49
- query: params.query,
50
- });
51
- setModels(_initialModels);
52
- if (_return.length < 1) {
53
- _return.push(..._initialModels);
54
- }
55
- return unsubscribe;
56
- }, deps);
57
- useEffect(() => unsubscribe, deps);
58
- return _return;
40
+ const resource = useMemo(() => context.getStateResource(alias), [context, alias]);
41
+ const store = useMemo(() => bind(listener => resource.watch(id, listener)), [resource, id]);
42
+ return useSyncExternalStore(store.subscribe, store.snapshot, store.snapshot);
43
+ };
44
+ /**
45
+ * A live LIST from a state resource: every record the query accepts, re-evaluated on every write
46
+ * that changes the answer, so a screen never recomputes ids and never re-subscribes to keep up.
47
+ * Omitting `query` matches everything.
48
+ */
49
+ export const useStoreList = (opts) => {
50
+ const context = useContext();
51
+ const resource = useMemo(() => context.getStateResource(opts?.resource), [context, opts?.resource]);
52
+ /**
53
+ * The subscription is keyed on the query's CONTENT, not on whether one was given: a screen
54
+ * that narrows its filter has to re-subscribe, and keyed on identity it kept answering the
55
+ * first filter it ever saw with nothing to say the list had gone stale.
56
+ */
57
+ const key = JSON.stringify([opts?.query ?? null, opts?.sort ?? null]);
58
+ const store = useMemo(() => bind(listener => resource.query(opts?.query, listener, { sort: opts?.sort })), [resource, key]);
59
+ return useSyncExternalStore(store.subscribe, store.snapshot, store.snapshot);
59
60
  };
60
61
  //# sourceMappingURL=store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
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;;;;;;;GAOG;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,6 +1,7 @@
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';
@@ -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;
@@ -62,4 +63,12 @@ export interface UseValueParams<T> {
62
63
  default?: T;
63
64
  deps?: DependencyList;
64
65
  }
66
+ /** What `useStoreList` subscribes to. Every field is optional; nothing at all means everything. */
67
+ export interface UseStoreListOptions<T extends ResourceRecord = ResourceRecord> {
68
+ /** The live query. Omitted or `{}` matches every record the resource holds. */
69
+ query?: Criteria<T>;
70
+ sort?: Sort<T>[];
71
+ /** Which state resource to read; the context's default one when omitted. */
72
+ resource?: string;
73
+ }
65
74
  //# 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,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"}
@@ -9,7 +9,7 @@ export const createRouteRenderer = ({ context, module, hasChildren }) => () => {
9
9
  useEffect(() => {
10
10
  if (module.guards != null) {
11
11
  const guards = module.getGuards().map(guard => context.service(guard));
12
- const request = provideRequest(module.alias, module.getPath());
12
+ const request = provideRequest(module.alias, module.path());
13
13
  const reply = provideResponse();
14
14
  let canceled = false;
15
15
  Promise.all(guards.map(async (guard) => {
@@ -34,7 +34,7 @@ export const createRouteRenderer = ({ context, module, hasChildren }) => () => {
34
34
  }
35
35
  }, module.guards ?? []);
36
36
  let Renderer = module.handle?.({
37
- alias: module.alias, path: module.getPath(),
37
+ alias: module.alias, path: module.path(),
38
38
  params, body: {}, headers: {}, query: {},
39
39
  }, reply);
40
40
  if (reply.error != null) {
@@ -47,7 +47,7 @@ export const createRouteRenderer = ({ context, module, hasChildren }) => () => {
47
47
  if (isComponent(Renderer)) {
48
48
  const EnsuredRenderer = memo(Renderer);
49
49
  const props = {
50
- context, params, alias: module.getAlias(), path: module.getPath()
50
+ context, params, alias: module.alias, path: module.path()
51
51
  };
52
52
  if (hasChildren) {
53
53
  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,EAAE,SAAS,CAAC,KAAG,cAAc,CAAC,CAAC,CA2BjI,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAU,CAAC,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC,CAAC,CAAC,EAAE,SAAS,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,EAAE,CAKhG,CAAA;AAE3B,eAAO,MAAM,gBAAgB,GAAU,SAAS,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"}
@@ -1 +1 @@
1
- {"version":3,"file":"value.d.ts","sourceRoot":"","sources":["../src/value.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAIhD;;GAEG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,UAChB,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,QACpD,CAAC,GAAG,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,iBACpC,OAAO,KACrB,CAAC,GAAG,IAiDN,CAAA"}
1
+ {"version":3,"file":"value.d.ts","sourceRoot":"","sources":["../src/value.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAIhD;;GAEG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,EACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAC1D,MAAM,CAAC,GAAG,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,EACnD,eAAe,OAAO,KACrB,CAAC,GAAG,IAiDN,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@owlmeans/client",
3
- "version": "0.1.18-rc.12",
3
+ "version": "0.1.18-rc.13",
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.7",
32
- "@owlmeans/client-context": "^0.1.18-rc.9",
33
- "@owlmeans/client-entrypoint": "^0.1.18-rc.9",
34
- "@owlmeans/client-resource": "^0.1.18-rc.9",
35
- "@owlmeans/config": "^0.1.18-rc.8",
36
- "@owlmeans/context": "^0.1.18-rc.6",
37
- "@owlmeans/error": "^0.1.18-rc.6",
38
- "@owlmeans/entrypoint": "^0.1.18-rc.8",
39
- "@owlmeans/resource": "^0.1.18-rc.7",
40
- "@owlmeans/router": "^0.1.18-rc.6",
41
- "@owlmeans/state": "^0.1.18-rc.8"
31
+ "@owlmeans/auth": "^0.1.18-rc.8",
32
+ "@owlmeans/client-context": "^0.1.18-rc.11",
33
+ "@owlmeans/client-entrypoint": "^0.1.18-rc.11",
34
+ "@owlmeans/client-resource": "^0.1.18-rc.11",
35
+ "@owlmeans/config": "^0.1.18-rc.10",
36
+ "@owlmeans/context": "^0.1.18-rc.7",
37
+ "@owlmeans/error": "^0.1.18-rc.7",
38
+ "@owlmeans/entrypoint": "^0.1.18-rc.9",
39
+ "@owlmeans/resource": "^0.1.18-rc.8",
40
+ "@owlmeans/router": "^0.1.18-rc.7",
41
+ "@owlmeans/state": "^0.1.18-rc.9"
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'
package/src/navigate.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  import { useMemo } from 'react'
2
2
  import type { Navigator } from './types.js'
3
- import { EntrypointOutcome } from '@owlmeans/entrypoint'
4
3
  import { useContext } from './context.js'
5
4
  import type { ClientEntrypoint } from '@owlmeans/client-entrypoint'
6
5
 
@@ -12,20 +11,18 @@ export const useNavigate = (): Navigator => {
12
11
  const navigator: Navigator = {
13
12
  _navigate: navigate,
14
13
 
15
- navigate: async (module, request) => {
16
- const [url, ok] = await module.call(request)
17
-
18
- if (ok === EntrypointOutcome.Ok) {
19
- if (url.startsWith('http')) {
20
- globalThis.location.href = url
21
- } else {
22
- navigate(url, {
23
- state: {
24
- ...module.route.route, silent: request?.silent
25
- },
26
- replace: request?.replace ?? false
27
- })
28
- }
14
+ navigate: async (entrypoint, request) => {
15
+ const url = await entrypoint.url(request)
16
+
17
+ if (url.startsWith('http')) {
18
+ globalThis.location.href = url
19
+ } else {
20
+ navigate(url, {
21
+ state: {
22
+ ...entrypoint.route.route, silent: request?.silent
23
+ },
24
+ replace: request?.replace ?? false
25
+ })
29
26
  }
30
27
  },
31
28
 
package/src/router.ts CHANGED
@@ -1,18 +1,25 @@
1
1
  import type { FC } from 'react'
2
2
  import type { RouterModel, RouterProps, RouterProvider } from './types.js'
3
3
  import { createElement, useEffect, useRef, useState } from 'react'
4
- import { buildModuleTree, initializeRouter, visitModuleTree } from './utils/router.js'
4
+ import { buildEntrypointTree, initializeRouter, visitEntrypointTree } from './utils/router.js'
5
5
  import { createRouteRenderer } from './utils/route.js'
6
6
  import { useContext } from './context.js'
7
7
  import type { ClientConfig } from '@owlmeans/client-context'
8
8
  import type { ClientContext } from './types.js'
9
9
  import { assertContext } from '@owlmeans/context'
10
- import type { BasicConfig, BasicContext } from '@owlmeans/context'
11
10
  import type { LibraryRouter, RouteObject } from '@owlmeans/router'
12
11
 
13
12
  type Config = ClientConfig
14
13
  interface Context<C extends Config = Config> extends ClientContext<C> { }
15
14
 
15
+ /** A child path that keeps its leading separator reads as absolute, and the router rejects it. */
16
+ const relative = (segment: string): string => {
17
+ segment = segment.trim()
18
+ segment = segment.endsWith('/') ? segment.slice(0, -1) : segment
19
+
20
+ return segment.startsWith('/') ? segment.substring(1) : segment
21
+ }
22
+
16
23
  export const Router: FC<RouterProps> = ({ provide }) => {
17
24
  const progress = useRef(false)
18
25
  const context = useContext()
@@ -55,21 +62,18 @@ export const makeRouterModel = (): RouterModel => {
55
62
  routes: [],
56
63
  resolve: async (ctx) => {
57
64
  const context = assertContext<Config, Context>(ctx as Context, location)
58
- const moduleTree = buildModuleTree(context as Context)
59
-
60
- const reactRoutes: RouteObject[] = await visitModuleTree(moduleTree, async (module, children) => {
61
- const ctx = assertContext<BasicConfig, BasicContext<BasicConfig>>(
62
- (module.ctx ?? context) as BasicContext<BasicConfig>, location
63
- )
64
- await module.route.resolve(ctx)
65
+ const entrypointTree = buildEntrypointTree(context as Context)
65
66
 
67
+ const reactRoutes: RouteObject[] = await visitEntrypointTree(entrypointTree, async (module, children) => {
66
68
  const renderer = module.handle != null
67
69
  ? { Component: createRouteRenderer({ context, module, hasChildren: children.length > 0 }) }
68
70
  : undefined
69
71
 
72
+ // The React tree nests, so each node contributes only its OWN segment — its ancestors are
73
+ // the branches it hangs under and already carry theirs.
70
74
  const route: RouteObject = {
71
75
  ...(module.route.route.default ? { index: true } as any : undefined),
72
- ...(!module.route.route.default ? { path: module.getPath(true), children } : undefined),
76
+ ...(!module.route.route.default ? { path: relative(module.segment()), children } : undefined),
73
77
  ...renderer
74
78
  }
75
79
 
@@ -62,13 +62,13 @@ export const createDebugService = (alias: string = DEF_DEBUG_ALIAS): DebugServic
62
62
  }, service => async () => {
63
63
  service.initialized = true
64
64
  const context = assertContext(service.ctx, location) as ClientContext
65
- const record = await context.getConfigResource().load<DebugConfigRecord>(DEBUG_CONFIG_KEY)
65
+ const record = await context.getConfigResource<DebugConfigRecord>().load(DEBUG_CONFIG_KEY)
66
66
  if (record?.states != null) {
67
67
  service.addItem({
68
68
  alias: 'reset-states',
69
69
  title: `Reset states`,
70
70
  action: async (modal, context) => {
71
- const record = await context.getConfigResource().load<DebugConfigRecord>(DEBUG_CONFIG_KEY)
71
+ const record = await context.getConfigResource<DebugConfigRecord>().load(DEBUG_CONFIG_KEY)
72
72
  if (record?.states != null) {
73
73
  await service.erase(record.states)
74
74
  context.rerender()