@astrale-os/shell-react 0.2.10-beta.3 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/application/apps/app-host.d.ts +5 -5
- package/dist/application/apps/app-host.d.ts.map +1 -1
- package/dist/application/apps/app-host.js +18 -39
- package/dist/application/apps/apps.hook.d.ts +4 -11
- package/dist/application/apps/apps.hook.d.ts.map +1 -1
- package/dist/application/apps/apps.hook.js +9 -49
- package/dist/application/apps/open-app.hook.d.ts +4 -7
- package/dist/application/apps/open-app.hook.d.ts.map +1 -1
- package/dist/application/apps/open-app.hook.js +2 -2
- package/dist/application/index.d.ts +1 -3
- package/dist/application/index.d.ts.map +1 -1
- package/dist/application/index.js +1 -2
- package/dist/application/spaces/space.hook.d.ts.map +1 -1
- package/dist/application/spaces/space.hook.js +4 -1
- package/dist/auth/act-as.context.d.ts +1 -1
- package/dist/auth/act-as.context.d.ts.map +1 -1
- package/dist/auth/auth.hook.d.ts +1 -1
- package/dist/auth/auth.hook.d.ts.map +1 -1
- package/dist/auth/can.hook.d.ts +2 -2
- package/dist/auth/can.hook.d.ts.map +1 -1
- package/dist/auth/self.hook.d.ts +1 -1
- package/dist/auth/self.hook.d.ts.map +1 -1
- package/dist/components/can.d.ts +2 -2
- package/dist/components/can.d.ts.map +1 -1
- package/dist/graph/call/call.hook.d.ts +2 -2
- package/dist/graph/call/call.hook.d.ts.map +1 -1
- package/dist/graph/call/stream.hook.d.ts +2 -2
- package/dist/graph/call/stream.hook.d.ts.map +1 -1
- package/dist/graph/graph.context.d.ts +1 -1
- package/dist/graph/graph.context.d.ts.map +1 -1
- package/dist/graph/guards.error.d.ts +4 -4
- package/dist/graph/guards.error.d.ts.map +1 -1
- package/dist/graph/guards.error.js +4 -4
- package/dist/graph/query-definition.hook.d.ts +1 -2
- package/dist/graph/query-definition.hook.d.ts.map +1 -1
- package/dist/graph/query-definition.hook.js +4 -10
- package/dist/graph/resource.d.ts +1 -1
- package/dist/graph/resource.d.ts.map +1 -1
- package/dist/graph/store.d.ts +2 -2
- package/dist/graph/store.d.ts.map +1 -1
- package/dist/graph/store.js +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/navigation/adapters/url.adapter.d.ts.map +1 -1
- package/dist/navigation/adapters/url.adapter.js +2 -5
- package/dist/navigation/codec.d.ts.map +1 -1
- package/dist/navigation/codec.js +1 -7
- package/dist/navigation/link.js +1 -1
- package/dist/navigation/scope.context.d.ts +1 -1
- package/dist/navigation/scope.context.d.ts.map +1 -1
- package/dist/navigation/scope.context.js +3 -6
- package/dist/navigation/snapshot.d.ts +1 -1
- package/dist/navigation/snapshot.d.ts.map +1 -1
- package/dist/navigation/snapshot.js +2 -8
- package/dist/navigation/view-key.d.ts +3 -0
- package/dist/navigation/view-key.d.ts.map +1 -0
- package/dist/navigation/view-key.js +8 -0
- package/dist/schema/action.hook.d.ts +11 -7
- package/dist/schema/action.hook.d.ts.map +1 -1
- package/dist/schema/action.hook.js +11 -6
- package/dist/schema/domain.hook.js +12 -13
- package/dist/schema/kernel.hook.d.ts +1 -1
- package/dist/schema/kernel.hook.d.ts.map +1 -1
- package/dist/schema/kernel.hook.js +1 -1
- package/dist/schema/mutation.hook.d.ts +2 -2
- package/dist/schema/mutation.hook.d.ts.map +1 -1
- package/dist/schema/mutation.hook.js +6 -5
- package/dist/schema/object.hook.d.ts +3 -6
- package/dist/schema/object.hook.d.ts.map +1 -1
- package/dist/schema/object.hook.js +4 -5
- package/dist/schema/relation.hook.d.ts +29 -19
- package/dist/schema/relation.hook.d.ts.map +1 -1
- package/dist/schema/relation.hook.js +45 -63
- package/dist/selection/live.d.ts.map +1 -1
- package/dist/selection/live.js +1 -2
- package/dist/session/session.context.d.ts +3 -4
- package/dist/session/session.context.d.ts.map +1 -1
- package/package.json +4 -14
- package/src/application/apps/app-host.tsx +22 -52
- package/src/application/apps/apps.hook.ts +14 -64
- package/src/application/apps/open-app.hook.ts +5 -10
- package/src/application/index.ts +2 -12
- package/src/application/spaces/space.hook.ts +6 -1
- package/src/auth/act-as.context.tsx +1 -1
- package/src/auth/auth.hook.ts +1 -1
- package/src/auth/can.hook.ts +3 -3
- package/src/auth/self.hook.ts +1 -1
- package/src/components/can.tsx +2 -2
- package/src/graph/call/call.hook.ts +2 -2
- package/src/graph/call/stream.hook.ts +2 -2
- package/src/graph/graph.context.ts +1 -1
- package/src/graph/guards.error.ts +4 -4
- package/src/graph/query-definition.hook.ts +13 -23
- package/src/graph/resource.ts +1 -1
- package/src/graph/store.ts +3 -3
- package/src/index.ts +3 -7
- package/src/navigation/adapters/url.adapter.ts +3 -4
- package/src/navigation/codec.ts +1 -7
- package/src/navigation/link.tsx +1 -1
- package/src/navigation/scope.context.tsx +5 -6
- package/src/navigation/snapshot.ts +4 -9
- package/src/navigation/view-key.ts +11 -0
- package/src/schema/action.hook.ts +45 -28
- package/src/schema/domain.hook.ts +9 -10
- package/src/schema/kernel.hook.ts +1 -1
- package/src/schema/mutation.hook.ts +13 -9
- package/src/schema/object.hook.ts +10 -18
- package/src/schema/relation.hook.ts +127 -145
- package/src/selection/live.ts +1 -2
- package/src/session/session.context.ts +3 -4
- package/dist/application/apps/domains.hook.d.ts +0 -7
- package/dist/application/apps/domains.hook.d.ts.map +0 -1
- package/dist/application/apps/domains.hook.js +0 -18
- package/src/application/apps/domains.hook.ts +0 -37
package/dist/index.d.ts
CHANGED
|
@@ -20,13 +20,13 @@ export { useEmitIntent, useIntent, useSendIntent } from './intents/index.js';
|
|
|
20
20
|
export type { EmitIntent, IntentCtx, IntentPayload, IntentReply, SendIntent, } from './intents/index.js';
|
|
21
21
|
export { Can, ConnectionBoundary, CredentialBoundary, defaultViewError, defaultViewLoading, GraphBoundary, Astrale, ViewBoundary, ViewErrorBoundary, } from './components/index.js';
|
|
22
22
|
export type { AstraleProps, ViewErrorBoundaryProps } from './components/index.js';
|
|
23
|
-
export { AppHost, AppLogo, useApps, useCurrentSpace,
|
|
24
|
-
export type { AppHostFallbackState, AppHostProps, AppLogoProps, AppsResult, CurrentSpaceResult,
|
|
23
|
+
export { AppHost, AppLogo, useApps, useCurrentSpace, useOpenApp, useSpace, useSpaces, useUser, } from './application/index.js';
|
|
24
|
+
export type { AppHostFallbackState, AppHostProps, AppLogoProps, AppsResult, CurrentSpaceResult, SpaceResult, SpacesResult, } from './application/index.js';
|
|
25
25
|
export { NodeId } from '@astrale-os/sdk/graph/node';
|
|
26
26
|
export { NodePath, Path } from '@astrale-os/sdk/graph/path';
|
|
27
27
|
export type { Node } from '@astrale-os/sdk/graph/node';
|
|
28
28
|
export type { PathLike } from '@astrale-os/sdk/graph/path';
|
|
29
|
-
export type { AuthApi, Identity, PolicyDecisionInput } from '@astrale-os/
|
|
30
|
-
export type { DomainBinding
|
|
31
|
-
export type {
|
|
29
|
+
export type { AuthApi, Identity, PolicyDecisionInput } from '@astrale-os/sdk/auth';
|
|
30
|
+
export type { DomainBinding } from '@astrale-os/shell';
|
|
31
|
+
export type { App, CloseResult, CredentialSnapshot, HostCapabilities, IntentRegistry, KernelClient, MountCredential, NodeTarget, Shell, ShellConfig, SpaceNode, UserNode, ViewLocation, ViewPresentation, ViewPresentationRequest, Window, } from '@astrale-os/shell';
|
|
32
32
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -17,7 +17,7 @@ export { useEmitIntent, useIntent, useSendIntent } from './intents/index.js';
|
|
|
17
17
|
// Headless composition kit.
|
|
18
18
|
export { Can, ConnectionBoundary, CredentialBoundary, defaultViewError, defaultViewLoading, GraphBoundary, Astrale, ViewBoundary, ViewErrorBoundary, } from './components/index.js';
|
|
19
19
|
// Shell application conveniences.
|
|
20
|
-
export { AppHost, AppLogo, useApps, useCurrentSpace,
|
|
20
|
+
export { AppHost, AppLogo, useApps, useCurrentSpace, useOpenApp, useSpace, useSpaces, useUser, } from './application/index.js';
|
|
21
21
|
// Canonical identity carriers used by View props and rich hooks.
|
|
22
22
|
export { NodeId } from '@astrale-os/sdk/graph/node';
|
|
23
23
|
export { NodePath, Path } from '@astrale-os/sdk/graph/path';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url.adapter.d.ts","sourceRoot":"","sources":["../../../src/navigation/adapters/url.adapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"url.adapter.d.ts","sourceRoot":"","sources":["../../../src/navigation/adapters/url.adapter.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAO9C,oEAAoE;AACpE,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,UAAU,CA+EhE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { NodePath } from '@astrale-os/sdk/graph/path';
|
|
2
|
-
import {
|
|
2
|
+
import { viewKey } from '../view-key.js';
|
|
3
3
|
const VIEW_KEY = 'astrale.view';
|
|
4
4
|
const PARAM_PREFIX = 'astrale.param.';
|
|
5
5
|
/** History-API adapter — the location lives in the query string. */
|
|
@@ -51,10 +51,7 @@ export function urlAdapter(opts) {
|
|
|
51
51
|
node = NodePath(rawNode);
|
|
52
52
|
const rawView = sp.get(VIEW_KEY);
|
|
53
53
|
if (rawView !== null) {
|
|
54
|
-
|
|
55
|
-
if (!Key.ref(admitted).startsWith('view.'))
|
|
56
|
-
throw new TypeError('Invalid View key.');
|
|
57
|
-
view = admitted;
|
|
54
|
+
view = viewKey(rawView);
|
|
58
55
|
}
|
|
59
56
|
}
|
|
60
57
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/navigation/codec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEpD,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/navigation/codec.ts"],"names":[],"mappings":"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"}
|
package/dist/navigation/codec.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Path } from '@astrale-os/sdk/graph/path';
|
|
2
|
-
import { Key as admitKey } from '@astrale-os/sdk/schema';
|
|
3
2
|
import { createElement } from 'react';
|
|
4
3
|
import { NavScope } from './scope.context.js';
|
|
5
4
|
import { useNavCtx } from './scope.context.js';
|
|
6
5
|
import { useHistoryVersion } from './scope.context.js';
|
|
6
|
+
import { viewKey } from './view-key.js';
|
|
7
7
|
export function pathParam(_name) {
|
|
8
8
|
return Object.freeze({
|
|
9
9
|
encode: (value) => Path.from(value).raw,
|
|
@@ -113,9 +113,3 @@ export function useNavigation(navigation) {
|
|
|
113
113
|
snapshot: () => context.history.snapshot(),
|
|
114
114
|
});
|
|
115
115
|
}
|
|
116
|
-
function viewKey(input) {
|
|
117
|
-
const key = admitKey(input);
|
|
118
|
-
if (!admitKey.ref(key).startsWith('view.'))
|
|
119
|
-
throw new TypeError(`Invalid View key '${input}'.`);
|
|
120
|
-
return key;
|
|
121
|
-
}
|
package/dist/navigation/link.js
CHANGED
|
@@ -16,7 +16,7 @@ export function Link(props) {
|
|
|
16
16
|
const href = ctx.adapter.href?.(target);
|
|
17
17
|
const nodeRef = target.node;
|
|
18
18
|
const preload = useCallback(() => {
|
|
19
|
-
const query = Query.from({
|
|
19
|
+
const query = Query.from({ nodes: [nodeRef] }).select({ kind: 'graph' });
|
|
20
20
|
void ctx.store.preload(query, { page: { size: 1 } }).catch(() => { });
|
|
21
21
|
}, [ctx.store, nodeRef]);
|
|
22
22
|
useEffect(() => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { GraphStore } from '@astrale-os/
|
|
1
|
+
import type { GraphStore } from '@astrale-os/sdk/client/store';
|
|
2
2
|
import type { ReactElement, ReactNode } from 'react';
|
|
3
3
|
import { NodePath } from '@astrale-os/sdk/graph/path';
|
|
4
4
|
import type { NavAdapter } from './adapters/adapter.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope.context.d.ts","sourceRoot":"","sources":["../../src/navigation/scope.context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAsB,MAAM,
|
|
1
|
+
{"version":3,"file":"scope.context.d.ts","sourceRoot":"","sources":["../../src/navigation/scope.context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAsB,MAAM,8BAA8B,CAAA;AAElF,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEpD,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAarD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAO9C,OAAO,EAAE,UAAU,EAAe,MAAM,cAAc,CAAA;AAKtD,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAA;IACnD,IAAI,IAAI,IAAI,CAAA;IACZ,OAAO,IAAI,IAAI,CAAA;IACf,2EAA2E;IAC3E,EAAE,IAAI,KAAK,CAAA;IACX,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;IACnE,IAAI,IAAI,IAAI,CAAA;IACZ,OAAO,IAAI,IAAI,CAAA;IACf,EAAE,IAAI,KAAK,CAAA;IACX,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,OAAO,CAAA;CACpB;AAED,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAA;IAC5B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAA;IAC5B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAA;CACnC;AAED,eAAO,MAAM,UAAU,wCAAqC,CAAA;AAG5D,wBAAgB,SAAS,IAAI,MAAM,CAIlC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAEjD;AAID,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,GAAG,MAAM,CAOpE;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,CA6BzE;AAED,KAAK,eAAe,GAAG,CAAC,QAAQ,EAAE,WAAW,KAAK,SAAS,GAAG,IAAI,CAAA;AAClE,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,eAAe,CAAA;AAEpD,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,UAAU,CAAA;IACpB,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,KAAK,IAAI,CAAA;IACjE,gFAAgF;IAChF,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,kBAAkB,GAAG,IAAI,CAAA;IACnE,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,YAAY,CAsH3D"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { NodePath } from '@astrale-os/sdk/graph/path';
|
|
3
3
|
import { Query } from '@astrale-os/sdk/query';
|
|
4
|
-
import { Key } from '@astrale-os/sdk/schema';
|
|
5
4
|
import { createContext, startTransition, useCallback, useContext, useEffect, useMemo, useRef, useSyncExternalStore, } from 'react';
|
|
6
5
|
import { UnsupportedFeatureError } from '../graph/memory/read/envelope.js';
|
|
7
6
|
import { useStoreResource } from '../graph/resource.js';
|
|
@@ -11,6 +10,7 @@ import { memoryAdapter } from './adapters/memory.adapter.js';
|
|
|
11
10
|
import { NavHistory, seedEntries } from './history.js';
|
|
12
11
|
import { buildLocation } from './location.js';
|
|
13
12
|
import { revalidateAndPrune, serializeTarget } from './snapshot.js';
|
|
13
|
+
import { viewKey } from './view-key.js';
|
|
14
14
|
export const NavContext = createContext(null);
|
|
15
15
|
NavContext.displayName = 'AstraleNavContext';
|
|
16
16
|
export function useNavCtx() {
|
|
@@ -32,7 +32,7 @@ export function useHistoryVersion(history) {
|
|
|
32
32
|
export function useGraphPoint(target) {
|
|
33
33
|
const query = useMemo(() => target === null
|
|
34
34
|
? null
|
|
35
|
-
: Query.from({
|
|
35
|
+
: Query.from({ nodes: [target], binding: 'navigation_target' }).select({
|
|
36
36
|
kind: 'graph',
|
|
37
37
|
}), [target]);
|
|
38
38
|
const project = useCallback((response) => {
|
|
@@ -181,10 +181,7 @@ function admitLocation(location) {
|
|
|
181
181
|
const node = NodePath(location.node);
|
|
182
182
|
let view;
|
|
183
183
|
if (location.view !== undefined) {
|
|
184
|
-
|
|
185
|
-
if (!Key.ref(key).startsWith('view.'))
|
|
186
|
-
throw new TypeError('Navigation View key is invalid.');
|
|
187
|
-
view = key;
|
|
184
|
+
view = viewKey(location.view);
|
|
188
185
|
}
|
|
189
186
|
const params = {};
|
|
190
187
|
if (location.params !== undefined) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { GraphStore } from '@astrale-os/
|
|
1
|
+
import type { GraphStore } from '@astrale-os/sdk/client/store';
|
|
2
2
|
import type { Node } from '@astrale-os/sdk/graph/node';
|
|
3
3
|
import type { PathLike } from '@astrale-os/sdk/graph/path';
|
|
4
4
|
import type { Key } from '@astrale-os/sdk/schema';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/navigation/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/navigation/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAA;AACtD,OAAO,KAAK,EAAY,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AACpE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAK9C,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAIlE,uFAAuF;AACvF,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,IAAI,GACJ;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAA;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAA;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACzC,CAAA;AAgBL,qEAAqE;AACrE,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,kBAAkB,CAOrE;AAED,6FAA6F;AAC7F,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,OAAO,CAAC,CAkBlB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Path } from '@astrale-os/sdk/graph/path';
|
|
2
2
|
import { Query } from '@astrale-os/sdk/query';
|
|
3
|
-
import {
|
|
3
|
+
import { viewKey } from './view-key.js';
|
|
4
4
|
function isNode(value) {
|
|
5
5
|
return typeof value === 'object' && value !== null && 'id' in value && 'class' in value;
|
|
6
6
|
}
|
|
@@ -20,12 +20,6 @@ export function serializeTarget(target) {
|
|
|
20
20
|
...(target.params === undefined ? {} : { params: { ...target.params } }),
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
|
-
function viewKey(input) {
|
|
24
|
-
const key = admitKey(input);
|
|
25
|
-
if (!admitKey.ref(key).startsWith('view.'))
|
|
26
|
-
throw new TypeError(`Invalid View key '${input}'.`);
|
|
27
|
-
return key;
|
|
28
|
-
}
|
|
29
23
|
/** Drop restored entries that no longer resolve under the authenticated Graph capability. */
|
|
30
24
|
export async function revalidateAndPrune(history, store, shell) {
|
|
31
25
|
const { entries, cursor } = history.snapshot();
|
|
@@ -52,7 +46,7 @@ export async function revalidateAndPrune(history, store, shell) {
|
|
|
52
46
|
}
|
|
53
47
|
async function resolves(store, shell, entry) {
|
|
54
48
|
try {
|
|
55
|
-
const query = Query.from({
|
|
49
|
+
const query = Query.from({ nodes: [entry.node] }).select({ kind: 'graph' });
|
|
56
50
|
const response = await store.read(query, { page: { size: 1 } });
|
|
57
51
|
if (response.result.kind !== 'graph' ||
|
|
58
52
|
response.result.selection.kind !== 'node' ||
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view-key.d.ts","sourceRoot":"","sources":["../../src/navigation/view-key.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAA;AAIjD,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,IAAI,CAM/C"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { BoundNodeFor } from '@astrale-os/sdk/client';
|
|
2
|
+
import type { SessionRequestOptions } from '@astrale-os/sdk/client/session';
|
|
2
3
|
import type { QueryAST } from '@astrale-os/sdk/query';
|
|
3
|
-
import type {
|
|
4
|
-
|
|
5
|
-
type
|
|
4
|
+
import type { CallableInputOf, CallableResultOf, MethodOwnerKeyOf, MethodInheritance, ResolvedFunction, ResolvedMethod } from '@astrale-os/sdk/schema';
|
|
5
|
+
type ExecutableInheritance = Exclude<MethodInheritance, 'abstract'>;
|
|
6
|
+
type InstanceMethod = ResolvedMethod<unknown, unknown, false, ExecutableInheritance>;
|
|
7
|
+
type StaticMethod = ResolvedMethod<unknown, unknown, true, ExecutableInheritance>;
|
|
8
|
+
type Callable = ResolvedFunction | InstanceMethod | StaticMethod;
|
|
9
|
+
type MethodReceiver<C extends InstanceMethod> = BoundNodeFor<MethodOwnerKeyOf<C>>;
|
|
6
10
|
declare const QUERY_REFRESH: unique symbol;
|
|
7
11
|
export interface QueryRefresh {
|
|
8
12
|
readonly id: string;
|
|
@@ -26,11 +30,11 @@ export declare function queryRefresh<Input, Query extends QueryAST>(definition:
|
|
|
26
30
|
export type ActionRefresh = 'all' | 'none' | {
|
|
27
31
|
readonly queries: readonly QueryRefresh[];
|
|
28
32
|
};
|
|
29
|
-
export interface ActionOptions extends
|
|
33
|
+
export interface ActionOptions extends SessionRequestOptions {
|
|
30
34
|
readonly refresh?: ActionRefresh;
|
|
31
35
|
readonly onError?: (error: unknown) => void;
|
|
32
36
|
}
|
|
33
|
-
type ActionArgs<C extends Callable> = C extends InstanceMethod ? [receiver:
|
|
37
|
+
type ActionArgs<C extends Callable> = C extends InstanceMethod ? [receiver: MethodReceiver<C>, input: CallableInputOf<C>] : [input: CallableInputOf<C>];
|
|
34
38
|
export interface DomainAction<Args extends unknown[], Result> {
|
|
35
39
|
run(...args: Args): Promise<Result>;
|
|
36
40
|
readonly pending: boolean;
|
|
@@ -39,6 +43,6 @@ export interface DomainAction<Args extends unknown[], Result> {
|
|
|
39
43
|
reset(): void;
|
|
40
44
|
}
|
|
41
45
|
/** Invoke one schema-declared Function or Method and invalidate Store by explicit policy. */
|
|
42
|
-
export declare function useAction<C extends Callable>(callable: C, options?: ActionOptions): DomainAction<ActionArgs<C>,
|
|
46
|
+
export declare function useAction<C extends Callable>(callable: C, options?: ActionOptions): DomainAction<ActionArgs<C>, CallableResultOf<C>>;
|
|
43
47
|
export {};
|
|
44
48
|
//# sourceMappingURL=action.hook.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.hook.d.ts","sourceRoot":"","sources":["../../src/schema/action.hook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"action.hook.d.ts","sourceRoot":"","sources":["../../src/schema/action.hook.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { reference } from '@astrale-os/sdk/client/session';
|
|
1
2
|
import { Path } from '@astrale-os/sdk/graph/path';
|
|
2
3
|
import { useCallback, useMemo, useRef } from 'react';
|
|
4
|
+
import { useSessionKernel } from '../auth/session-kernel.js';
|
|
3
5
|
import { useAction as useAsyncAction } from '../graph/action.js';
|
|
4
6
|
import { useGraphStore } from '../graph/store.js';
|
|
5
7
|
import { bindingFor } from './domain.hook.js';
|
|
@@ -17,6 +19,7 @@ export function queryRefresh(definition, input) {
|
|
|
17
19
|
/** Invoke one schema-declared Function or Method and invalidate Store by explicit policy. */
|
|
18
20
|
export function useAction(callable, options = {}) {
|
|
19
21
|
const binding = bindingFor(callable);
|
|
22
|
+
const kernel = useSessionKernel();
|
|
20
23
|
const store = useGraphStore();
|
|
21
24
|
const callableRef = useRef(callable);
|
|
22
25
|
callableRef.current = callable;
|
|
@@ -29,10 +32,9 @@ export function useAction(callable, options = {}) {
|
|
|
29
32
|
const policy = optionsRef.current;
|
|
30
33
|
const { refresh: _refresh, onError: _onError, ...request } = policy;
|
|
31
34
|
try {
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
: await invokeExact(current, args[0], request);
|
|
35
|
+
const result = isInstanceMethod(current)
|
|
36
|
+
? await kernel.session.invoke(reference(bindingRef.current.domain, current)(receiverPath(args[0])), args[1], request)
|
|
37
|
+
: await kernel.session.invoke(reference(bindingRef.current.domain, current), args[0], request);
|
|
36
38
|
const refresh = policy.refresh ?? 'all';
|
|
37
39
|
if (refresh === 'all')
|
|
38
40
|
store.invalidate();
|
|
@@ -48,7 +50,7 @@ export function useAction(callable, options = {}) {
|
|
|
48
50
|
policy.onError?.(error);
|
|
49
51
|
throw error;
|
|
50
52
|
}
|
|
51
|
-
}, [store]);
|
|
53
|
+
}, [kernel, store]);
|
|
52
54
|
const action = useAsyncAction(invoke);
|
|
53
55
|
return useMemo(() => projectAction(action), [action]);
|
|
54
56
|
}
|
|
@@ -67,6 +69,9 @@ function projectAction(action) {
|
|
|
67
69
|
reset: action.reset,
|
|
68
70
|
};
|
|
69
71
|
}
|
|
72
|
+
function isInstanceMethod(callable) {
|
|
73
|
+
return 'owner' in callable && callable.static === false;
|
|
74
|
+
}
|
|
70
75
|
function receiverPath(receiver) {
|
|
71
|
-
return Path.id(receiver.id)
|
|
76
|
+
return Path.id(receiver.id);
|
|
72
77
|
}
|
|
@@ -67,19 +67,18 @@ export function bindingFor(value) {
|
|
|
67
67
|
return binding;
|
|
68
68
|
}
|
|
69
69
|
function registerBinding(binding) {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
for (const
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
}
|
|
82
|
-
visit(binding, 0);
|
|
70
|
+
bindingByValue.set(binding, binding);
|
|
71
|
+
bindingByValue.set(binding.domain, binding);
|
|
72
|
+
for (const definition of Object.values(binding.domain.classes)) {
|
|
73
|
+
bindingByValue.set(definition, binding);
|
|
74
|
+
for (const method of definition.methods)
|
|
75
|
+
bindingByValue.set(method, binding);
|
|
76
|
+
for (const method of definition.static.methods)
|
|
77
|
+
bindingByValue.set(method, binding);
|
|
78
|
+
}
|
|
79
|
+
for (const callable of Object.values(binding.domain.functions)) {
|
|
80
|
+
bindingByValue.set(callable, binding);
|
|
81
|
+
}
|
|
83
82
|
}
|
|
84
83
|
function createResource(promise) {
|
|
85
84
|
const cell = {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { DomainBinding } from '@astrale-os/shell';
|
|
2
|
-
import { KernelSchema } from '@astrale-os/sdk/schema
|
|
2
|
+
import { KernelSchema } from '@astrale-os/sdk/schema';
|
|
3
3
|
/** The verified, exactly typed Kernel Domain binding. */
|
|
4
4
|
export declare function useKernel(): DomainBinding<typeof KernelSchema>;
|
|
5
5
|
//# sourceMappingURL=kernel.hook.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kernel.hook.d.ts","sourceRoot":"","sources":["../../src/schema/kernel.hook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"kernel.hook.d.ts","sourceRoot":"","sources":["../../src/schema/kernel.hook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAIrD,yDAAyD;AACzD,wBAAgB,SAAS,IAAI,aAAa,CAAC,OAAO,YAAY,CAAC,CAE9D"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Mutation } from '@astrale-os/sdk/mutation';
|
|
2
2
|
import type { DomainAction } from './action.hook.js';
|
|
3
3
|
export interface MutationOptions {
|
|
4
4
|
readonly optimistic?: boolean;
|
|
5
5
|
readonly onError?: (error: unknown) => void;
|
|
6
6
|
}
|
|
7
7
|
/** Execute one named SDK Mutation definition through GraphStore optimism/invalidation. */
|
|
8
|
-
export declare function useMutation<Input, Output>(definition:
|
|
8
|
+
export declare function useMutation<Input, Output>(definition: Mutation<Input, Output>, options?: MutationOptions): DomainAction<[Input], Output>;
|
|
9
9
|
//# sourceMappingURL=mutation.hook.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutation.hook.d.ts","sourceRoot":"","sources":["../../src/schema/mutation.hook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"mutation.hook.d.ts","sourceRoot":"","sources":["../../src/schema/mutation.hook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAMxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAKpD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;CAC5C;AAED,0FAA0F;AAC1F,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EACvC,UAAU,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,EACnC,OAAO,GAAE,eAAoB,GAC5B,YAAY,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CA4B/B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { executeMutation } from '@astrale-os/sdk/mutation';
|
|
2
2
|
import { useCallback, useMemo, useRef } from 'react';
|
|
3
3
|
import { useAction as useAsyncAction } from '../graph/action.js';
|
|
4
4
|
import { useGraphStore } from '../graph/store.js';
|
|
@@ -10,11 +10,12 @@ export function useMutation(definition, options = {}) {
|
|
|
10
10
|
const optionsRef = useRef(options);
|
|
11
11
|
optionsRef.current = options;
|
|
12
12
|
const run = useCallback(async (input) => {
|
|
13
|
-
const execute = bindMutations((ast) => store.mutate(ast, {
|
|
14
|
-
optimistic: optionsRef.current.optimistic ?? true,
|
|
15
|
-
}));
|
|
16
13
|
try {
|
|
17
|
-
return await
|
|
14
|
+
return await executeMutation({
|
|
15
|
+
mutate: (ast) => store.mutate(ast, {
|
|
16
|
+
optimistic: optionsRef.current.optimistic ?? true,
|
|
17
|
+
}),
|
|
18
|
+
}, definitionRef.current, input);
|
|
18
19
|
}
|
|
19
20
|
catch (error) {
|
|
20
21
|
optionsRef.current.onError?.(error);
|
|
@@ -1,16 +1,13 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { BoundNode } from '@astrale-os/sdk/client';
|
|
2
2
|
import type { Node } from '@astrale-os/sdk/graph/node';
|
|
3
3
|
import type { PathLike } from '@astrale-os/sdk/graph/path';
|
|
4
|
+
import type { ResolvedClass } from '@astrale-os/sdk/schema';
|
|
4
5
|
import type { GraphResource } from '../graph/resource.js';
|
|
5
6
|
export interface RichReadOptions {
|
|
6
7
|
readonly pageSize?: number;
|
|
7
8
|
}
|
|
8
|
-
type ObjectDefinition = Pick<Definition<'class' | 'interface'>, 'kind' | 'origin' | 'name' | 'key' | 'schemaRef' | 'definition'> & {
|
|
9
|
-
readonly family: 'node';
|
|
10
|
-
};
|
|
11
9
|
/** Read and bind one exact rich object definition exclusively through GraphStore. */
|
|
12
|
-
export declare function useObject<
|
|
10
|
+
export declare function useObject<Class extends ResolvedClass<'node'>>(definition: Class, target: PathLike | null | undefined, options?: RichReadOptions): GraphResource<BoundNode<Class> | null>;
|
|
13
11
|
/** Explicitly untyped point read for inspectors; it never impersonates `useObject`. */
|
|
14
12
|
export declare function useDynamicObject(target: PathLike | null | undefined, options?: RichReadOptions): GraphResource<Node | null>;
|
|
15
|
-
export {};
|
|
16
13
|
//# sourceMappingURL=object.hook.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.hook.d.ts","sourceRoot":"","sources":["../../src/schema/object.hook.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"object.hook.d.ts","sourceRoot":"","sources":["../../src/schema/object.hook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAEvD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAA;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAM3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAKzD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,qFAAqF;AACrF,wBAAgB,SAAS,CAAC,KAAK,SAAS,aAAa,CAAC,MAAM,CAAC,EAC3D,UAAU,EAAE,KAAK,EACjB,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EACnC,OAAO,GAAE,eAAoB,GAC5B,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CA0BxC;AAED,uFAAuF;AACvF,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EACnC,OAAO,GAAE,eAAoB,GAC5B,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,CAoB5B"}
|
|
@@ -9,8 +9,8 @@ export function useObject(definition, target, options = {}) {
|
|
|
9
9
|
const path = target === null || target === undefined ? null : Path.from(target);
|
|
10
10
|
const query = useMemo(() => path === null
|
|
11
11
|
? null
|
|
12
|
-
: Query.from({
|
|
13
|
-
.filter({
|
|
12
|
+
: Query.from({ nodes: [path], binding: 'object' })
|
|
13
|
+
.filter({ class: definition })
|
|
14
14
|
.select({ kind: 'graph' }), [definition, path?.raw]);
|
|
15
15
|
const project = useCallback((response) => {
|
|
16
16
|
const result = response.result;
|
|
@@ -20,8 +20,7 @@ export function useObject(definition, target, options = {}) {
|
|
|
20
20
|
const node = id === undefined
|
|
21
21
|
? undefined
|
|
22
22
|
: result.graph.nodes.find((candidate) => candidate.id === id);
|
|
23
|
-
|
|
24
|
-
return node === undefined ? null : bind(definition, node);
|
|
23
|
+
return node === undefined ? null : binding.wrapNode(definition, node);
|
|
25
24
|
}, [binding, definition]);
|
|
26
25
|
return useStoreResource(query, options.pageSize ?? 1, project);
|
|
27
26
|
}
|
|
@@ -30,7 +29,7 @@ export function useDynamicObject(target, options = {}) {
|
|
|
30
29
|
const path = target === null || target === undefined ? null : Path.from(target);
|
|
31
30
|
const query = useMemo(() => path === null
|
|
32
31
|
? null
|
|
33
|
-
: Query.from({
|
|
32
|
+
: Query.from({ nodes: [path], binding: 'dynamic_object' }).select({
|
|
34
33
|
kind: 'graph',
|
|
35
34
|
}), [path?.raw]);
|
|
36
35
|
const project = useCallback((response) => {
|
|
@@ -1,19 +1,30 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
1
|
+
import type { BoundNode } from '@astrale-os/sdk/client';
|
|
2
|
+
import type { ResolvedClass } from '@astrale-os/sdk/schema';
|
|
3
3
|
import type { GraphResource } from '../graph/resource.js';
|
|
4
|
-
type DefinitionCoordinates = Pick<Definition<'class' | 'interface'>, 'kind' | 'origin' | 'name' | 'key' | 'schemaRef' | 'definition'>;
|
|
5
|
-
type NodeDefinition = DefinitionCoordinates & {
|
|
6
|
-
readonly family: 'node';
|
|
7
|
-
};
|
|
8
|
-
type EdgeDefinition = DefinitionCoordinates & {
|
|
9
|
-
readonly family: 'edge';
|
|
10
|
-
};
|
|
11
4
|
type EndpointRole = 'source' | 'target';
|
|
5
|
+
type RelationCardinality = '1' | '0..1' | '0..*' | '1..*';
|
|
6
|
+
type DefinitionOf<Relation> = Relation extends ResolvedClass<'edge', infer _Properties, infer _Methods, infer _StaticMethods, infer _SelfProperties, infer _SelfMethods, infer _SelfStaticMethods, infer Definition> ? Definition : never;
|
|
7
|
+
type EndpointsOf<Relation> = DefinitionOf<Relation> extends {
|
|
8
|
+
readonly orientation: 'directed';
|
|
9
|
+
readonly endpoints: infer Endpoints;
|
|
10
|
+
} ? Endpoints : never;
|
|
12
11
|
type Opposite<Role extends EndpointRole> = Role extends 'source' ? 'target' : 'source';
|
|
13
|
-
type
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
type
|
|
12
|
+
type AcceptedAt<Relation, Role extends EndpointRole> = Role extends keyof EndpointsOf<Relation> ? EndpointsOf<Relation>[Role] extends {
|
|
13
|
+
readonly accepts: readonly (infer Accepted)[];
|
|
14
|
+
} ? Accepted : never : never;
|
|
15
|
+
type DeclaredCardinality<Relation, Role extends EndpointRole> = Role extends 'source' ? EndpointsOf<Relation> extends {
|
|
16
|
+
readonly source: {
|
|
17
|
+
readonly outgoing: infer Count;
|
|
18
|
+
};
|
|
19
|
+
} ? Extract<Count, RelationCardinality> : RelationCardinality : EndpointsOf<Relation> extends {
|
|
20
|
+
readonly target: {
|
|
21
|
+
readonly incoming: infer Count;
|
|
22
|
+
};
|
|
23
|
+
} ? Extract<Count, RelationCardinality> : RelationCardinality;
|
|
24
|
+
type CoversOpposite<Relation, Role extends EndpointRole, To extends ResolvedClass<'node'>> = [
|
|
25
|
+
AcceptedAt<Relation, Opposite<Role>>
|
|
26
|
+
] extends [To['ref']] ? true : false;
|
|
27
|
+
type EffectiveCardinality<Relation, Role extends EndpointRole, To extends ResolvedClass<'node'>> = DeclaredCardinality<Relation, Role> extends infer Count extends RelationCardinality ? CoversOpposite<Relation, Role, To> extends true ? Count : Count extends '1' ? '0..1' : Count extends '1..*' ? '0..*' : Count : RelationCardinality;
|
|
17
28
|
export interface RelationUnavailable {
|
|
18
29
|
readonly kind: 'required-hidden-or-invalid';
|
|
19
30
|
readonly cardinality: '1' | '1..*';
|
|
@@ -23,24 +34,23 @@ export declare class RelationUnavailableError extends Error {
|
|
|
23
34
|
readonly code: 'SHELL_REACT_RELATION_UNAVAILABLE';
|
|
24
35
|
constructor(unavailable: RelationUnavailable);
|
|
25
36
|
}
|
|
26
|
-
export type RelationResource<T,
|
|
27
|
-
readonly cardinality:
|
|
37
|
+
export type RelationResource<T, Cardinality extends RelationCardinality> = Cardinality extends '1' | '0..1' ? GraphResource<T | null> & {
|
|
38
|
+
readonly cardinality: Cardinality;
|
|
28
39
|
readonly unavailable?: RelationUnavailable;
|
|
29
40
|
require(): T;
|
|
30
41
|
} : GraphResource<readonly T[]> & {
|
|
31
|
-
readonly cardinality:
|
|
42
|
+
readonly cardinality: Cardinality;
|
|
32
43
|
readonly unavailable?: RelationUnavailable;
|
|
33
44
|
require(): readonly T[];
|
|
34
45
|
};
|
|
35
46
|
export interface RelationOptions<Role extends EndpointRole, To> {
|
|
36
47
|
readonly from: Role;
|
|
37
|
-
/** Exact rich opposite-endpoint definition used to admit and brand returned nodes. */
|
|
38
48
|
readonly to: To;
|
|
39
49
|
readonly page?: {
|
|
40
50
|
readonly size: number;
|
|
41
51
|
};
|
|
42
52
|
}
|
|
43
|
-
/** Traverse one
|
|
44
|
-
export declare function useRelation<
|
|
53
|
+
/** Traverse one directed resolved Edge Class and bind the selected opposite Nodes. */
|
|
54
|
+
export declare function useRelation<Relation extends ResolvedClass<'edge'>, Role extends EndpointRole, To extends ResolvedClass<'node'>, Source extends ResolvedClass<'node'>>(relation: Relation, source: BoundNode<Source> | null | undefined, options: RelationOptions<Role, To>): RelationResource<BoundNode<To>, EffectiveCardinality<Relation, Role, To>>;
|
|
45
55
|
export {};
|
|
46
56
|
//# sourceMappingURL=relation.hook.d.ts.map
|