@dxos/index-core 0.0.0 → 0.8.4-main.03d5cd7b56
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/lib/neutral/index.mjs +790 -0
- package/dist/lib/neutral/index.mjs.map +7 -0
- package/dist/lib/neutral/meta.json +1 -0
- package/dist/types/src/index-engine.d.ts +112 -0
- package/dist/types/src/index-engine.d.ts.map +1 -0
- package/dist/types/src/index-engine.test.d.ts +2 -0
- package/dist/types/src/index-engine.test.d.ts.map +1 -0
- package/dist/types/src/index-tracker.d.ts +44 -0
- package/dist/types/src/index-tracker.d.ts.map +1 -0
- package/dist/types/src/index-tracker.test.d.ts +2 -0
- package/dist/types/src/index-tracker.test.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +8 -0
- package/dist/types/src/index.d.ts.map +1 -0
- package/dist/types/src/indexes/fts-index.d.ts +64 -0
- package/dist/types/src/indexes/fts-index.d.ts.map +1 -0
- package/dist/types/src/indexes/fts-index.test.d.ts +2 -0
- package/dist/types/src/indexes/fts-index.test.d.ts.map +1 -0
- package/dist/types/src/indexes/fts5.test.d.ts +2 -0
- package/dist/types/src/indexes/fts5.test.d.ts.map +1 -0
- package/dist/types/src/indexes/index.d.ts +5 -0
- package/dist/types/src/indexes/index.d.ts.map +1 -0
- package/dist/types/src/indexes/interface.d.ts +56 -0
- package/dist/types/src/indexes/interface.d.ts.map +1 -0
- package/dist/types/src/indexes/object-meta-index.d.ts +94 -0
- package/dist/types/src/indexes/object-meta-index.d.ts.map +1 -0
- package/dist/types/src/indexes/object-meta-index.test.d.ts +2 -0
- package/dist/types/src/indexes/object-meta-index.test.d.ts.map +1 -0
- package/dist/types/src/indexes/reverse-ref-index.d.ts +37 -0
- package/dist/types/src/indexes/reverse-ref-index.d.ts.map +1 -0
- package/dist/types/src/indexes/reverse-ref-index.test.d.ts +2 -0
- package/dist/types/src/indexes/reverse-ref-index.test.d.ts.map +1 -0
- package/dist/types/src/utils.d.ts +17 -0
- package/dist/types/src/utils.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -0
- package/package.json +22 -18
- package/src/index-engine.test.ts +172 -9
- package/src/index-engine.ts +161 -29
- package/src/index-tracker.ts +9 -0
- package/src/index.ts +10 -3
- package/src/indexes/fts-index.test.ts +153 -3
- package/src/indexes/fts-index.ts +66 -10
- package/src/indexes/interface.ts +10 -0
- package/src/indexes/object-meta-index.test.ts +361 -3
- package/src/indexes/object-meta-index.ts +304 -17
- package/src/indexes/reverse-ref-index.test.ts +16 -2
- package/src/indexes/reverse-ref-index.ts +0 -1
- package/src/utils.ts +1 -1
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import * as SqlClient from '@effect/sql/SqlClient';
|
|
2
|
+
import type * as SqlError from '@effect/sql/SqlError';
|
|
3
|
+
import * as Effect from 'effect/Effect';
|
|
4
|
+
import * as Schema from 'effect/Schema';
|
|
5
|
+
import { type ObjectId, type SpaceId } from '@dxos/keys';
|
|
6
|
+
import type { IndexerObject } from './interface';
|
|
7
|
+
import type { Index } from './interface';
|
|
8
|
+
export declare const ObjectMeta: Schema.Struct<{
|
|
9
|
+
recordId: typeof Schema.Number;
|
|
10
|
+
objectId: typeof Schema.String;
|
|
11
|
+
queueId: typeof Schema.String;
|
|
12
|
+
/** Queue subspace namespace (e.g. 'data', 'trace'). Empty string for non-queue objects. */
|
|
13
|
+
queueNamespace: typeof Schema.String;
|
|
14
|
+
spaceId: typeof Schema.String;
|
|
15
|
+
documentId: typeof Schema.String;
|
|
16
|
+
entityKind: typeof Schema.String;
|
|
17
|
+
/** The versioned DXN of the type of the object. */
|
|
18
|
+
typeDxn: typeof Schema.String;
|
|
19
|
+
deleted: typeof Schema.Boolean;
|
|
20
|
+
source: Schema.NullOr<typeof Schema.String>;
|
|
21
|
+
target: Schema.NullOr<typeof Schema.String>;
|
|
22
|
+
/** Parent object id (nullable). */
|
|
23
|
+
parent: Schema.NullOr<typeof Schema.String>;
|
|
24
|
+
/** Monotonically increasing sequence number assigned on insert/update for tracking indexing order. */
|
|
25
|
+
version: typeof Schema.Number;
|
|
26
|
+
/** Unix ms timestamp when the object was first indexed. */
|
|
27
|
+
createdAt: Schema.NullOr<typeof Schema.Number>;
|
|
28
|
+
/** Unix ms timestamp when the object was last re-indexed. */
|
|
29
|
+
updatedAt: Schema.NullOr<typeof Schema.Number>;
|
|
30
|
+
}>;
|
|
31
|
+
export interface ObjectMeta extends Schema.Schema.Type<typeof ObjectMeta> {
|
|
32
|
+
}
|
|
33
|
+
export declare class ObjectMetaIndex implements Index {
|
|
34
|
+
migrate: () => Effect.Effect<void, SqlError.SqlError, SqlClient.SqlClient>;
|
|
35
|
+
query: (query: Pick<ObjectMeta, "spaceId" | "typeDxn">) => Effect.Effect<readonly ObjectMeta[], SqlError.SqlError, SqlClient.SqlClient>;
|
|
36
|
+
queryAll: (query: {
|
|
37
|
+
spaceIds: readonly ObjectMeta['spaceId'][];
|
|
38
|
+
includeAllQueues?: boolean;
|
|
39
|
+
queueIds?: readonly string[] | null;
|
|
40
|
+
}) => Effect.Effect<readonly ObjectMeta[], SqlError.SqlError, SqlClient.SqlClient>;
|
|
41
|
+
queryTypes: (args_0: {
|
|
42
|
+
spaceIds: readonly ObjectMeta['spaceId'][];
|
|
43
|
+
typeDxns: readonly ObjectMeta['typeDxn'][];
|
|
44
|
+
inverted?: boolean;
|
|
45
|
+
includeAllQueues?: boolean;
|
|
46
|
+
queueIds?: readonly string[] | null;
|
|
47
|
+
}) => Effect.Effect<readonly ObjectMeta[], SqlError.SqlError, SqlClient.SqlClient>;
|
|
48
|
+
queryRelations: (args_0: {
|
|
49
|
+
endpoint: 'source' | 'target';
|
|
50
|
+
anchorDxns: readonly string[];
|
|
51
|
+
}) => Effect.Effect<readonly ObjectMeta[], SqlError.SqlError, SqlClient.SqlClient>;
|
|
52
|
+
update: (objects: IndexerObject[]) => Effect.Effect<void, SqlError.SqlError, SqlClient.SqlClient>;
|
|
53
|
+
/**
|
|
54
|
+
* Look up `recordIds` for objects that are already stored in the ObjectMetaIndex.
|
|
55
|
+
* Mutates the objects in place.
|
|
56
|
+
*/
|
|
57
|
+
lookupRecordIds: (objects: IndexerObject[]) => Effect.Effect<void, SqlError.SqlError, SqlClient.SqlClient>;
|
|
58
|
+
/**
|
|
59
|
+
* Look up object metadata by recordIds.
|
|
60
|
+
*/
|
|
61
|
+
lookupByRecordIds: (recordIds: number[]) => Effect.Effect<readonly ObjectMeta[], SqlError.SqlError, SqlClient.SqlClient>;
|
|
62
|
+
/**
|
|
63
|
+
* Look up object metadata by objectId, spaceId, and queueId.
|
|
64
|
+
*/
|
|
65
|
+
lookupByObjectId: (query: {
|
|
66
|
+
objectId: string;
|
|
67
|
+
spaceId: string;
|
|
68
|
+
queueId: string;
|
|
69
|
+
}) => Effect.Effect<ObjectMeta | null, SqlError.SqlError, SqlClient.SqlClient>;
|
|
70
|
+
/**
|
|
71
|
+
* Query objects by timestamp range.
|
|
72
|
+
*/
|
|
73
|
+
queryByTimeRange: (query: {
|
|
74
|
+
spaceIds: readonly string[];
|
|
75
|
+
updatedAfter?: number;
|
|
76
|
+
updatedBefore?: number;
|
|
77
|
+
createdAfter?: number;
|
|
78
|
+
createdBefore?: number;
|
|
79
|
+
includeAllQueues?: boolean;
|
|
80
|
+
queueIds?: readonly string[] | null;
|
|
81
|
+
}) => Effect.Effect<readonly ObjectMeta[], SqlError.SqlError, SqlClient.SqlClient>;
|
|
82
|
+
/**
|
|
83
|
+
* Query children by parent object ids.
|
|
84
|
+
* Matches both:
|
|
85
|
+
* - Objects whose `parent` field references one of the given parent ids (standard parent/child hierarchy).
|
|
86
|
+
* - Queue items whose `queueId` equals one of the parent ids (e.g. items inside a Feed, since a feed's queue
|
|
87
|
+
* DXN uses the feed's object id as its queue id — see `Feed.getQueueDxn`).
|
|
88
|
+
*/
|
|
89
|
+
queryChildren: (query: {
|
|
90
|
+
spaceId: SpaceId[];
|
|
91
|
+
parentIds: ObjectId[];
|
|
92
|
+
}) => Effect.Effect<readonly ObjectMeta[], SqlError.SqlError, SqlClient.SqlClient>;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=object-meta-index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object-meta-index.d.ts","sourceRoot":"","sources":["../../../../src/indexes/object-meta-index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,KAAK,QAAQ,MAAM,sBAAsB,CAAC;AAEtD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAO,KAAK,QAAQ,EAAE,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAE9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAUzC,eAAO,MAAM,UAAU;;;;IAIrB,2FAA2F;;;;;IAK3F,mDAAmD;;;;;IAKnD,mCAAmC;;IAEnC,sGAAsG;;IAEtG,2DAA2D;;IAE3D,6DAA6D;;EAE7D,CAAC;AACH,MAAM,WAAW,UAAW,SAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,UAAU,CAAC;CAAG;AAiC5E,qBAAa,eAAgB,YAAW,KAAK;IAC3C,OAAO,oEAsCJ;IAEH,KAAK,mIAoBH;IAEF,QAAQ;kBAEM,SAAS,UAAU,CAAC,SAAS,CAAC,EAAE;2BACvB,OAAO;mBACf,SAAS,MAAM,EAAE,GAAG,IAAI;uFAoBrC;IAEF,UAAU;kBAQI,SAAS,UAAU,CAAC,SAAS,CAAC,EAAE;kBAChC,SAAS,UAAU,CAAC,SAAS,CAAC,EAAE;mBAC/B,OAAO;2BACC,OAAO;mBACf,SAAS,MAAM,EAAE,GAAG,IAAI;uFAsCrC;IAEF,cAAc;kBAKA,QAAQ,GAAG,QAAQ;oBACjB,SAAS,MAAM,EAAE;uFAiB/B;IAGF,MAAM,4FA+EJ;IAEF;;;OAGG;IACH,eAAe,4FA+Bb;IAEF;;OAEG;IACH,iBAAiB,wGAef;IAEF;;OAEG;IACH,gBAAgB;kBAEF,MAAM;iBACP,MAAM;iBACN,MAAM;mFAgBjB;IAEF;;OAEG;IACH,gBAAgB;kBAEF,SAAS,MAAM,EAAE;uBACZ,MAAM;wBACL,MAAM;uBACP,MAAM;wBACL,MAAM;2BACH,OAAO;mBACf,SAAS,MAAM,EAAE,GAAG,IAAI;uFAuCrC;IAEF;;;;;;OAMG;IACH,aAAa;iBAEA,OAAO,EAAE;mBACP,QAAQ,EAAE;uFAiBvB;CACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object-meta-index.test.d.ts","sourceRoot":"","sources":["../../../../src/indexes/object-meta-index.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import * as SqlClient from '@effect/sql/SqlClient';
|
|
2
|
+
import type * as SqlError from '@effect/sql/SqlError';
|
|
3
|
+
import * as Effect from 'effect/Effect';
|
|
4
|
+
import * as Schema from 'effect/Schema';
|
|
5
|
+
import type { Index, IndexerObject } from './interface';
|
|
6
|
+
export declare const ReverseRef: Schema.Struct<{
|
|
7
|
+
recordId: typeof Schema.Number;
|
|
8
|
+
targetDxn: typeof Schema.String;
|
|
9
|
+
/**
|
|
10
|
+
* Escaped property path within an object.
|
|
11
|
+
*
|
|
12
|
+
* Escaping rules:
|
|
13
|
+
*
|
|
14
|
+
* - '.' -> '\.'
|
|
15
|
+
* - '\' -> '\\'
|
|
16
|
+
* - contact with .
|
|
17
|
+
*/
|
|
18
|
+
propPath: typeof Schema.String;
|
|
19
|
+
}>;
|
|
20
|
+
export interface ReverseRef extends Schema.Schema.Type<typeof ReverseRef> {
|
|
21
|
+
}
|
|
22
|
+
export interface ReverseRefQuery {
|
|
23
|
+
targetDxn: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Indexes reverse references - tracks which objects reference which targets.
|
|
27
|
+
* Only indexes references, not relations.
|
|
28
|
+
*/
|
|
29
|
+
export declare class ReverseRefIndex implements Index {
|
|
30
|
+
migrate: () => Effect.Effect<void, SqlError.SqlError, SqlClient.SqlClient>;
|
|
31
|
+
/**
|
|
32
|
+
* Query all references pointing to a target DXN.
|
|
33
|
+
*/
|
|
34
|
+
query: (args_0: ReverseRefQuery) => Effect.Effect<readonly ReverseRef[], SqlError.SqlError, SqlClient.SqlClient>;
|
|
35
|
+
update: (objects: IndexerObject[]) => Effect.Effect<void, SqlError.SqlError, SqlClient.SqlClient>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=reverse-ref-index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reverse-ref-index.d.ts","sourceRoot":"","sources":["../../../../src/indexes/reverse-ref-index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,KAAK,QAAQ,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAKxC,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA6BxD,eAAO,MAAM,UAAU;;;IAGrB;;;;;;;;OAQG;;EAEH,CAAC;AACH,MAAM,WAAW,UAAW,SAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,UAAU,CAAC;CAAG;AAE5E,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;CAEnB;AAED;;;GAGG;AACH,qBAAa,eAAgB,YAAW,KAAK;IAC3C,OAAO,oEAWJ;IAEH;;OAEG;IACH,KAAK,4GAQH;IAEF,MAAM,4FA+BJ;CACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reverse-ref-index.test.d.ts","sourceRoot":"","sources":["../../../../src/indexes/reverse-ref-index.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as Schema from 'effect/Schema';
|
|
2
|
+
export type ObjectPropPath = string[];
|
|
3
|
+
/**
|
|
4
|
+
* Escaped property path within an object.
|
|
5
|
+
*
|
|
6
|
+
* Escaping rules:
|
|
7
|
+
*
|
|
8
|
+
* - '.' -> '\.'
|
|
9
|
+
* - '\' -> '\\'
|
|
10
|
+
* - contact with .
|
|
11
|
+
*/
|
|
12
|
+
export declare const EscapedPropPath: Schema.SchemaClass<string, string> & {
|
|
13
|
+
escape: (path: ObjectPropPath) => EscapedPropPath;
|
|
14
|
+
unescape: (path: EscapedPropPath) => ObjectPropPath;
|
|
15
|
+
};
|
|
16
|
+
export type EscapedPropPath = Schema.Schema.Type<typeof EscapedPropPath>;
|
|
17
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/utils.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAIxC,MAAM,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC;AAEtC;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG;IACjE,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,eAAe,CAAC;IAClD,QAAQ,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,cAAc,CAAC;CA0BrD,CAAC;AACF,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,eAAe,CAAC,CAAC"}
|