@synnaxlabs/client 0.57.1 → 0.57.2
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/{client-DDACDVZ-.js → client-BsVW3qAW.js} +3812 -3763
- package/dist/client-BsVW3qAW.js.map +1 -0
- package/dist/client.js +1 -1
- package/dist/src/label/store.d.ts +1 -1
- package/dist/src/label/store.d.ts.map +1 -1
- package/dist/src/ontology/client.d.ts.map +1 -1
- package/dist/src/ontology/store.d.ts +16 -1
- package/dist/src/ontology/store.d.ts.map +1 -1
- package/dist/src/query/external.d.ts +1 -0
- package/dist/src/query/external.d.ts.map +1 -1
- package/dist/src/query/indexes.d.ts +32 -0
- package/dist/src/query/indexes.d.ts.map +1 -0
- package/dist/src/query/table.d.ts +10 -1
- package/dist/src/query/table.d.ts.map +1 -1
- package/dist/src/ranger/client.d.ts +2 -0
- package/dist/src/ranger/client.d.ts.map +1 -1
- package/dist/src/status/client.d.ts.map +1 -1
- package/dist/testutil.js +1 -1
- package/package.json +5 -5
- package/src/label/store.ts +7 -2
- package/src/ontology/client.ts +15 -8
- package/src/ontology/store.ts +27 -5
- package/src/query/external.ts +1 -0
- package/src/query/indexes.ts +81 -0
- package/src/query/table.ts +25 -5
- package/src/ranger/client.ts +26 -16
- package/src/status/client.ts +14 -8
- package/dist/client-DDACDVZ-.js.map +0 -1
package/dist/client.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as ee, A as te, C as ne, D as e, E as t, F as re, H as ie, I as ae, J as oe, K as se, L as ce, M as le, N as ue, O as de, P as fe, Q as pe, R as me, S as he, T as ge, U as _e, X as ve, Y as ye, Z as be, _ as xe, a as Se, b as Ce, c as we, et as Te, f as Ee, g as De, h as Oe, i as ke, j as n, k as r, l as Ae, m as je, n as Me, nt as Ne, o as Pe, p as Fe, q as Ie, r as Le, rt as i, s as Re, t as ze, tt as Be, u as Ve, v as He, w as Ue, x as a, y as We } from "./client-
|
|
1
|
+
import { $ as ee, A as te, C as ne, D as e, E as t, F as re, H as ie, I as ae, J as oe, K as se, L as ce, M as le, N as ue, O as de, P as fe, Q as pe, R as me, S as he, T as ge, U as _e, X as ve, Y as ye, Z as be, _ as xe, a as Se, b as Ce, c as we, et as Te, f as Ee, g as De, h as Oe, i as ke, j as n, k as r, l as Ae, m as je, n as Me, nt as Ne, o as Pe, p as Fe, q as Ie, r as Le, rt as i, s as Re, t as ze, tt as Be, u as Ve, v as He, w as Ue, x as a, y as We } from "./client-BsVW3qAW.js";
|
|
2
2
|
import { z as o } from "zod";
|
|
3
3
|
import { DataType as Ge, Density as Ke, MultiSeries as qe, Rate as Je, Series as Ye, TimeRange as Xe, TimeSpan as Ze, TimeStamp as Qe, id as s, zod as c } from "@synnaxlabs/x";
|
|
4
4
|
//#region src/ethercat/types.gen.ts
|
|
@@ -4,5 +4,5 @@ import { query } from '../query';
|
|
|
4
4
|
/** Reports whether the relationship labels the given ontology ID. */
|
|
5
5
|
export declare const matchLabeledBy: (rel: ontology.Relationship, id: ontology.ID) => boolean;
|
|
6
6
|
/** Returns the cached labels attached to the given ontology ID. */
|
|
7
|
-
export declare const cachedLabelsOf: (
|
|
7
|
+
export declare const cachedLabelsOf: (cache: ontology.Cache, labels: query.Table<Key, Label>, id: ontology.ID) => Label[];
|
|
8
8
|
//# sourceMappingURL=store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/label/store.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,qEAAqE;AACrE,eAAO,MAAM,cAAc,GAAI,KAAK,QAAQ,CAAC,YAAY,EAAE,IAAI,QAAQ,CAAC,EAAE,KAAG,OAIzE,CAAC;AAEL,mEAAmE;AACnE,eAAO,MAAM,cAAc,GACzB,
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/label/store.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,qEAAqE;AACrE,eAAO,MAAM,cAAc,GAAI,KAAK,QAAQ,CAAC,YAAY,EAAE,IAAI,QAAQ,CAAC,EAAE,KAAG,OAIzE,CAAC;AAEL,mEAAmE;AACnE,eAAO,MAAM,cAAc,GACzB,OAAO,QAAQ,CAAC,KAAK,EACrB,QAAQ,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,EAC/B,IAAI,QAAQ,CAAC,EAAE,KACd,KAAK,EAML,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/ontology/client.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAQ,KAAK,UAAU,EAAa,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EACL,KAAK,EAAE,EAQP,KAAK,YAAY,EAIjB,KAAK,QAAQ,EACb,KAAK,YAAY,EAIlB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,KAAK,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/ontology/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,11 +6,26 @@ export declare const RESOURCE_SET_CHANNEL_NAME = "sy_ontology_resource_set";
|
|
|
6
6
|
export declare const RESOURCE_DELETE_CHANNEL_NAME = "sy_ontology_resource_delete";
|
|
7
7
|
export declare const RELATIONSHIP_SET_CHANNEL_NAME = "sy_ontology_relationship_set";
|
|
8
8
|
export declare const RELATIONSHIP_DELETE_CHANNEL_NAME = "sy_ontology_relationship_delete";
|
|
9
|
+
/**
|
|
10
|
+
* The secondary indexes registered on the relationships table, one per endpoint.
|
|
11
|
+
* Type filtering runs at the call site over the matched handful.
|
|
12
|
+
*/
|
|
13
|
+
export interface RelationshipIndexes {
|
|
14
|
+
/** Keyed by the stringified `to` end. */
|
|
15
|
+
byTo: query.LookupIndex<string, Relationship>;
|
|
16
|
+
/** Keyed by the stringified `from` end. */
|
|
17
|
+
byFrom: query.LookupIndex<string, Relationship>;
|
|
18
|
+
}
|
|
9
19
|
/** The ontology record tables: resources and the relationships between them. */
|
|
10
20
|
export declare class Cache {
|
|
11
21
|
readonly relationships: query.Table<string, Relationship>;
|
|
12
22
|
readonly resources: query.Table<string, Resource>;
|
|
13
|
-
|
|
23
|
+
private readonly indexes;
|
|
24
|
+
constructor(relationships: query.Table<string, Relationship>, resources: query.Table<string, Resource>, indexes: RelationshipIndexes);
|
|
25
|
+
/** Returns the cached relationships pointing at the given ID. */
|
|
26
|
+
relationshipsTo(id: ID): Relationship[];
|
|
27
|
+
/** Returns the cached relationships originating at the given ID. */
|
|
28
|
+
relationshipsFrom(id: ID): Relationship[];
|
|
14
29
|
/** Returns the cached parent ID of the given ontology ID, or null if unknown. */
|
|
15
30
|
parentID(id: ID): ID | null;
|
|
16
31
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/ontology/store.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EACL,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/ontology/store.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EACL,KAAK,EAAE,EAIP,KAAK,YAAY,EACjB,KAAK,QAAQ,EACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,oDAAoD;AACpD,eAAO,MAAM,yBAAyB,6BAA6B,CAAC;AACpE,eAAO,MAAM,4BAA4B,gCAAgC,CAAC;AAC1E,eAAO,MAAM,6BAA6B,iCAAiC,CAAC;AAC5E,eAAO,MAAM,gCAAgC,oCAAoC,CAAC;AAElF;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC9C,2CAA2C;IAC3C,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CACjD;AAED,gFAAgF;AAChF,qBAAa,KAAK;IAChB,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC1D,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;gBAG5C,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,EAChD,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,EACxC,OAAO,EAAE,mBAAmB;IAO9B,iEAAiE;IACjE,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,YAAY,EAAE;IAIvC,oEAAoE;IACpE,iBAAiB,CAAC,EAAE,EAAE,EAAE,GAAG,YAAY,EAAE;IAIzC,iFAAiF;IACjF,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;IAO3B;;;OAGG;IACH,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC,UAAU;IAI3D;;;OAGG;IACH,mBAAmB,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,UAAU,CAAC,UAAU;IAO1D;;;OAGG;IACH,eAAe,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,UAAU,CAAC,UAAU;CASvD"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { Cache, type CacheParams, type DerivedConfig, type TableConfig, } from './cache';
|
|
2
2
|
export { Deleted } from './deleted';
|
|
3
3
|
export { type DeriveWatch, deriveWatch } from './derived';
|
|
4
|
+
export { LookupIndex } from './indexes';
|
|
4
5
|
export { type Cached, type ChangeHandler, hash, isLive, requireCorpse, type Retrieves, type SpaceConfig, type Watch, watch, } from './query';
|
|
5
6
|
export { keyListZ, Retriever, type RetrieverParams } from './retriever';
|
|
6
7
|
export { type Listener } from './streamer';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external.d.ts","sourceRoot":"","sources":["../../../src/query/external.ts"],"names":[],"mappings":"AASA,OAAO,EACL,KAAK,EACL,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,WAAW,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,KAAK,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EACL,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,IAAI,EACJ,MAAM,EACN,aAAa,EACb,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,KAAK,EACV,KAAK,GACN,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,KAAK,EACV,KAAK,YAAY,EACjB,aAAa,EACb,KAAK,EACL,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,KAAK,IAAI,EACT,KAAK,YAAY,EACjB,KAAK,MAAM,EACX,KAAK,YAAY,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"external.d.ts","sourceRoot":"","sources":["../../../src/query/external.ts"],"names":[],"mappings":"AASA,OAAO,EACL,KAAK,EACL,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,WAAW,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,KAAK,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACL,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,IAAI,EACJ,MAAM,EACN,aAAa,EACb,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,KAAK,EACV,KAAK,GACN,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,KAAK,EACV,KAAK,YAAY,EACjB,aAAa,EACb,KAAK,EACL,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,KAAK,IAAI,EACT,KAAK,YAAY,EACjB,KAAK,MAAM,EACX,KAAK,YAAY,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { record, state } from '@synnaxlabs/x';
|
|
2
|
+
/**
|
|
3
|
+
* An exact-match secondary index over a table's live entries. `extract` reads one
|
|
4
|
+
* index value from each entry. Register the index on its owning table's `indexes`
|
|
5
|
+
* param; the table keeps it current across every mutation, rollbacks and resets
|
|
6
|
+
* included. Tombstones are never indexed.
|
|
7
|
+
*/
|
|
8
|
+
export declare class LookupIndex<Key extends record.Key = record.Key, Value extends state.State = state.State, IndexValue extends record.Key = record.Key> {
|
|
9
|
+
private readonly extract;
|
|
10
|
+
private readonly buckets;
|
|
11
|
+
private readonly indexed;
|
|
12
|
+
constructor(extract: (value: Value) => IndexValue);
|
|
13
|
+
/** Returns the entries whose extracted index value equals the given value. */
|
|
14
|
+
get(value: IndexValue): Value[];
|
|
15
|
+
/**
|
|
16
|
+
* Records the entry, relocating it when its extracted value changed.
|
|
17
|
+
* Cache-internal surface: called by the owning table, not domain code.
|
|
18
|
+
*/
|
|
19
|
+
set(key: Key, value: Value): void;
|
|
20
|
+
/**
|
|
21
|
+
* Removes any mapping for the given entry key.
|
|
22
|
+
* Cache-internal surface: called by the owning table, not domain code.
|
|
23
|
+
*/
|
|
24
|
+
delete(key: Key): void;
|
|
25
|
+
/**
|
|
26
|
+
* Discards every mapping.
|
|
27
|
+
* Cache-internal surface: called by the owning table, not domain code.
|
|
28
|
+
*/
|
|
29
|
+
reset(): void;
|
|
30
|
+
private unbucket;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=indexes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexes.d.ts","sourceRoot":"","sources":["../../../src/query/indexes.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,eAAe,CAAC;AAExD;;;;;GAKG;AACH,qBAAa,WAAW,CACtB,GAAG,SAAS,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,EACnC,KAAK,SAAS,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,EACvC,UAAU,SAAS,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG;IAE1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0C;IAClE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;gBAE1C,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,UAAU;IAIjD,8EAA8E;IAC9E,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,KAAK,EAAE;IAM/B;;;OAGG;IACH,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAajC;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAOtB;;;OAGG;IACH,KAAK,IAAI,IAAI;IAKb,OAAO,CAAC,QAAQ;CAMjB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CrudeTimeSpan, destructor, record, state } from '@synnaxlabs/x';
|
|
2
2
|
import { default as z } from 'zod';
|
|
3
3
|
import { Deleted } from './deleted';
|
|
4
|
+
import { LookupIndex } from './indexes';
|
|
4
5
|
import { Listener } from './streamer';
|
|
5
6
|
/**
|
|
6
7
|
* Presence of a key in a table: "present" when a live entry exists, "tombstoned"
|
|
@@ -61,6 +62,11 @@ export interface TableParams<Key extends record.Key = record.Key, Value extends
|
|
|
61
62
|
* @default TimeSpan.milliseconds(10)
|
|
62
63
|
*/
|
|
63
64
|
fetchDebounce?: CrudeTimeSpan;
|
|
65
|
+
/**
|
|
66
|
+
* Secondary indexes over the table's live entries. The table keeps each current
|
|
67
|
+
* across every mutation, rollbacks and resets included.
|
|
68
|
+
*/
|
|
69
|
+
indexes?: Array<LookupIndex<Key, Value>>;
|
|
64
70
|
}
|
|
65
71
|
/**
|
|
66
72
|
* The sole owner of one resource's record content and tombstones. Everything else in
|
|
@@ -82,8 +88,11 @@ export declare class Table<Key extends record.Key = record.Key, Value extends st
|
|
|
82
88
|
private readonly fetchEntries?;
|
|
83
89
|
private readonly hydrateMode;
|
|
84
90
|
private readonly fetchBatcher;
|
|
91
|
+
private readonly indexes;
|
|
85
92
|
private gen;
|
|
86
|
-
constructor({ onError, equal, fetch, hydrate, fetchDebounce, }: TableParams<Key, Value>);
|
|
93
|
+
constructor({ onError, equal, fetch, hydrate, fetchDebounce, indexes, }: TableParams<Key, Value>);
|
|
94
|
+
private applySet;
|
|
95
|
+
private applyDelete;
|
|
87
96
|
private setOne;
|
|
88
97
|
/**
|
|
89
98
|
* Sets the value for the given key, or applies a setter to the previous value. A
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/query/table.ts"],"names":[],"mappings":"AASA,OAAO,EAEL,KAAK,aAAa,EAGlB,UAAU,EAEV,KAAK,MAAM,EACX,KAAK,EAGN,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAGzB,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,CAAC;AAE/D,qDAAqD;AACrD,MAAM,MAAM,UAAU,CACpB,GAAG,SAAS,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,EACnC,KAAK,SAAS,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IACrC;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,GAAG,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,GAAG,CAAA;CAAE,CAAC;AAEjF;mEACmE;AACnE,MAAM,WAAW,eAAe,CAC9B,GAAG,SAAS,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,EACnC,KAAK,SAAS,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;IAEvC,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC;CACvC;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe,CAC9B,GAAG,SAAS,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,EACnC,KAAK,SAAS,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;IAEvC,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC;CAC1C;AAED;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,WAAW,CAAC;AAE9C;+CAC+C;AAC/C,MAAM,MAAM,KAAK,CACf,GAAG,SAAS,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,EACnC,KAAK,SAAS,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IACrC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAE9B,kDAAkD;AAClD,MAAM,WAAW,WAAW,CAC1B,GAAG,SAAS,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,EACnC,KAAK,SAAS,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;IAEvC,4EAA4E;IAC5E,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAChC,0EAA0E;IAC1E,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;IAClD;;;;;OAKG;IACH,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3D;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/query/table.ts"],"names":[],"mappings":"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"}
|
|
@@ -234,6 +234,8 @@ export declare class Client extends query.Retriever<typeof retrieveMultiParamsZ,
|
|
|
234
234
|
private composeOne;
|
|
235
235
|
/** Writes a fetched range and its included labels/parent relationships. */
|
|
236
236
|
private writeThrough;
|
|
237
|
+
/** Writes a fetch response as one batch per table, so each table flushes once. */
|
|
238
|
+
private writeThroughMany;
|
|
237
239
|
/**
|
|
238
240
|
* Fetches the given keys with labels and parents included, writing them and
|
|
239
241
|
* their relationships through. Powers the table's fetch primitive.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/ranger/client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/ranger/client.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAEL,KAAK,EACL,KAAK,cAAc,EAEnB,KAAK,UAAU,EAEf,KAAK,MAAM,EACX,SAAS,EAEV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,IAAI,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EACL,KAAK,GAAG,EAER,KAAK,GAAG,EAER,KAAK,OAAO,EAEb,MAAM,oBAAoB,CAAC;AAI5B,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAC/C,eAAO,MAAM,mBAAmB,oBAAoB,CAAC;AAsErD,UAAU,wBAAwB;IAChC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;IAC3B,EAAE,EAAE,QAAQ,CAAC;IACb,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC,gBAAgB,CAAC;IAClC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;IAC1B,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,KAAK;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,gBAAgB,CAAC;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgB;IAC5C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;IAC3C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAkB;IACjD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAGnC,EAAE,IAAI,EAAE,SAA0B,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,EACjF,EACE,WAAW,EACX,EAAE,EACF,OAAO,EACP,QAAQ,EACR,WAAW,EACX,cAAc,EACd,WAAW,GACZ,EAAE,wBAAwB;IAiB7B,IAAI,UAAU,IAAI,QAAQ,CAAC,EAAE,CAE5B;IAED,IAAI,OAAO,IAAI,OAAO,CAYrB;IAEK,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnE,WAAW,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAInD,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;IAIjD,cAAc,IAAI,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAIvC,gBAAgB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAWpC,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAC1C,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAK7C,cAAc,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAIxC,QAAQ,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,WAAW,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM;CAGxC;AAED,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;iBAWpB,CAAC;AAEH,kDAAkD;AAClD,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE/D,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAUqD,CAAC;AAE3E,kFAAkF;AAClF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE7D,yEAAyE;AACzE,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAQgD,CAAC;AA6E3E,iCAAiC;AACjC,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;IACtB,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC,gBAAgB,CAAC;IAClC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC;IAC1B,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,MAAO,SAAQ,KAAK,CAAC,SAAS,CACzC,OAAO,oBAAoB,EAC3B,GAAG,EACH,KAAK,EACL,KAAK,EACL,GAAG,GAAG,IAAI,CACX;IACC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAW;IAChC,sEAAsE;IACtE,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACnD,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IACjD;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC;IAC5D,gFAAgF;IAChF,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0B;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;gBAE3C,GAAG,EAAE,YAAY;IAmGvB,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC;IAClC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAsBvC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAE,KAAK,CAAC,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAe1E,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,IAAI,GAAE,KAAK,CAAC,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IActE,QAAQ,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAClD,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAClD,QAAQ,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;YAO3C,YAAY;IAU1B,4DAA4D;IAC5D,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,UAAU,CAAC,UAAU;IAM7D,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,GAAG,UAAU,CAAC,UAAU;IAM5D,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,cAAc;IAItB,0EAA0E;IAC1E,OAAO,CAAC,UAAU;IAiBlB,2EAA2E;IAC3E,OAAO,CAAC,YAAY;IA8BpB,kFAAkF;IAClF,OAAO,CAAC,gBAAgB;IAUxB;;;OAGG;YACW,YAAY;YAUZ,WAAW;IAUzB;;;OAGG;YACW,yBAAyB;YAazB,YAAY;IAO1B,wEAAwE;IACxE,OAAO,CAAC,cAAc;YAoBR,aAAa;YASb,WAAW;YAQX,OAAO;IAWrB,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,QAAQ;IAI3B,uEAAuE;IACjE,cAAc,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAIvD,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,GAAG,KAAK;IAInD,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAKhE,eAAe,CACnB,KAAK,EAAE,GAAG,EACV,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE,GACtB,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAIjC,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAI7D,QAAQ,CACZ,KAAK,EAAE,GAAG,EACV,OAAO,EAAE,OAAO,CAAC,GAAG,EACpB,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,KAAK,CAAC,YAAiB,GAC5B,OAAO,CAAC,IAAI,CAAC;IAYV,WAAW,CACf,KAAK,EAAE,GAAG,EACV,QAAQ,EAAE,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,EACrC,IAAI,GAAE,KAAK,CAAC,YAAiB,GAC5B,OAAO,CAAC,IAAI,CAAC;IAehB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK;IAYjC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE;IAIvC,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,GAAG,KAAK;CAGpD;AAED,uDAAuD;AACvD,eAAO,MAAM,eAAe,GAAI,KAAK,GAAG,KAAG,QAAQ,CAAC,EAGlD,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,gCAAgC,GAAI,8BAI9C,QAAQ,CAAC,QAAQ,KAAG,OAatB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/status/client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/status/client.ts"],"names":[],"mappings":"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"}
|
package/dist/testutil.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as e, G as t, K as n, V as r, W as i, Z as a, d as o, t as s, z as c } from "./client-
|
|
1
|
+
import { B as e, G as t, K as n, V as r, W as i, Z as a, d as o, t as s, z as c } from "./client-BsVW3qAW.js";
|
|
2
2
|
import { DataType as l, TimeSpan as u, TimeStamp as d, array as f, errors as p, id as m } from "@synnaxlabs/x";
|
|
3
3
|
import { afterAll as h } from "vitest";
|
|
4
4
|
import { connect as g, createServer as _ } from "node:net";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@synnaxlabs/client",
|
|
3
|
-
"version": "0.57.
|
|
3
|
+
"version": "0.57.2",
|
|
4
4
|
"description": "The Synnax Client Library",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"synnax",
|
|
@@ -25,9 +25,9 @@
|
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"immer": "^11.1.15",
|
|
27
27
|
"zod": "^4.4.3",
|
|
28
|
-
"@synnaxlabs/alamos": "^0.57.0",
|
|
29
28
|
"@synnaxlabs/freighter": "^0.57.0",
|
|
30
|
-
"@synnaxlabs/x": "^0.57.1"
|
|
29
|
+
"@synnaxlabs/x": "^0.57.1",
|
|
30
|
+
"@synnaxlabs/alamos": "^0.57.0"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
33
|
"vitest": "^4.1.10"
|
|
@@ -46,8 +46,8 @@
|
|
|
46
46
|
"vitest": "^4.1.10",
|
|
47
47
|
"@synnaxlabs/eslint-config": "^0.0.0",
|
|
48
48
|
"@synnaxlabs/madge": "^0.0.0",
|
|
49
|
-
"@synnaxlabs/
|
|
50
|
-
"@synnaxlabs/
|
|
49
|
+
"@synnaxlabs/tsconfig": "^0.0.0",
|
|
50
|
+
"@synnaxlabs/vite-plugin": "^0.0.0"
|
|
51
51
|
},
|
|
52
52
|
"type": "module",
|
|
53
53
|
"files": [
|
package/src/label/store.ts
CHANGED
|
@@ -21,8 +21,13 @@ export const matchLabeledBy = (rel: ontology.Relationship, id: ontology.ID): boo
|
|
|
21
21
|
|
|
22
22
|
/** Returns the cached labels attached to the given ontology ID. */
|
|
23
23
|
export const cachedLabelsOf = (
|
|
24
|
-
|
|
24
|
+
cache: ontology.Cache,
|
|
25
25
|
labels: query.Table<Key, Label>,
|
|
26
26
|
id: ontology.ID,
|
|
27
27
|
): Label[] =>
|
|
28
|
-
labels.get(
|
|
28
|
+
labels.get(
|
|
29
|
+
cache
|
|
30
|
+
.relationshipsFrom(id)
|
|
31
|
+
.filter((r) => r.type === LABELED_BY_ONTOLOGY_RELATIONSHIP_TYPE)
|
|
32
|
+
.map((r) => r.to.key),
|
|
33
|
+
);
|
package/src/ontology/client.ts
CHANGED
|
@@ -35,6 +35,7 @@ import {
|
|
|
35
35
|
Cache,
|
|
36
36
|
RELATIONSHIP_DELETE_CHANNEL_NAME,
|
|
37
37
|
RELATIONSHIP_SET_CHANNEL_NAME,
|
|
38
|
+
type RelationshipIndexes,
|
|
38
39
|
RESOURCE_DELETE_CHANNEL_NAME,
|
|
39
40
|
RESOURCE_SET_CHANNEL_NAME,
|
|
40
41
|
} from "@/ontology/store";
|
|
@@ -194,10 +195,15 @@ export class Client extends query.Retriever<
|
|
|
194
195
|
|
|
195
196
|
constructor(cfg: ClientConfig) {
|
|
196
197
|
const { unary, cache } = cfg;
|
|
198
|
+
const relationshipIndexes: RelationshipIndexes = {
|
|
199
|
+
byTo: new query.LookupIndex<string, Relationship>((r) => idToString(r.to)),
|
|
200
|
+
byFrom: new query.LookupIndex<string, Relationship>((r) => idToString(r.from)),
|
|
201
|
+
};
|
|
197
202
|
const relationships = cache.createTable<string, Relationship>({
|
|
198
203
|
name: "relationships",
|
|
199
204
|
equal: (a, b) =>
|
|
200
205
|
idsEqual(a.from, b.from) && idsEqual(a.to, b.to) && a.type === b.type,
|
|
206
|
+
indexes: [relationshipIndexes.byTo, relationshipIndexes.byFrom],
|
|
201
207
|
listen: [
|
|
202
208
|
query.createSetListener(RELATIONSHIP_SET_CHANNEL_NAME, relationshipZ, {
|
|
203
209
|
key: (changed) => relationshipToString(changed),
|
|
@@ -244,7 +250,7 @@ export class Client extends query.Retriever<
|
|
|
244
250
|
});
|
|
245
251
|
this.cfg = cfg;
|
|
246
252
|
this.writer = new Writer(unary);
|
|
247
|
-
this.cache = new Cache(relationships, resources);
|
|
253
|
+
this.cache = new Cache(relationships, resources, relationshipIndexes);
|
|
248
254
|
this.children = this.dependentSurface(cache, "children", "to");
|
|
249
255
|
this.parents = this.dependentSurface(cache, "parents", "from");
|
|
250
256
|
}
|
|
@@ -466,13 +472,14 @@ export class Client extends query.Retriever<
|
|
|
466
472
|
): boolean {
|
|
467
473
|
if (q.types != null && !q.types.includes(resource.id.type)) return false;
|
|
468
474
|
const anchor = oppositeRelationshipDirection(direction);
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
(
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
475
|
+
const rels =
|
|
476
|
+
direction === "to"
|
|
477
|
+
? this.cache.relationshipsTo(resource.id)
|
|
478
|
+
: this.cache.relationshipsFrom(resource.id);
|
|
479
|
+
return rels.some(
|
|
480
|
+
(rel) =>
|
|
481
|
+
rel.type === PARENT_OF_RELATIONSHIP_TYPE &&
|
|
482
|
+
q.ids.includes(idToString(rel[anchor])),
|
|
476
483
|
);
|
|
477
484
|
}
|
|
478
485
|
|
package/src/ontology/store.ts
CHANGED
|
@@ -13,7 +13,6 @@ import {
|
|
|
13
13
|
type ID,
|
|
14
14
|
idsEqual,
|
|
15
15
|
idToString,
|
|
16
|
-
matchRelationship,
|
|
17
16
|
PARENT_OF_RELATIONSHIP_TYPE,
|
|
18
17
|
type Relationship,
|
|
19
18
|
type Resource,
|
|
@@ -26,26 +25,49 @@ export const RESOURCE_DELETE_CHANNEL_NAME = "sy_ontology_resource_delete";
|
|
|
26
25
|
export const RELATIONSHIP_SET_CHANNEL_NAME = "sy_ontology_relationship_set";
|
|
27
26
|
export const RELATIONSHIP_DELETE_CHANNEL_NAME = "sy_ontology_relationship_delete";
|
|
28
27
|
|
|
28
|
+
/**
|
|
29
|
+
* The secondary indexes registered on the relationships table, one per endpoint.
|
|
30
|
+
* Type filtering runs at the call site over the matched handful.
|
|
31
|
+
*/
|
|
32
|
+
export interface RelationshipIndexes {
|
|
33
|
+
/** Keyed by the stringified `to` end. */
|
|
34
|
+
byTo: query.LookupIndex<string, Relationship>;
|
|
35
|
+
/** Keyed by the stringified `from` end. */
|
|
36
|
+
byFrom: query.LookupIndex<string, Relationship>;
|
|
37
|
+
}
|
|
38
|
+
|
|
29
39
|
/** The ontology record tables: resources and the relationships between them. */
|
|
30
40
|
export class Cache {
|
|
31
41
|
readonly relationships: query.Table<string, Relationship>;
|
|
32
42
|
readonly resources: query.Table<string, Resource>;
|
|
43
|
+
private readonly indexes: RelationshipIndexes;
|
|
33
44
|
|
|
34
45
|
constructor(
|
|
35
46
|
relationships: query.Table<string, Relationship>,
|
|
36
47
|
resources: query.Table<string, Resource>,
|
|
48
|
+
indexes: RelationshipIndexes,
|
|
37
49
|
) {
|
|
38
50
|
this.relationships = relationships;
|
|
39
51
|
this.resources = resources;
|
|
52
|
+
this.indexes = indexes;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/** Returns the cached relationships pointing at the given ID. */
|
|
56
|
+
relationshipsTo(id: ID): Relationship[] {
|
|
57
|
+
return this.indexes.byTo.get(idToString(id));
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/** Returns the cached relationships originating at the given ID. */
|
|
61
|
+
relationshipsFrom(id: ID): Relationship[] {
|
|
62
|
+
return this.indexes.byFrom.get(idToString(id));
|
|
40
63
|
}
|
|
41
64
|
|
|
42
65
|
/** Returns the cached parent ID of the given ontology ID, or null if unknown. */
|
|
43
66
|
parentID(id: ID): ID | null {
|
|
44
|
-
const
|
|
45
|
-
|
|
67
|
+
const rel = this.relationshipsTo(id).find(
|
|
68
|
+
(r) => r.type === PARENT_OF_RELATIONSHIP_TYPE,
|
|
46
69
|
);
|
|
47
|
-
|
|
48
|
-
return res[0].from;
|
|
70
|
+
return rel?.from ?? null;
|
|
49
71
|
}
|
|
50
72
|
|
|
51
73
|
/**
|
package/src/query/external.ts
CHANGED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
// Copyright 2026 Synnax Labs, Inc.
|
|
2
|
+
//
|
|
3
|
+
// Use of this software is governed by the Business Source License included in the file
|
|
4
|
+
// licenses/BSL.txt.
|
|
5
|
+
//
|
|
6
|
+
// As of the Change Date specified in that file, in accordance with the Business Source
|
|
7
|
+
// License, use of this software will be governed by the Apache License, Version 2.0,
|
|
8
|
+
// included in the file licenses/APL.txt.
|
|
9
|
+
|
|
10
|
+
import { type record, type state } from "@synnaxlabs/x";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* An exact-match secondary index over a table's live entries. `extract` reads one
|
|
14
|
+
* index value from each entry. Register the index on its owning table's `indexes`
|
|
15
|
+
* param; the table keeps it current across every mutation, rollbacks and resets
|
|
16
|
+
* included. Tombstones are never indexed.
|
|
17
|
+
*/
|
|
18
|
+
export class LookupIndex<
|
|
19
|
+
Key extends record.Key = record.Key,
|
|
20
|
+
Value extends state.State = state.State,
|
|
21
|
+
IndexValue extends record.Key = record.Key,
|
|
22
|
+
> {
|
|
23
|
+
private readonly extract: (value: Value) => IndexValue;
|
|
24
|
+
private readonly buckets = new Map<IndexValue, Map<Key, Value>>();
|
|
25
|
+
private readonly indexed = new Map<Key, IndexValue>();
|
|
26
|
+
|
|
27
|
+
constructor(extract: (value: Value) => IndexValue) {
|
|
28
|
+
this.extract = extract;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/** Returns the entries whose extracted index value equals the given value. */
|
|
32
|
+
get(value: IndexValue): Value[] {
|
|
33
|
+
const bucket = this.buckets.get(value);
|
|
34
|
+
if (bucket == null) return [];
|
|
35
|
+
return Array.from(bucket.values());
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Records the entry, relocating it when its extracted value changed.
|
|
40
|
+
* Cache-internal surface: called by the owning table, not domain code.
|
|
41
|
+
*/
|
|
42
|
+
set(key: Key, value: Value): void {
|
|
43
|
+
const next = this.extract(value);
|
|
44
|
+
const prev = this.indexed.get(key);
|
|
45
|
+
if (prev !== undefined && prev !== next) this.unbucket(prev, key);
|
|
46
|
+
let bucket = this.buckets.get(next);
|
|
47
|
+
if (bucket == null) {
|
|
48
|
+
bucket = new Map();
|
|
49
|
+
this.buckets.set(next, bucket);
|
|
50
|
+
}
|
|
51
|
+
bucket.set(key, value);
|
|
52
|
+
this.indexed.set(key, next);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Removes any mapping for the given entry key.
|
|
57
|
+
* Cache-internal surface: called by the owning table, not domain code.
|
|
58
|
+
*/
|
|
59
|
+
delete(key: Key): void {
|
|
60
|
+
const prev = this.indexed.get(key);
|
|
61
|
+
if (prev === undefined) return;
|
|
62
|
+
this.unbucket(prev, key);
|
|
63
|
+
this.indexed.delete(key);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Discards every mapping.
|
|
68
|
+
* Cache-internal surface: called by the owning table, not domain code.
|
|
69
|
+
*/
|
|
70
|
+
reset(): void {
|
|
71
|
+
this.buckets.clear();
|
|
72
|
+
this.indexed.clear();
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
private unbucket(value: IndexValue, key: Key): void {
|
|
76
|
+
const bucket = this.buckets.get(value);
|
|
77
|
+
if (bucket == null) return;
|
|
78
|
+
bucket.delete(key);
|
|
79
|
+
if (bucket.size === 0) this.buckets.delete(value);
|
|
80
|
+
}
|
|
81
|
+
}
|
package/src/query/table.ts
CHANGED
|
@@ -23,6 +23,7 @@ import type z from "zod";
|
|
|
23
23
|
|
|
24
24
|
import { NotFoundError } from "@/errors";
|
|
25
25
|
import { Deleted } from "@/query/deleted";
|
|
26
|
+
import { type LookupIndex } from "@/query/indexes";
|
|
26
27
|
import { type Listener } from "@/query/streamer";
|
|
27
28
|
|
|
28
29
|
/**
|
|
@@ -98,6 +99,11 @@ export interface TableParams<
|
|
|
98
99
|
* @default TimeSpan.milliseconds(10)
|
|
99
100
|
*/
|
|
100
101
|
fetchDebounce?: CrudeTimeSpan;
|
|
102
|
+
/**
|
|
103
|
+
* Secondary indexes over the table's live entries. The table keeps each current
|
|
104
|
+
* across every mutation, rollbacks and resets included.
|
|
105
|
+
*/
|
|
106
|
+
indexes?: Array<LookupIndex<Key, Value>>;
|
|
101
107
|
}
|
|
102
108
|
|
|
103
109
|
/**
|
|
@@ -156,6 +162,7 @@ export class Table<
|
|
|
156
162
|
Key[],
|
|
157
163
|
Array<Keyed<Key, Value>>
|
|
158
164
|
> | null;
|
|
165
|
+
private readonly indexes: Array<LookupIndex<Key, Value>>;
|
|
159
166
|
private gen = 0;
|
|
160
167
|
|
|
161
168
|
constructor({
|
|
@@ -164,11 +171,13 @@ export class Table<
|
|
|
164
171
|
fetch,
|
|
165
172
|
hydrate = "set",
|
|
166
173
|
fetchDebounce = DEFAULT_FETCH_DEBOUNCE,
|
|
174
|
+
indexes = [],
|
|
167
175
|
}: TableParams<Key, Value>) {
|
|
168
176
|
this.onError = onError;
|
|
169
177
|
this.equal = equal;
|
|
170
178
|
this.fetchEntries = fetch;
|
|
171
179
|
this.hydrateMode = hydrate;
|
|
180
|
+
this.indexes = indexes;
|
|
172
181
|
this.fetchBatcher =
|
|
173
182
|
fetch == null
|
|
174
183
|
? null
|
|
@@ -188,6 +197,16 @@ export class Table<
|
|
|
188
197
|
});
|
|
189
198
|
}
|
|
190
199
|
|
|
200
|
+
private applySet(key: Key, value: Value): void {
|
|
201
|
+
this.entries.set(key, value);
|
|
202
|
+
for (const index of this.indexes) index.set(key, value);
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
private applyDelete(key: Key): void {
|
|
206
|
+
this.entries.delete(key);
|
|
207
|
+
for (const index of this.indexes) index.delete(key);
|
|
208
|
+
}
|
|
209
|
+
|
|
191
210
|
private setOne(
|
|
192
211
|
key: Key,
|
|
193
212
|
value: state.SetArg<Value | undefined>,
|
|
@@ -197,16 +216,16 @@ export class Table<
|
|
|
197
216
|
if (next == null || (prev != null && this.equal(next, prev, key))) return undefined;
|
|
198
217
|
const prevTombstone = this.tombstones.get(key);
|
|
199
218
|
this.tombstones.delete(key);
|
|
200
|
-
this.
|
|
219
|
+
this.applySet(key, next);
|
|
201
220
|
this.notify({ variant: "set", key, value: next });
|
|
202
221
|
|
|
203
222
|
return () => {
|
|
204
223
|
if (prev === undefined) {
|
|
205
|
-
this.
|
|
224
|
+
this.applyDelete(key);
|
|
206
225
|
if (prevTombstone != null) this.tombstones.set(key, prevTombstone);
|
|
207
226
|
this.notify({ variant: "delete", key });
|
|
208
227
|
} else {
|
|
209
|
-
this.
|
|
228
|
+
this.applySet(key, prev);
|
|
210
229
|
this.notify({ variant: "set", key, value: prev });
|
|
211
230
|
}
|
|
212
231
|
};
|
|
@@ -375,7 +394,7 @@ export class Table<
|
|
|
375
394
|
|
|
376
395
|
this.batch(() =>
|
|
377
396
|
toDelete.forEach(({ key: k, value }) => {
|
|
378
|
-
this.
|
|
397
|
+
this.applyDelete(k);
|
|
379
398
|
if (tombstone && value != null)
|
|
380
399
|
this.tombstones.set(k, new Deleted(value, TimeStamp.now()));
|
|
381
400
|
this.notify({ variant: "delete", key: k });
|
|
@@ -387,7 +406,7 @@ export class Table<
|
|
|
387
406
|
toDelete.forEach(({ key: k, value }) => {
|
|
388
407
|
if (value == null) return;
|
|
389
408
|
this.tombstones.delete(k);
|
|
390
|
-
this.
|
|
409
|
+
this.applySet(k, value);
|
|
391
410
|
this.notify({ variant: "set", key: k, value });
|
|
392
411
|
}),
|
|
393
412
|
);
|
|
@@ -426,6 +445,7 @@ export class Table<
|
|
|
426
445
|
this.gen++;
|
|
427
446
|
this.entries.clear();
|
|
428
447
|
this.tombstones.clear();
|
|
448
|
+
for (const index of this.indexes) index.reset();
|
|
429
449
|
}
|
|
430
450
|
|
|
431
451
|
/**
|