@astrale-os/kernel-core 0.4.2 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth/audience/verify-audience.d.ts.map +1 -1
- package/dist/auth/audience/verify-audience.js +6 -2
- package/dist/auth/audience/verify-audience.js.map +1 -1
- package/dist/auth/issuers/ids.d.ts +14 -0
- package/dist/auth/issuers/ids.d.ts.map +1 -1
- package/dist/auth/issuers/ids.js +21 -0
- package/dist/auth/issuers/ids.js.map +1 -1
- package/dist/auth/methods/jwt/jwt.method.d.ts +1 -1
- package/dist/auth/methods/jwt/jwt.method.d.ts.map +1 -1
- package/dist/auth/methods/jwt/jwt.method.js +25 -3
- package/dist/auth/methods/jwt/jwt.method.js.map +1 -1
- package/dist/domain/addressing/paths/class.d.ts +1 -0
- package/dist/domain/addressing/paths/class.d.ts.map +1 -1
- package/dist/domain/addressing/paths/class.js +8 -4
- package/dist/domain/addressing/paths/class.js.map +1 -1
- package/dist/domain/addressing/paths/domain.d.ts +1 -0
- package/dist/domain/addressing/paths/domain.d.ts.map +1 -1
- package/dist/domain/addressing/paths/domain.js +8 -4
- package/dist/domain/addressing/paths/domain.js.map +1 -1
- package/dist/domain/addressing/paths/index.d.ts +1 -0
- package/dist/domain/addressing/paths/index.d.ts.map +1 -1
- package/dist/domain/addressing/paths/index.js +1 -0
- package/dist/domain/addressing/paths/index.js.map +1 -1
- package/dist/domain/addressing/paths/interface.d.ts +1 -0
- package/dist/domain/addressing/paths/interface.d.ts.map +1 -1
- package/dist/domain/addressing/paths/interface.js +8 -4
- package/dist/domain/addressing/paths/interface.js.map +1 -1
- package/dist/domain/addressing/paths/method.d.ts +1 -0
- package/dist/domain/addressing/paths/method.d.ts.map +1 -1
- package/dist/domain/addressing/paths/method.js +8 -4
- package/dist/domain/addressing/paths/method.js.map +1 -1
- package/dist/domain/addressing/paths/parse.d.ts +12 -0
- package/dist/domain/addressing/paths/parse.d.ts.map +1 -0
- package/dist/domain/addressing/paths/parse.js +47 -0
- package/dist/domain/addressing/paths/parse.js.map +1 -0
- package/dist/domain/identity/resolve-callables.d.ts.map +1 -1
- package/dist/domain/identity/resolve-callables.js +10 -4
- package/dist/domain/identity/resolve-callables.js.map +1 -1
- package/dist/domain/index.d.ts +2 -2
- package/dist/domain/index.d.ts.map +1 -1
- package/dist/domain/index.js +2 -2
- package/dist/domain/index.js.map +1 -1
- package/dist/domain/install-bundle.d.ts +3 -3
- package/dist/domain/install-bundle.d.ts.map +1 -1
- package/dist/domain/install-bundle.js +108 -8
- package/dist/domain/install-bundle.js.map +1 -1
- package/dist/domain/origin.d.ts +23 -1
- package/dist/domain/origin.d.ts.map +1 -1
- package/dist/domain/origin.js +50 -3
- package/dist/domain/origin.js.map +1 -1
- package/dist/graph/graph/root.d.ts +0 -11
- package/dist/graph/graph/root.d.ts.map +1 -1
- package/dist/graph/graph/root.js +1 -1
- package/dist/graph/graph/root.js.map +1 -1
- package/dist/graph/graph/walker.d.ts +0 -13
- package/dist/graph/graph/walker.d.ts.map +1 -1
- package/dist/graph/graph/walker.js +2 -2
- package/dist/graph/graph/walker.js.map +1 -1
- package/dist/graph/nav/path/kinds/registry.d.ts +1 -0
- package/dist/graph/nav/path/kinds/registry.d.ts.map +1 -1
- package/dist/graph/nav/path/kinds/registry.js +17 -14
- package/dist/graph/nav/path/kinds/registry.js.map +1 -1
- package/dist/graph/sync/reconcile/resolve.d.ts +0 -1
- package/dist/graph/sync/reconcile/resolve.d.ts.map +1 -1
- package/dist/graph/sync/reconcile/resolve.js +2 -2
- package/dist/graph/sync/reconcile/resolve.js.map +1 -1
- package/dist/schema/interfaces/generics/Sluggable.interface.d.ts.map +1 -1
- package/dist/schema/interfaces/generics/Sluggable.interface.js +3 -2
- package/dist/schema/interfaces/generics/Sluggable.interface.js.map +1 -1
- package/package.json +2 -2
|
@@ -42,12 +42,18 @@ export function resolveCallables(compiled) {
|
|
|
42
42
|
continue;
|
|
43
43
|
}
|
|
44
44
|
// ── Auto-materialized core function nodes (RemoteFunction / View) ──
|
|
45
|
-
// Detected by the `Function
|
|
46
|
-
// `
|
|
47
|
-
// entries
|
|
45
|
+
// Detected by the materialized CLASS (`View` / `Function` — what the node
|
|
46
|
+
// IS), with the `Function.binding` prop as a fallback for hand-authored
|
|
47
|
+
// core entries. The class is present from define time, so a structure-only
|
|
48
|
+
// compile (no serving url yet → no bindings stamped) resolves the same
|
|
49
|
+
// callable set as the url-materialized one. Folders and other
|
|
50
|
+
// non-callable core entries match neither and skip naturally.
|
|
48
51
|
if (ref.namespace === 'core') {
|
|
49
52
|
const entry = compiled.$.core?.entries[ref.segments.join('.')];
|
|
50
|
-
if (!entry
|
|
53
|
+
if (!entry)
|
|
54
|
+
continue;
|
|
55
|
+
const isCallableClass = entry.className === 'View' || entry.className === 'Function';
|
|
56
|
+
if (!isCallableClass && !(functionBindingKey in entry.data))
|
|
51
57
|
continue;
|
|
52
58
|
const slug = absolute.basename();
|
|
53
59
|
if (!slug)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-callables.js","sourceRoot":"","sources":["../../../domain/identity/resolve-callables.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAA;AACjD,OAAO,EAAE,CAAC,EAAE,MAAM,SAAS,CAAA;AAqB3B;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAwB;IACvD,MAAM,GAAG,GAAuB,EAAE,CAAA;IAClC,MAAM,kBAAkB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,GAAG,CAAA;IAExD,KAAK,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3E,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAE7B,mEAAmE;QACnE,mEAAmE;QACnE,oEAAoE;QACpE,sEAAsE;QACtE,gEAAgE;QAChE,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjB,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,KAAM,CAAC,CAAA;YACzD,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,UAAU;gBAAE,SAAQ;YAChD,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;YACpE,SAAQ;QACV,CAAC;QAED,sEAAsE;QACtE,
|
|
1
|
+
{"version":3,"file":"resolve-callables.js","sourceRoot":"","sources":["../../../domain/identity/resolve-callables.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAA;AACjD,OAAO,EAAE,CAAC,EAAE,MAAM,SAAS,CAAA;AAqB3B;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAwB;IACvD,MAAM,GAAG,GAAuB,EAAE,CAAA;IAClC,MAAM,kBAAkB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,GAAG,CAAA;IAExD,KAAK,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3E,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAE7B,mEAAmE;QACnE,mEAAmE;QACnE,oEAAoE;QACpE,sEAAsE;QACtE,gEAAgE;QAChE,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjB,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,KAAM,CAAC,CAAA;YACzD,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,UAAU;gBAAE,SAAQ;YAChD,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;YACpE,SAAQ;QACV,CAAC;QAED,sEAAsE;QACtE,0EAA0E;QAC1E,wEAAwE;QACxE,2EAA2E;QAC3E,uEAAuE;QACvE,8DAA8D;QAC9D,8DAA8D;QAC9D,IAAI,GAAG,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;YAC9D,IAAI,CAAC,KAAK;gBAAE,SAAQ;YACpB,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS,KAAK,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,UAAU,CAAA;YACpF,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC,kBAAkB,IAAI,KAAK,CAAC,IAAI,CAAC;gBAAE,SAAQ;YACrE,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAA;YAChC,IAAI,CAAC,IAAI;gBAAE,SAAQ;YACnB,GAAG,CAAC,IAAI,CAAC;gBACP,GAAG,EAAE,MAAM;gBACX,GAAG,EAAE,QAAQ,CAAC,GAAG;gBACjB,QAAQ;gBACR,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,IAAI;aACL,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAwB;IAC1D,OAAO,gBAAgB,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AACrD,CAAC"}
|
package/dist/domain/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { DomainOrigin, DOMAIN_ORIGIN_RE, domainOriginSchema } from './origin';
|
|
1
|
+
export { DomainOrigin, DOMAIN_ORIGIN_RE, domainOriginSchema, extractDomainSlug } from './origin';
|
|
2
2
|
export type { DomainInstallRequest, InstallDomainBundle, InstallDomainGraph, InstallDomainParams, } from './install-bundle';
|
|
3
3
|
export { domainInstallRequestSchema, hashInstallGraph, installDomainBundleSchema, installDomainParamsSchema, } from './install-bundle';
|
|
4
4
|
export { DomainError } from './errors';
|
|
@@ -13,7 +13,7 @@ export type { Layout, LayoutMap } from './addressing/layout';
|
|
|
13
13
|
export { DomainPaths, defaultLayout, mergeLayout } from './addressing/layout';
|
|
14
14
|
export { LayoutError } from './addressing/layout';
|
|
15
15
|
export { validateOverrides, validateNoDuplicatePaths } from './addressing/layout';
|
|
16
|
-
export { DomainPath, ClassPath, InterfacePath, MethodPath, InstanceMethodPath, } from './addressing/paths';
|
|
16
|
+
export { DomainPath, ClassPath, InterfacePath, MethodPath, InstanceMethodPath, parseKernelMetaPath, tryParseKernelMetaPath, } from './addressing/paths';
|
|
17
17
|
export { PathParseError } from './addressing/paths';
|
|
18
18
|
export { INSTALLED_IN, OF_DOMAIN, METHOD_OF, INSTANCE_OF, DOMAIN_SEP, INSTANCE_SEP, SLUG_PROPERTY, } from './addressing/paths';
|
|
19
19
|
export { domainPathSchema, classPathSchema, interfacePathSchema, methodPathSchema, instanceMethodPathSchema, } from './addressing/paths';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../domain/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../domain/index.ts"],"names":[],"mappings":"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"}
|
package/dist/domain/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// ── Domain Origin ──────────────────────────────────────────────────
|
|
2
|
-
export { DomainOrigin, DOMAIN_ORIGIN_RE, domainOriginSchema } from './origin';
|
|
2
|
+
export { DomainOrigin, DOMAIN_ORIGIN_RE, domainOriginSchema, extractDomainSlug } from './origin';
|
|
3
3
|
export { domainInstallRequestSchema, hashInstallGraph, installDomainBundleSchema, installDomainParamsSchema, } from './install-bundle';
|
|
4
4
|
// ── Errors ─────────────────────────────────────────────────────────
|
|
5
5
|
export { DomainError } from './errors';
|
|
@@ -13,7 +13,7 @@ export { DomainPaths, defaultLayout, mergeLayout } from './addressing/layout';
|
|
|
13
13
|
export { LayoutError } from './addressing/layout';
|
|
14
14
|
export { validateOverrides, validateNoDuplicatePaths } from './addressing/layout';
|
|
15
15
|
// ── Paths (typed domain path classes) ─────────────────────────────
|
|
16
|
-
export { DomainPath, ClassPath, InterfacePath, MethodPath, InstanceMethodPath, } from './addressing/paths';
|
|
16
|
+
export { DomainPath, ClassPath, InterfacePath, MethodPath, InstanceMethodPath, parseKernelMetaPath, tryParseKernelMetaPath, } from './addressing/paths';
|
|
17
17
|
export { PathParseError } from './addressing/paths';
|
|
18
18
|
export { INSTALLED_IN, OF_DOMAIN, METHOD_OF, INSTANCE_OF, DOMAIN_SEP, INSTANCE_SEP, SLUG_PROPERTY, } from './addressing/paths';
|
|
19
19
|
export { domainPathSchema, classPathSchema, interfacePathSchema, methodPathSchema, instanceMethodPathSchema, } from './addressing/paths';
|
package/dist/domain/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../domain/index.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../domain/index.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAOhG,OAAO,EACL,0BAA0B,EAC1B,gBAAgB,EAChB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,kBAAkB,CAAA;AAEzB,sEAAsE;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAQvD,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAIxE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAEjF,qEAAqE;AACrE,OAAO,EACL,UAAU,EACV,SAAS,EACT,aAAa,EACb,UAAU,EACV,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EACL,YAAY,EACZ,SAAS,EACT,SAAS,EACT,WAAW,EACX,UAAU,EACV,YAAY,EACZ,aAAa,GACd,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,oBAAoB,CAAA;AAqB3B,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,WAAW,EACX,cAAc,EACd,uBAAuB,EACvB,YAAY,EACZ,gBAAgB,EAChB,SAAS,GACV,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,6BAA6B,CAAA;AAIpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAShE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAQ7F,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AACpF,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAE1F,yEAAyE;AACzE,OAAO,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAKjF,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAmBlG,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,mBAAmB,CAAA;AAU1B,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACjD,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,yBAAyB,CAAA;AAIhC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAY3D,OAAO,EACL,cAAc,EACd,aAAa,EACb,WAAW,EACX,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,wBAAwB,CAAA;AAI/B,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC/E,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAI1E,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import type { PublicKey } from '#auth';
|
|
3
1
|
import type { WireGraph } from '#graph';
|
|
2
|
+
import { z } from 'zod';
|
|
4
3
|
export declare const domainInstallRequestSchema: z.ZodObject<{
|
|
5
4
|
kernelIssuer: z.ZodString;
|
|
6
5
|
nonce: z.ZodString;
|
|
@@ -33,8 +32,9 @@ export declare const installDomainBundleSchema: z.ZodObject<{
|
|
|
33
32
|
}, z.core.$strip>;
|
|
34
33
|
identity: z.ZodObject<{
|
|
35
34
|
credential: z.ZodString;
|
|
36
|
-
publicKey: z.ZodCustom<PublicKey, PublicKey>;
|
|
37
35
|
}, z.core.$strip>;
|
|
36
|
+
postInstall: z.ZodOptional<z.ZodString>;
|
|
37
|
+
requires: z.ZodOptional<z.ZodArray<z.ZodCustom<import("./origin").DomainOrigin, import("./origin").DomainOrigin>>>;
|
|
38
38
|
}, z.core.$strip>;
|
|
39
39
|
export type DomainInstallRequest = z.infer<typeof domainInstallRequestSchema>;
|
|
40
40
|
export type InstallDomainParams = z.infer<typeof installDomainParamsSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-bundle.d.ts","sourceRoot":"","sources":["../../domain/install-bundle.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"install-bundle.d.ts","sourceRoot":"","sources":["../../domain/install-bundle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAIvC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAMvB,eAAO,MAAM,0BAA0B;;;iBAGrC,CAAA;AAEF,eAAO,MAAM,yBAAyB;;;iBAGpC,CAAA;AAEF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAUpC,CAAA;AAEF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAC7E,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAC3E,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAC3E,MAAM,MAAM,kBAAkB,GAAG,SAAS,CAAA;AAE1C,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAKjF"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { toEdgeKey } from '#graph';
|
|
2
2
|
import { graphSchema } from '#graph/zod';
|
|
3
|
+
import { z } from 'zod';
|
|
3
4
|
import { domainOriginSchema } from './origin';
|
|
4
5
|
const HASH_ALGORITHM = 'sha256';
|
|
5
6
|
export const domainInstallRequestSchema = z.object({
|
|
@@ -14,20 +15,119 @@ export const installDomainBundleSchema = z.object({
|
|
|
14
15
|
origin: domainOriginSchema,
|
|
15
16
|
graph: graphSchema,
|
|
16
17
|
identity: z.object({
|
|
18
|
+
// The kernel verifies the credential against the issuer's JWKS (OIDC
|
|
19
|
+
// discovery on the URL it fetched the domain at) — no embedded key.
|
|
17
20
|
credential: z.string().min(1),
|
|
18
|
-
publicKey: z.custom(),
|
|
19
21
|
}),
|
|
22
|
+
postInstall: z.string().min(1).startsWith('/').optional(),
|
|
23
|
+
requires: z.array(domainOriginSchema).optional(),
|
|
20
24
|
});
|
|
21
25
|
export async function hashInstallGraph(graph) {
|
|
22
|
-
const canonical = canonicalJson(
|
|
23
|
-
nodes: graph.nodes,
|
|
24
|
-
edges: graph.edges,
|
|
25
|
-
aliases: graph.aliases ?? [],
|
|
26
|
-
});
|
|
26
|
+
const canonical = canonicalJson(canonicalizeInstallGraph(graph));
|
|
27
27
|
const bytes = new TextEncoder().encode(canonical);
|
|
28
|
-
const digest = await
|
|
28
|
+
const digest = await crypto.subtle.digest('SHA-256', bytes);
|
|
29
29
|
return `${HASH_ALGORITHM}:${hex(new Uint8Array(digest))}`;
|
|
30
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Reduce an install wire graph to its id-INDEPENDENT content shape, so the hash
|
|
33
|
+
* is a true schema-content hash rather than a per-build fingerprint.
|
|
34
|
+
*
|
|
35
|
+
* Node/edge `id`s are random UUIDs minted fresh on every build — they are not
|
|
36
|
+
* semantic, so two builds of the same schema would otherwise hash differently.
|
|
37
|
+
* We keep only content:
|
|
38
|
+
* - node → `{ class, path, props }` (drop `id`, storage-only `__labels`)
|
|
39
|
+
* - edge → `{ class, source, target, slug?, props }` (drop `id`, `__labels`, `__type`)
|
|
40
|
+
* - alias → `{ node: <node path>, alias: <typed path raw> }` (id remapped to
|
|
41
|
+
* the node's path — aliases drive typed-form path resolution after install,
|
|
42
|
+
* so they ARE semantic and must be sealed by the hash; only their id
|
|
43
|
+
* *encoding* is build-dependent)
|
|
44
|
+
*
|
|
45
|
+
* Edge endpoints are already paths (`edgeToWire` emits `source`/`target` as
|
|
46
|
+
* path raws), so only aliases need id remapping. Nodes are sorted by `path`,
|
|
47
|
+
* edges by their `(class, source, slug?, target)` identity, aliases by
|
|
48
|
+
* `(node, alias)`, so wire order is irrelevant.
|
|
49
|
+
*
|
|
50
|
+
* Throws if two nodes share a `path` (an absolute path uniquely identifies a
|
|
51
|
+
* node) or if an alias references an id with no corresponding node — either
|
|
52
|
+
* means the graph is malformed.
|
|
53
|
+
*/
|
|
54
|
+
function canonicalizeInstallGraph(graph) {
|
|
55
|
+
const seenPath = new Set();
|
|
56
|
+
const idToPath = new Map();
|
|
57
|
+
const nodes = graph.nodes
|
|
58
|
+
.map((n) => {
|
|
59
|
+
const r = asRecord(n, 'node');
|
|
60
|
+
const path = asString(r.path, 'node.path');
|
|
61
|
+
if (seenPath.has(path)) {
|
|
62
|
+
throw new Error(`hashInstallGraph: duplicate node path ${JSON.stringify(path)} — malformed install graph`);
|
|
63
|
+
}
|
|
64
|
+
seenPath.add(path);
|
|
65
|
+
if (typeof r.id === 'string')
|
|
66
|
+
idToPath.set(r.id, path);
|
|
67
|
+
return { class: r.class, path, props: r.props };
|
|
68
|
+
})
|
|
69
|
+
.sort((a, b) => (a.path < b.path ? -1 : a.path > b.path ? 1 : 0));
|
|
70
|
+
const edges = graph.edges
|
|
71
|
+
.map((e) => {
|
|
72
|
+
const r = asRecord(e, 'edge');
|
|
73
|
+
const out = {
|
|
74
|
+
class: r.class,
|
|
75
|
+
source: r.source,
|
|
76
|
+
target: r.target,
|
|
77
|
+
props: r.props,
|
|
78
|
+
};
|
|
79
|
+
if (r.slug !== undefined)
|
|
80
|
+
out.slug = r.slug;
|
|
81
|
+
return out;
|
|
82
|
+
})
|
|
83
|
+
.sort((a, b) => {
|
|
84
|
+
const ka = edgeIdentityKey(a);
|
|
85
|
+
const kb = edgeIdentityKey(b);
|
|
86
|
+
return ka < kb ? -1 : ka > kb ? 1 : 0;
|
|
87
|
+
});
|
|
88
|
+
if (graph.aliases === undefined || graph.aliases.length === 0)
|
|
89
|
+
return { nodes, edges };
|
|
90
|
+
const aliases = graph.aliases
|
|
91
|
+
.map((entry) => {
|
|
92
|
+
const [id, aliasRaw] = entry;
|
|
93
|
+
const nodePath = idToPath.get(String(id));
|
|
94
|
+
if (nodePath === undefined) {
|
|
95
|
+
throw new Error(`hashInstallGraph: alias references unknown node id ${JSON.stringify(id)} — ` +
|
|
96
|
+
`malformed install graph`);
|
|
97
|
+
}
|
|
98
|
+
return { node: nodePath, alias: asString(aliasRaw, 'alias.path') };
|
|
99
|
+
})
|
|
100
|
+
.sort((a, b) => a.node < b.node
|
|
101
|
+
? -1
|
|
102
|
+
: a.node > b.node
|
|
103
|
+
? 1
|
|
104
|
+
: a.alias < b.alias
|
|
105
|
+
? -1
|
|
106
|
+
: a.alias > b.alias
|
|
107
|
+
? 1
|
|
108
|
+
: 0);
|
|
109
|
+
return { nodes, edges, aliases };
|
|
110
|
+
}
|
|
111
|
+
function edgeIdentityKey(e) {
|
|
112
|
+
return toEdgeKey({
|
|
113
|
+
class: { raw: asString(e.class, 'edge.class') },
|
|
114
|
+
source: { raw: asString(e.source, 'edge.source') },
|
|
115
|
+
slug: typeof e.slug === 'string' ? e.slug : undefined,
|
|
116
|
+
target: { raw: asString(e.target, 'edge.target') },
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
function asRecord(value, what) {
|
|
120
|
+
if (value === null || typeof value !== 'object' || Array.isArray(value)) {
|
|
121
|
+
throw new Error(`hashInstallGraph: ${what} is not an object`);
|
|
122
|
+
}
|
|
123
|
+
return value;
|
|
124
|
+
}
|
|
125
|
+
function asString(value, what) {
|
|
126
|
+
if (typeof value !== 'string') {
|
|
127
|
+
throw new Error(`hashInstallGraph: ${what} must be a string`);
|
|
128
|
+
}
|
|
129
|
+
return value;
|
|
130
|
+
}
|
|
31
131
|
function canonicalJson(value) {
|
|
32
132
|
if (value === null || typeof value !== 'object')
|
|
33
133
|
return JSON.stringify(value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-bundle.js","sourceRoot":"","sources":["../../domain/install-bundle.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"install-bundle.js","sourceRoot":"","sources":["../../domain/install-bundle.ts"],"names":[],"mappings":"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"}
|
package/dist/domain/origin.d.ts
CHANGED
|
@@ -13,6 +13,28 @@ export type DomainOrigin = string & {
|
|
|
13
13
|
};
|
|
14
14
|
export declare const DOMAIN_ORIGIN_RE: RegExp;
|
|
15
15
|
export declare const domainOriginSchema: z.ZodCustom<DomainOrigin, DomainOrigin>;
|
|
16
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* Branded constructor. Lowercases at the boundary (a domain origin is an
|
|
18
|
+
* FQDN-like slug — case-insensitive and canonically lowercase, like DNS), then
|
|
19
|
+
* validates. This keeps the rest of the system comparing one canonical form
|
|
20
|
+
* instead of failing when a schema declares a mixed-case domain. Throws
|
|
21
|
+
* TypeError if the (lowercased) value still violates `DOMAIN_ORIGIN_RE`.
|
|
22
|
+
*/
|
|
17
23
|
export declare function DomainOrigin(raw: string): DomainOrigin;
|
|
24
|
+
/**
|
|
25
|
+
* Extract the domain slug from a semantic domain-path-family string:
|
|
26
|
+
*
|
|
27
|
+
* `/apps/:dist.localhost:class.X:init` → `dist.localhost`
|
|
28
|
+
* `/:dist.localhost:interface.Ops:init` → `dist.localhost`
|
|
29
|
+
*
|
|
30
|
+
* The slug is the audience a remote worker expects on inbound credentials, so
|
|
31
|
+
* getting it wrong mints a credential the worker rejects.
|
|
32
|
+
*
|
|
33
|
+
* This deliberately does not infer origins from AbsolutePath strings. A tree
|
|
34
|
+
* path is structural, not semantic: `/apps/crm.acme.dev/...` cannot tell us
|
|
35
|
+
* from the string alone whether `crm.acme.dev` is a domain origin, an app slug,
|
|
36
|
+
* or just another child. Returns `null` for absolute / relative / id-anchored /
|
|
37
|
+
* malformed input.
|
|
38
|
+
*/
|
|
39
|
+
export declare function extractDomainSlug(path: string): string | null;
|
|
18
40
|
//# sourceMappingURL=origin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"origin.d.ts","sourceRoot":"","sources":["../../domain/origin.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"origin.d.ts","sourceRoot":"","sources":["../../domain/origin.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAA;AAUnB;;;;;;;;GAQG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAA;CAAE,CAAA;AAErE,eAAO,MAAM,gBAAgB,QAA2B,CAAA;AAExD,eAAO,MAAM,kBAAkB,yCAE9B,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAMtD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiB7D"}
|
package/dist/domain/origin.js
CHANGED
|
@@ -1,11 +1,58 @@
|
|
|
1
1
|
import z from 'zod';
|
|
2
|
+
import { ClassPath, DomainPath, InterfacePath, MethodPath, tryParseKernelMetaPath, } from './addressing/paths';
|
|
2
3
|
export const DOMAIN_ORIGIN_RE = /^[a-z0-9][a-z0-9._-]*$/;
|
|
3
4
|
export const domainOriginSchema = z.custom((val) => typeof val === 'string' && DOMAIN_ORIGIN_RE.test(val));
|
|
4
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* Branded constructor. Lowercases at the boundary (a domain origin is an
|
|
7
|
+
* FQDN-like slug — case-insensitive and canonically lowercase, like DNS), then
|
|
8
|
+
* validates. This keeps the rest of the system comparing one canonical form
|
|
9
|
+
* instead of failing when a schema declares a mixed-case domain. Throws
|
|
10
|
+
* TypeError if the (lowercased) value still violates `DOMAIN_ORIGIN_RE`.
|
|
11
|
+
*/
|
|
5
12
|
export function DomainOrigin(raw) {
|
|
6
|
-
|
|
13
|
+
const normalized = raw.toLowerCase();
|
|
14
|
+
if (!DOMAIN_ORIGIN_RE.test(normalized)) {
|
|
7
15
|
throw new TypeError(`Invalid domain origin: "${raw}"`);
|
|
8
16
|
}
|
|
9
|
-
return
|
|
17
|
+
return normalized;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Extract the domain slug from a semantic domain-path-family string:
|
|
21
|
+
*
|
|
22
|
+
* `/apps/:dist.localhost:class.X:init` → `dist.localhost`
|
|
23
|
+
* `/:dist.localhost:interface.Ops:init` → `dist.localhost`
|
|
24
|
+
*
|
|
25
|
+
* The slug is the audience a remote worker expects on inbound credentials, so
|
|
26
|
+
* getting it wrong mints a credential the worker rejects.
|
|
27
|
+
*
|
|
28
|
+
* This deliberately does not infer origins from AbsolutePath strings. A tree
|
|
29
|
+
* path is structural, not semantic: `/apps/crm.acme.dev/...` cannot tell us
|
|
30
|
+
* from the string alone whether `crm.acme.dev` is a domain origin, an app slug,
|
|
31
|
+
* or just another child. Returns `null` for absolute / relative / id-anchored /
|
|
32
|
+
* malformed input.
|
|
33
|
+
*/
|
|
34
|
+
export function extractDomainSlug(path) {
|
|
35
|
+
if (!path.startsWith('/'))
|
|
36
|
+
return null;
|
|
37
|
+
if (/\s/.test(path))
|
|
38
|
+
return null;
|
|
39
|
+
const parsed = tryParseKernelMetaPath(path);
|
|
40
|
+
if (!parsed)
|
|
41
|
+
return null;
|
|
42
|
+
if (parsed instanceof DomainPath ||
|
|
43
|
+
parsed instanceof ClassPath ||
|
|
44
|
+
parsed instanceof InterfacePath ||
|
|
45
|
+
parsed instanceof MethodPath) {
|
|
46
|
+
return normalizeDomain(parsed.domain);
|
|
47
|
+
}
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
function normalizeDomain(raw) {
|
|
51
|
+
try {
|
|
52
|
+
return DomainOrigin(raw);
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
10
57
|
}
|
|
11
58
|
//# sourceMappingURL=origin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"origin.js","sourceRoot":"","sources":["../../domain/origin.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"origin.js","sourceRoot":"","sources":["../../domain/origin.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAA;AAEnB,OAAO,EACL,SAAS,EACT,UAAU,EACV,aAAa,EACb,UAAU,EACV,sBAAsB,GACvB,MAAM,oBAAoB,CAAA;AAa3B,MAAM,CAAC,MAAM,gBAAgB,GAAG,wBAAwB,CAAA;AAExD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CACxC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAC/D,CAAA;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;IACpC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,SAAS,CAAC,2BAA2B,GAAG,GAAG,CAAC,CAAA;IACxD,CAAC;IACD,OAAO,UAA0B,CAAA;AACnC,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IACtC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAEhC,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAA;IAC3C,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IAExB,IACE,MAAM,YAAY,UAAU;QAC5B,MAAM,YAAY,SAAS;QAC3B,MAAM,YAAY,aAAa;QAC/B,MAAM,YAAY,UAAU,EAC5B,CAAC;QACD,OAAO,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACvC,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,GAAG,CAAC,CAAA;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC"}
|
|
@@ -7,17 +7,6 @@ import type { Node } from '../node';
|
|
|
7
7
|
* sufficient — no real node mints that id.
|
|
8
8
|
*/
|
|
9
9
|
export declare function isVirtualRoot(n: Node): boolean;
|
|
10
|
-
/**
|
|
11
|
-
* Factory for the virtual root node (I1). The `class` field
|
|
12
|
-
* structurally needs a `ClassPath`-shaped value; the kernel's real
|
|
13
|
-
* `K.Root.path.class` isn't reachable from here (importing it cycles
|
|
14
|
-
* through `#kernel → #domain → #graph`). Reusing `AbsolutePath.root()`
|
|
15
|
-
* is the honest structural placeholder: it's a real `Path` instance
|
|
16
|
-
* with `raw === '/'`, it round-trips cleanly, and consumers that
|
|
17
|
-
* discriminate the virtual root do so by `isVirtualRoot` (id), never
|
|
18
|
-
* by class identity.
|
|
19
|
-
*/
|
|
20
|
-
export declare function makeVirtualRoot(): Node;
|
|
21
10
|
/**
|
|
22
11
|
* Collapse duplicate virtual roots (auto-injected `__SYSTEM__` at `/`)
|
|
23
12
|
* that appear when merging graphs. A caller-supplied real root wins
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../../../graph/graph/root.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAKnC;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,GAAG,OAAO,CAE9C;
|
|
1
|
+
{"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../../../graph/graph/root.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAKnC;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,GAAG,OAAO,CAE9C;AAqBD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,SAAS,IAAI,EAAE,CAsB1E;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG;IAAE,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAezF"}
|
package/dist/graph/graph/root.js
CHANGED
|
@@ -21,7 +21,7 @@ export function isVirtualRoot(n) {
|
|
|
21
21
|
* discriminate the virtual root do so by `isVirtualRoot` (id), never
|
|
22
22
|
* by class identity.
|
|
23
23
|
*/
|
|
24
|
-
|
|
24
|
+
function makeVirtualRoot() {
|
|
25
25
|
return {
|
|
26
26
|
id: __SYSTEM__,
|
|
27
27
|
class: AbsolutePath.root(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"root.js","sourceRoot":"","sources":["../../../graph/graph/root.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAIjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAEzD;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,CAAO;IACnC,OAAO,CAAC,CAAC,EAAE,KAAK,UAAU,CAAA;AAC5B,CAAC;AAED;;;;;;;;;GASG;AACH,
|
|
1
|
+
{"version":3,"file":"root.js","sourceRoot":"","sources":["../../../graph/graph/root.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAIjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAEzD;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,CAAO;IACnC,OAAO,CAAC,CAAC,EAAE,KAAK,UAAU,CAAA;AAC5B,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,eAAe;IACtB,OAAO;QACL,EAAE,EAAE,UAAU;QACd,KAAK,EAAE,YAAY,CAAC,IAAI,EAA0B;QAClD,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;QACzB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;KACzB,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAsB;IACvD,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG;YAAE,SAAQ;QAChC,OAAO,EAAE,CAAA;QACT,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YAAE,OAAO,GAAG,IAAI,CAAA;IACvC,CAAC;IACD,IAAI,OAAO,IAAI,CAAC;QAAE,OAAO,KAAK,CAAA;IAE9B,IAAI,WAAW,GAAG,KAAK,CAAA;IACvB,MAAM,GAAG,GAAW,EAAE,CAAA;IACtB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACX,SAAQ;QACV,CAAC;QACD,IAAI,OAAO,IAAI,WAAW;YAAE,SAAQ;QACpC,WAAW,GAAG,IAAI,CAAA;QAClB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACb,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,IAAI,IAAsB,CAAA;IAC1B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG;YAAE,SAAQ;QAChC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,IAAI,oBAAoB,CAAC;gBAC7B,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAK,EAAa,EAAE;aACjE,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,GAAG,CAAC,CAAA;IACV,CAAC;IACD,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;IAE9C,MAAM,WAAW,GAAG,eAAe,EAAE,CAAA;IACrC,OAAO,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;AAC9D,CAAC"}
|
|
@@ -54,13 +54,6 @@ export interface WalkContext {
|
|
|
54
54
|
* `nodes.get` / `nodes.at`.
|
|
55
55
|
*/
|
|
56
56
|
export declare function walkSteps(steps: readonly Step[], start: Node, ctx: WalkContext): WalkResult;
|
|
57
|
-
/**
|
|
58
|
-
* Advance one step from a node. Returns the next Node (in-graph
|
|
59
|
-
* endpoint) or the endpoint Path (typed endpoint — next iteration
|
|
60
|
-
* decides escape or miss). Uses the raw index map directly; never
|
|
61
|
-
* calls `Graph.nodes.get` / `nodes.at` (I5 / T2).
|
|
62
|
-
*/
|
|
63
|
-
export declare function traverseStep(from: Node, step: Step, ctx: WalkContext): Node | Path | null;
|
|
64
57
|
/**
|
|
65
58
|
* The unique edge at `from` that satisfies `step`. Raises
|
|
66
59
|
* `AmbiguousWalkError` on multi-match (I6).
|
|
@@ -71,10 +64,4 @@ export declare function edgeIncident(from: Node, step: Traversal, ctx: WalkConte
|
|
|
71
64
|
* role. Used by reverse-walk candidate enumeration in the resolver.
|
|
72
65
|
*/
|
|
73
66
|
export declare function edgesByStep(step: Traversal, ctx: WalkContext): readonly Edge[];
|
|
74
|
-
/**
|
|
75
|
-
* Distinguish Node from Path at runtime. Nodes have `class`, `path`,
|
|
76
|
-
* `props`; Paths have `steps`. Negating `'steps' in x` narrows the
|
|
77
|
-
* union.
|
|
78
|
-
*/
|
|
79
|
-
export declare function isNode(x: Node | Path): x is Node;
|
|
80
67
|
//# sourceMappingURL=walker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walker.d.ts","sourceRoot":"","sources":["../../../graph/graph/walker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAMlC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAKrD;;;;;;;;;GASG;AACH,MAAM,MAAM,UAAU,GAClB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;CAAE,GAC9C;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAA;CAAE,GACpD;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAE7B;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC5C,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC9C,QAAQ,CAAC,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE,CAAC,CAAA;IAC/D,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAA;CACrC;AAID;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,GAAG,UAAU,CAa3F;
|
|
1
|
+
{"version":3,"file":"walker.d.ts","sourceRoot":"","sources":["../../../graph/graph/walker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAMlC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAKrD;;;;;;;;;GASG;AACH,MAAM,MAAM,UAAU,GAClB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;CAAE,GAC9C;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAA;CAAE,GACpD;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAE7B;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC5C,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC9C,QAAQ,CAAC,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE,CAAC,CAAA;IAC/D,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAA;CACrC;AAID;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,GAAG,UAAU,CAa3F;AAqBD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAWvF;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,SAAS,IAAI,EAAE,CAQ9E"}
|
|
@@ -37,7 +37,7 @@ export function walkSteps(steps, start, ctx) {
|
|
|
37
37
|
* decides escape or miss). Uses the raw index map directly; never
|
|
38
38
|
* calls `Graph.nodes.get` / `nodes.at` (I5 / T2).
|
|
39
39
|
*/
|
|
40
|
-
|
|
40
|
+
function traverseStep(from, step, ctx) {
|
|
41
41
|
if (step.kind === 'anchor') {
|
|
42
42
|
// RootAnchor (target = __SYSTEM__) resolves to the graph's root
|
|
43
43
|
// node. Other id anchors look up the node by id.
|
|
@@ -120,7 +120,7 @@ function matchEscape(endpoint, remaining) {
|
|
|
120
120
|
* `props`; Paths have `steps`. Negating `'steps' in x` narrows the
|
|
121
121
|
* union.
|
|
122
122
|
*/
|
|
123
|
-
|
|
123
|
+
function isNode(x) {
|
|
124
124
|
return !('steps' in x);
|
|
125
125
|
}
|
|
126
126
|
//# sourceMappingURL=walker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walker.js","sourceRoot":"","sources":["../../../graph/graph/walker.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAMvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAkC7C,MAAM,WAAW,GAAoB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AAEtD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,SAAS,CAAC,KAAsB,EAAE,KAAW,EAAE,GAAgB;IAC7E,IAAI,OAAO,GAAgB,KAAK,CAAA;IAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YACrB,OAAO,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAC7C,CAAC;QACD,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAE,EAAE,GAAG,CAAC,CAAA;QAClD,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;QAC1C,OAAO,GAAG,IAAI,CAAA;IAChB,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;AAC9F,CAAC;AAED;;;;;GAKG;AACH,
|
|
1
|
+
{"version":3,"file":"walker.js","sourceRoot":"","sources":["../../../graph/graph/walker.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,4 +48,5 @@ export declare class PathTypeRegistry {
|
|
|
48
48
|
/** Reset registry state. For testing only. */
|
|
49
49
|
static _reset(): void;
|
|
50
50
|
}
|
|
51
|
+
export declare function detectPathType(types: readonly PathType[], steps: readonly Step[]): PathType | undefined;
|
|
51
52
|
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../../graph/nav/path/kinds/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAI3C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAiB;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAA8B;IAE9D,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAYpC;IAED,MAAM,CAAC,GAAG,IAAI,SAAS,QAAQ,EAAE,CAEhC;IAED;;;OAGG;IACH,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAE3C;IAED;;;;;OAKG;IACH,MAAM,CAAC,UAAU,IAAI,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAEjD;IAED;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,QAAQ,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../../graph/nav/path/kinds/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAI3C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAiB;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAA8B;IAE9D,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAYpC;IAED,MAAM,CAAC,GAAG,IAAI,SAAS,QAAQ,EAAE,CAEhC;IAED;;;OAGG;IACH,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAE3C;IAED;;;;;OAKG;IACH,MAAM,CAAC,UAAU,IAAI,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAEjD;IAED;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,QAAQ,GAAG,SAAS,CAE1D;IAED,8CAA8C;IAC9C,MAAM,CAAC,MAAM,IAAI,IAAI,CAGpB;CACF;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,QAAQ,EAAE,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,GACrB,QAAQ,GAAG,SAAS,CActB"}
|
|
@@ -61,20 +61,7 @@ export class PathTypeRegistry {
|
|
|
61
61
|
* step list in the base {@link Path} class as a fallback.
|
|
62
62
|
*/
|
|
63
63
|
static detect(steps) {
|
|
64
|
-
|
|
65
|
-
let bestSpan = -1;
|
|
66
|
-
for (let i = PathTypeRegistry._types.length - 1; i >= 0; i--) {
|
|
67
|
-
const t = PathTypeRegistry._types[i];
|
|
68
|
-
const matched = (t.matches ?? ((s) => matchesChain(t.segments, s)))(steps);
|
|
69
|
-
if (!matched)
|
|
70
|
-
continue;
|
|
71
|
-
const span = chainSpan(t.segments, steps);
|
|
72
|
-
if (span > bestSpan) {
|
|
73
|
-
best = t;
|
|
74
|
-
bestSpan = span;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
return best;
|
|
64
|
+
return detectPathType(PathTypeRegistry._types, steps);
|
|
78
65
|
}
|
|
79
66
|
/** Reset registry state. For testing only. */
|
|
80
67
|
static _reset() {
|
|
@@ -82,4 +69,20 @@ export class PathTypeRegistry {
|
|
|
82
69
|
PathTypeRegistry._byClass.clear();
|
|
83
70
|
}
|
|
84
71
|
}
|
|
72
|
+
export function detectPathType(types, steps) {
|
|
73
|
+
let best;
|
|
74
|
+
let bestSpan = -1;
|
|
75
|
+
for (let i = types.length - 1; i >= 0; i--) {
|
|
76
|
+
const t = types[i];
|
|
77
|
+
const matched = (t.matches ?? ((s) => matchesChain(t.segments, s)))(steps);
|
|
78
|
+
if (!matched)
|
|
79
|
+
continue;
|
|
80
|
+
const span = chainSpan(t.segments, steps);
|
|
81
|
+
if (span > bestSpan) {
|
|
82
|
+
best = t;
|
|
83
|
+
bestSpan = span;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return best;
|
|
87
|
+
}
|
|
85
88
|
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../../graph/nav/path/kinds/registry.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEjD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAO,gBAAgB;IACnB,MAAM,CAAU,MAAM,GAAe,EAAE,CAAA;IACvC,MAAM,CAAU,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAA;IAE9D,MAAM,CAAC,QAAQ,CAAC,IAAc;QAC5B,IAAI,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAM;QAClD,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC1D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CACb,qCAAqC,IAAI,CAAC,KAAK,qCAAqC,QAAQ,CAAC,IAAI,uBAAuB,IAAI,CAAC,IAAI,2DAA2D,CAC7L,CAAA;YACH,CAAC;YACD,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QACjD,CAAC;QACD,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACpC,CAAC;IAED,MAAM,CAAC,GAAG;QACR,OAAO,gBAAgB,CAAC,MAAM,CAAA;IAChC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,OAAO,CAAC,GAAW;QACxB,OAAO,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAA;IACnD,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,UAAU;QACf,OAAO,gBAAgB,CAAC,QAAQ,CAAA;IAClC,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAAC,KAAsB;QAClC,IAAI,IAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../../graph/nav/path/kinds/registry.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEjD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAO,gBAAgB;IACnB,MAAM,CAAU,MAAM,GAAe,EAAE,CAAA;IACvC,MAAM,CAAU,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAA;IAE9D,MAAM,CAAC,QAAQ,CAAC,IAAc;QAC5B,IAAI,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAM;QAClD,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC1D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CACb,qCAAqC,IAAI,CAAC,KAAK,qCAAqC,QAAQ,CAAC,IAAI,uBAAuB,IAAI,CAAC,IAAI,2DAA2D,CAC7L,CAAA;YACH,CAAC;YACD,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QACjD,CAAC;QACD,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACpC,CAAC;IAED,MAAM,CAAC,GAAG;QACR,OAAO,gBAAgB,CAAC,MAAM,CAAA;IAChC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,OAAO,CAAC,GAAW;QACxB,OAAO,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAA;IACnD,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,UAAU;QACf,OAAO,gBAAgB,CAAC,QAAQ,CAAA;IAClC,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAAC,KAAsB;QAClC,OAAO,cAAc,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IACvD,CAAC;IAED,8CAA8C;IAC9C,MAAM,CAAC,MAAM;QACX,gBAAgB,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;QAClC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;IACnC,CAAC;CACF;AAED,MAAM,UAAU,cAAc,CAC5B,KAA0B,EAC1B,KAAsB;IAEtB,IAAI,IAA0B,CAAA;IAC9B,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAA;IACjB,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAE,CAAA;QACnB,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;QAC1E,IAAI,CAAC,OAAO;YAAE,SAAQ;QACtB,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;QACzC,IAAI,IAAI,GAAG,QAAQ,EAAE,CAAC;YACpB,IAAI,GAAG,CAAC,CAAA;YACR,QAAQ,GAAG,IAAI,CAAA;QACjB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
|
|
@@ -3,7 +3,6 @@ import type { EdgeCreate, EdgeDelete, EdgeUpdate, NodeDelete, NodeUpdate } from
|
|
|
3
3
|
import type { ConflictStrategy } from '#ids';
|
|
4
4
|
import type { ReconcileConfig } from './config';
|
|
5
5
|
import type { UntrackedPolicy } from './untracked';
|
|
6
|
-
export declare function resolveStrategy(entityStrategy: ConflictStrategy | undefined, config?: ReconcileConfig): ConflictStrategy;
|
|
7
6
|
export declare function resolveUntrackedNode(base: Node, policy: UntrackedPolicy | undefined): NodeDelete | null;
|
|
8
7
|
export declare function resolveUntrackedEdge(base: Edge, policy: UntrackedPolicy | undefined): EdgeDelete | null;
|
|
9
8
|
export declare function resolveMatchedNode(base: Node, incoming: NodeSpec, conflictStrategy: ConflictStrategy | undefined, config?: ReconcileConfig): NodeUpdate | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../../graph/sync/reconcile/resolve.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../../graph/sync/reconcile/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAA;AAK5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAelD,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,eAAe,GAAG,SAAS,GAClC,UAAU,GAAG,IAAI,CASnB;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,eAAe,GAAG,SAAS,GAClC,UAAU,GAAG,IAAI,CAcnB;AAID,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,gBAAgB,GAAG,SAAS,EAC9C,MAAM,CAAC,EAAE,eAAe,GACvB,UAAU,GAAG,IAAI,CAkBnB;AAID,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,gBAAgB,GAAG,SAAS,EAC9C,MAAM,CAAC,EAAE,eAAe,GACvB;IAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IAAC,OAAO,EAAE,UAAU,EAAE,CAAC;IAAC,OAAO,EAAE,UAAU,EAAE,CAAA;CAAE,GAAG,IAAI,CA+DhF"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { dequal } from 'dequal';
|
|
2
1
|
import { IdPath } from '#graph/nav/path';
|
|
2
|
+
import { dequal } from 'dequal';
|
|
3
3
|
import { resolveProps } from './resolve-props';
|
|
4
4
|
// ─── Strategy resolution ──────────────────────────────────
|
|
5
|
-
|
|
5
|
+
function resolveStrategy(entityStrategy, config) {
|
|
6
6
|
return entityStrategy ?? config?.defaultStrategy ?? 'merge';
|
|
7
7
|
}
|
|
8
8
|
// ─── Untracked entity resolution ──────────────────────────
|