@dxos/echo 0.8.2-main.36232bc → 0.8.2-main.5ca3450

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/dist/lib/browser/index.mjs +48 -33
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/node/index.cjs +48 -29
  5. package/dist/lib/node/index.cjs.map +4 -4
  6. package/dist/lib/node/meta.json +1 -1
  7. package/dist/lib/node-esm/index.mjs +48 -33
  8. package/dist/lib/node-esm/index.mjs.map +4 -4
  9. package/dist/lib/node-esm/meta.json +1 -1
  10. package/dist/types/src/{Database.d.ts → experimental/database.d.ts} +1 -1
  11. package/dist/types/src/experimental/database.d.ts.map +1 -0
  12. package/dist/types/src/experimental/index.d.ts +1 -0
  13. package/dist/types/src/experimental/index.d.ts.map +1 -0
  14. package/dist/types/src/{Queue.d.ts → experimental/queue.d.ts} +1 -1
  15. package/dist/types/src/experimental/queue.d.ts.map +1 -0
  16. package/dist/types/src/{Space.d.ts → experimental/space.d.ts} +1 -1
  17. package/dist/types/src/experimental/space.d.ts.map +1 -0
  18. package/dist/types/src/index.d.ts +3 -6
  19. package/dist/types/src/index.d.ts.map +1 -1
  20. package/dist/types/src/query/api.d.ts +116 -0
  21. package/dist/types/src/query/api.d.ts.map +1 -0
  22. package/dist/types/src/query/ast.d.ts +188 -0
  23. package/dist/types/src/query/ast.d.ts.map +1 -0
  24. package/dist/types/src/query/query.test.d.ts +2 -0
  25. package/dist/types/src/query/query.test.d.ts.map +1 -0
  26. package/dist/types/src/type/Relation.d.ts +16 -0
  27. package/dist/types/src/type/Relation.d.ts.map +1 -0
  28. package/dist/types/src/type/Type.d.ts +80 -0
  29. package/dist/types/src/type/Type.d.ts.map +1 -0
  30. package/dist/types/src/type/Type.test.d.ts +2 -0
  31. package/dist/types/src/type/Type.test.d.ts.map +1 -0
  32. package/dist/types/src/type/index.d.ts +3 -0
  33. package/dist/types/src/type/index.d.ts.map +1 -0
  34. package/dist/types/tsconfig.tsbuildinfo +1 -1
  35. package/package.json +14 -14
  36. package/src/{Database.ts → experimental/database.ts} +1 -1
  37. package/src/experimental/index.ts +7 -0
  38. package/src/{Queue.ts → experimental/queue.ts} +1 -1
  39. package/src/index.ts +3 -7
  40. package/src/query/api.ts +291 -0
  41. package/src/query/ast.ts +149 -0
  42. package/src/query/query.test.ts +135 -0
  43. package/src/type/Relation.ts +17 -0
  44. package/src/type/Type.test.ts +106 -0
  45. package/src/type/Type.ts +143 -0
  46. package/src/type/index.ts +6 -0
  47. package/dist/types/src/Database.d.ts.map +0 -1
  48. package/dist/types/src/Queue.d.ts.map +0 -1
  49. package/dist/types/src/Space.d.ts.map +0 -1
  50. package/dist/types/src/Type.d.ts +0 -49
  51. package/dist/types/src/Type.d.ts.map +0 -1
  52. package/dist/types/src/api.test.d.ts +0 -2
  53. package/dist/types/src/api.test.d.ts.map +0 -1
  54. package/src/Type.ts +0 -99
  55. package/src/api.test.ts +0 -92
  56. /package/src/{Space.ts → experimental/space.ts} +0 -0
@@ -0,0 +1,116 @@
1
+ import { type Schema } from 'effect';
2
+ import { type Ref } from '@dxos/echo-schema';
3
+ import type * as QueryAST from './ast';
4
+ import type { Relation } from '..';
5
+ export interface Query<T> {
6
+ '~Query': {
7
+ value: T;
8
+ };
9
+ ast: QueryAST.AST;
10
+ /**
11
+ * Traverse an outgoing reference.
12
+ * @param key - Property path inside T that is a reference.
13
+ * @returns Query for the target of the reference.
14
+ */
15
+ reference<K extends RefPropKey<T>>(key: K): Query<Ref.Target<T[K]>>;
16
+ /**
17
+ * Find objects referencing this object.
18
+ * @param target - Schema of the referencing object.
19
+ * @param key - Property path inside the referencing object that is a reference.
20
+ * @returns Query for the referencing objects.
21
+ */
22
+ referencedBy<S extends Schema.Schema.All>(target: S, key: RefPropKey<Schema.Schema.Type<S>>): Query<Schema.Schema.Type<S>>;
23
+ /**
24
+ * Find relations where this object is the source.
25
+ * @returns Query for the relation objects.
26
+ * @param relation - Schema of the relation.
27
+ * @param predicates - Predicates to filter the relation objects.
28
+ */
29
+ sourceOf<S extends Schema.Schema.All>(relation: S, predicates?: PredicateSet<Schema.Schema.Type<S>>): Query<Schema.Schema.Type<S>>;
30
+ /**
31
+ * Find relations where this object is the target.
32
+ * @returns Query for the relation objects.
33
+ * @param relation - Schema of the relation.
34
+ * @param predicates - Predicates to filter the relation objects.
35
+ */
36
+ targetOf<S extends Schema.Schema.All>(relation: S, predicates?: PredicateSet<Schema.Schema.Type<S>>): Query<Schema.Schema.Type<S>>;
37
+ /**
38
+ * For a query for relations, get the source objects.
39
+ * @returns Query for the source objects.
40
+ */
41
+ source(): Query<Relation.Source<T>>;
42
+ /**
43
+ * For a query for relations, get the target objects.
44
+ * @returns Query for the target objects.
45
+ */
46
+ target(): Query<Relation.Target<T>>;
47
+ }
48
+ interface QueryAPI {
49
+ /**
50
+ * Query for objects of a given schema.
51
+ * @param schema - Schema of the objects.
52
+ * @param predicates - Predicates to filter the objects.
53
+ * @returns Query for the objects.
54
+ */
55
+ type<S extends Schema.Schema.All>(schema: S, predicates?: PredicateSet<Schema.Schema.Type<S>>): Query<Schema.Schema.Type<S>>;
56
+ /**
57
+ * Full-text or vector search.
58
+ */
59
+ text<S extends Schema.Schema.All>(schema: S, text: string, options?: Query.TextSearchOptions): Query<Schema.Schema.Type<S>>;
60
+ /**
61
+ * Combine results of multiple queries.
62
+ * @param queries - Queries to combine.
63
+ * @returns Query for the combined results.
64
+ */
65
+ all<T>(...queries: Query<T>[]): Query<T>;
66
+ /**
67
+ * Predicate for property to be greater than the provided value.
68
+ */
69
+ gt<T>(value: T): Predicate<T>;
70
+ /**
71
+ * Predicate for property to be greater than or equal to the provided value.
72
+ */
73
+ gte<T>(value: T): Predicate<T>;
74
+ /**
75
+ * Predicate for property to be less than the provided value.
76
+ */
77
+ lt<T>(value: T): Predicate<T>;
78
+ /**
79
+ * Predicate for property to be less than or equal to the provided value.
80
+ */
81
+ lte<T>(value: T): Predicate<T>;
82
+ /**
83
+ * Predicate for property to be in the provided array.
84
+ * @param values - Values to check against.
85
+ */
86
+ in<T>(...values: T[]): Predicate<T>;
87
+ /**
88
+ * Predicate for property to be in the provided range.
89
+ * @param from - Start of the range (inclusive).
90
+ * @param to - End of the range (exclusive).
91
+ */
92
+ range<T>(from: T, to: T): Predicate<T>;
93
+ }
94
+ export declare namespace Query {
95
+ type TextSearchOptions = {
96
+ type?: 'full-text' | 'vector';
97
+ };
98
+ }
99
+ export interface Predicate<T> {
100
+ '~Predicate': {
101
+ value: T;
102
+ };
103
+ ast: QueryAST.Predicate;
104
+ }
105
+ type PredicateSet<T> = {
106
+ [K in keyof T & string]?: Predicate<T[K]> | T[K];
107
+ };
108
+ /**
109
+ * All property paths inside T that are references.
110
+ */
111
+ type RefPropKey<T> = {
112
+ [K in keyof T]: T[K] extends Ref<infer _U> ? K : never;
113
+ }[keyof T] & string;
114
+ export declare const Query: QueryAPI;
115
+ export {};
116
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../src/query/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,188 @@
1
+ import { Schema } from 'effect';
2
+ export declare const Predicate: Schema.Union<[Schema.Struct<{
3
+ type: Schema.Literal<["eq"]>;
4
+ value: typeof Schema.Any;
5
+ }>, Schema.Struct<{
6
+ type: Schema.Literal<["neq"]>;
7
+ value: typeof Schema.Any;
8
+ }>, Schema.Struct<{
9
+ type: Schema.Literal<["gt"]>;
10
+ value: typeof Schema.Any;
11
+ }>, Schema.Struct<{
12
+ type: Schema.Literal<["gte"]>;
13
+ value: typeof Schema.Any;
14
+ }>, Schema.Struct<{
15
+ type: Schema.Literal<["lt"]>;
16
+ value: typeof Schema.Any;
17
+ }>, Schema.Struct<{
18
+ type: Schema.Literal<["lte"]>;
19
+ value: typeof Schema.Any;
20
+ }>, Schema.Struct<{
21
+ type: Schema.Literal<["in"]>;
22
+ values: Schema.Array$<typeof Schema.Any>;
23
+ }>, Schema.Struct<{
24
+ type: Schema.Literal<["range"]>;
25
+ from: typeof Schema.Any;
26
+ to: typeof Schema.Any;
27
+ }>]>;
28
+ export type Predicate = Schema.Schema.Type<typeof Predicate>;
29
+ export declare const PredicateSet: Schema.Record$<Schema.SchemaClass<string, string, never>, Schema.Union<[Schema.Struct<{
30
+ type: Schema.Literal<["eq"]>;
31
+ value: typeof Schema.Any;
32
+ }>, Schema.Struct<{
33
+ type: Schema.Literal<["neq"]>;
34
+ value: typeof Schema.Any;
35
+ }>, Schema.Struct<{
36
+ type: Schema.Literal<["gt"]>;
37
+ value: typeof Schema.Any;
38
+ }>, Schema.Struct<{
39
+ type: Schema.Literal<["gte"]>;
40
+ value: typeof Schema.Any;
41
+ }>, Schema.Struct<{
42
+ type: Schema.Literal<["lt"]>;
43
+ value: typeof Schema.Any;
44
+ }>, Schema.Struct<{
45
+ type: Schema.Literal<["lte"]>;
46
+ value: typeof Schema.Any;
47
+ }>, Schema.Struct<{
48
+ type: Schema.Literal<["in"]>;
49
+ values: Schema.Array$<typeof Schema.Any>;
50
+ }>, Schema.Struct<{
51
+ type: Schema.Literal<["range"]>;
52
+ from: typeof Schema.Any;
53
+ to: typeof Schema.Any;
54
+ }>]>>;
55
+ export type PredicateSet = Schema.Schema.Type<typeof PredicateSet>;
56
+ /**
57
+ * Query objects by type, id, and/or predicates.
58
+ */
59
+ declare const ASTTypeClause_: Schema.Struct<{
60
+ type: Schema.Literal<["type"]>;
61
+ typename: Schema.Union<[Schema.refine<string, typeof Schema.NonEmptyString>, typeof Schema.Null]>;
62
+ id: Schema.optional<typeof Schema.String>;
63
+ predicates: Schema.optional<Schema.Record$<Schema.SchemaClass<string, string, never>, Schema.Union<[Schema.Struct<{
64
+ type: Schema.Literal<["eq"]>;
65
+ value: typeof Schema.Any;
66
+ }>, Schema.Struct<{
67
+ type: Schema.Literal<["neq"]>;
68
+ value: typeof Schema.Any;
69
+ }>, Schema.Struct<{
70
+ type: Schema.Literal<["gt"]>;
71
+ value: typeof Schema.Any;
72
+ }>, Schema.Struct<{
73
+ type: Schema.Literal<["gte"]>;
74
+ value: typeof Schema.Any;
75
+ }>, Schema.Struct<{
76
+ type: Schema.Literal<["lt"]>;
77
+ value: typeof Schema.Any;
78
+ }>, Schema.Struct<{
79
+ type: Schema.Literal<["lte"]>;
80
+ value: typeof Schema.Any;
81
+ }>, Schema.Struct<{
82
+ type: Schema.Literal<["in"]>;
83
+ values: Schema.Array$<typeof Schema.Any>;
84
+ }>, Schema.Struct<{
85
+ type: Schema.Literal<["range"]>;
86
+ from: typeof Schema.Any;
87
+ to: typeof Schema.Any;
88
+ }>]>>>;
89
+ }>;
90
+ interface ASTTypeClause extends Schema.Schema.Type<typeof ASTTypeClause_> {
91
+ }
92
+ declare const ASTTypeClause: Schema.Schema<ASTTypeClause>;
93
+ declare const ASTTextSearchClause_: Schema.Struct<{
94
+ type: Schema.Literal<["text-search"]>;
95
+ typename: Schema.Union<[Schema.refine<string, typeof Schema.NonEmptyString>, typeof Schema.Null]>;
96
+ text: typeof Schema.String;
97
+ searchKind: Schema.optional<Schema.Literal<["full-text", "vector"]>>;
98
+ }>;
99
+ interface ASTTextSearchClause extends Schema.Schema.Type<typeof ASTTextSearchClause_> {
100
+ }
101
+ declare const ASTTextSearchClause: Schema.Schema<ASTTextSearchClause>;
102
+ /**
103
+ * Traverse references from an anchor object.
104
+ */
105
+ declare const ASTReferenceTraversalClause_: Schema.Struct<{
106
+ type: Schema.Literal<["reference-traversal"]>;
107
+ anchor: Schema.suspend<ASTTypeClause | ASTTextSearchClause | ASTReferenceTraversalClause | ASTIncomingReferencesClause | ASTRelationClause | ASTRelationTraversalClause | ASTUnionClause, ASTTypeClause | ASTTextSearchClause | ASTReferenceTraversalClause | ASTIncomingReferencesClause | ASTRelationClause | ASTRelationTraversalClause | ASTUnionClause, never>;
108
+ property: typeof Schema.String;
109
+ }>;
110
+ interface ASTReferenceTraversalClause extends Schema.Schema.Type<typeof ASTReferenceTraversalClause_> {
111
+ }
112
+ declare const ASTReferenceTraversalClause: Schema.Schema<ASTReferenceTraversalClause>;
113
+ /**
114
+ * Traverse incoming references to an anchor object.
115
+ */
116
+ declare const ASTIncomingReferencesClause_: Schema.Struct<{
117
+ type: Schema.Literal<["incoming-references"]>;
118
+ anchor: Schema.suspend<ASTTypeClause | ASTTextSearchClause | ASTReferenceTraversalClause | ASTIncomingReferencesClause | ASTRelationClause | ASTRelationTraversalClause | ASTUnionClause, ASTTypeClause | ASTTextSearchClause | ASTReferenceTraversalClause | ASTIncomingReferencesClause | ASTRelationClause | ASTRelationTraversalClause | ASTUnionClause, never>;
119
+ property: typeof Schema.String;
120
+ typename: Schema.Union<[Schema.refine<string, typeof Schema.NonEmptyString>, typeof Schema.Null]>;
121
+ }>;
122
+ interface ASTIncomingReferencesClause extends Schema.Schema.Type<typeof ASTIncomingReferencesClause_> {
123
+ }
124
+ declare const ASTIncomingReferencesClause: Schema.Schema<ASTIncomingReferencesClause>;
125
+ /**
126
+ * Traverse relations connecting to an anchor object.
127
+ */
128
+ declare const ASTRelationClause_: Schema.Struct<{
129
+ type: Schema.Literal<["relation"]>;
130
+ anchor: Schema.suspend<ASTTypeClause | ASTTextSearchClause | ASTReferenceTraversalClause | ASTIncomingReferencesClause | ASTRelationClause | ASTRelationTraversalClause | ASTUnionClause, ASTTypeClause | ASTTextSearchClause | ASTReferenceTraversalClause | ASTIncomingReferencesClause | ASTRelationClause | ASTRelationTraversalClause | ASTUnionClause, never>;
131
+ direction: Schema.Literal<["outgoing", "incoming", "both"]>;
132
+ typename: Schema.Union<[Schema.refine<string, typeof Schema.NonEmptyString>, typeof Schema.Null]>;
133
+ predicates: Schema.optional<Schema.Record$<Schema.SchemaClass<string, string, never>, Schema.Union<[Schema.Struct<{
134
+ type: Schema.Literal<["eq"]>;
135
+ value: typeof Schema.Any;
136
+ }>, Schema.Struct<{
137
+ type: Schema.Literal<["neq"]>;
138
+ value: typeof Schema.Any;
139
+ }>, Schema.Struct<{
140
+ type: Schema.Literal<["gt"]>;
141
+ value: typeof Schema.Any;
142
+ }>, Schema.Struct<{
143
+ type: Schema.Literal<["gte"]>;
144
+ value: typeof Schema.Any;
145
+ }>, Schema.Struct<{
146
+ type: Schema.Literal<["lt"]>;
147
+ value: typeof Schema.Any;
148
+ }>, Schema.Struct<{
149
+ type: Schema.Literal<["lte"]>;
150
+ value: typeof Schema.Any;
151
+ }>, Schema.Struct<{
152
+ type: Schema.Literal<["in"]>;
153
+ values: Schema.Array$<typeof Schema.Any>;
154
+ }>, Schema.Struct<{
155
+ type: Schema.Literal<["range"]>;
156
+ from: typeof Schema.Any;
157
+ to: typeof Schema.Any;
158
+ }>]>>>;
159
+ }>;
160
+ interface ASTRelationClause extends Schema.Schema.Type<typeof ASTRelationClause_> {
161
+ }
162
+ declare const ASTRelationClause: Schema.Schema<ASTRelationClause>;
163
+ /**
164
+ * Traverse into the source or target of a relation.
165
+ */
166
+ declare const ASTRelationTraversalClause_: Schema.Struct<{
167
+ type: Schema.Literal<["relation-traversal"]>;
168
+ anchor: Schema.suspend<ASTTypeClause | ASTTextSearchClause | ASTReferenceTraversalClause | ASTIncomingReferencesClause | ASTRelationClause | ASTRelationTraversalClause | ASTUnionClause, ASTTypeClause | ASTTextSearchClause | ASTReferenceTraversalClause | ASTIncomingReferencesClause | ASTRelationClause | ASTRelationTraversalClause | ASTUnionClause, never>;
169
+ direction: Schema.Literal<["source", "target", "both"]>;
170
+ }>;
171
+ interface ASTRelationTraversalClause extends Schema.Schema.Type<typeof ASTRelationTraversalClause_> {
172
+ }
173
+ declare const ASTRelationTraversalClause: Schema.Schema<ASTRelationTraversalClause>;
174
+ /**
175
+ * Union of multiple queries.
176
+ */
177
+ declare const ASTUnionClause_: Schema.Struct<{
178
+ type: Schema.Literal<["union"]>;
179
+ queries: Schema.Array$<Schema.suspend<ASTTypeClause | ASTTextSearchClause | ASTReferenceTraversalClause | ASTIncomingReferencesClause | ASTRelationClause | ASTRelationTraversalClause | ASTUnionClause, ASTTypeClause | ASTTextSearchClause | ASTReferenceTraversalClause | ASTIncomingReferencesClause | ASTRelationClause | ASTRelationTraversalClause | ASTUnionClause, never>>;
180
+ }>;
181
+ interface ASTUnionClause extends Schema.Schema.Type<typeof ASTUnionClause_> {
182
+ }
183
+ declare const ASTUnionClause: Schema.Schema<ASTUnionClause>;
184
+ declare const AST_: Schema.Union<[Schema.Schema<ASTTypeClause, ASTTypeClause, never>, Schema.Schema<ASTTextSearchClause, ASTTextSearchClause, never>, Schema.Schema<ASTReferenceTraversalClause, ASTReferenceTraversalClause, never>, Schema.Schema<ASTIncomingReferencesClause, ASTIncomingReferencesClause, never>, Schema.Schema<ASTRelationClause, ASTRelationClause, never>, Schema.Schema<ASTRelationTraversalClause, ASTRelationTraversalClause, never>, Schema.Schema<ASTUnionClause, ASTUnionClause, never>]>;
185
+ export type AST = Schema.Schema.Type<typeof AST_>;
186
+ export declare const AST: Schema.Schema<AST>;
187
+ export {};
188
+ //# sourceMappingURL=ast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../../../src/query/ast.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIhC,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;IAkCrB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,SAAS,CAAC,CAAC;AAE7D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;KAGvB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,YAAY,CAAC,CAAC;AAQnE;;GAEG;AACH,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKlB,CAAC;AACH,UAAU,aAAc,SAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,cAAc,CAAC;CAAG;AAC5E,QAAA,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAkB,CAAC;AAEnE,QAAA,MAAM,oBAAoB;;;;;EAKxB,CAAC;AACH,UAAU,mBAAoB,SAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,oBAAoB,CAAC;CAAG;AACxF,QAAA,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAwB,CAAC;AAErF;;GAEG;AACH,QAAA,MAAM,4BAA4B;;;;EAIhC,CAAC;AACH,UAAU,2BAA4B,SAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,4BAA4B,CAAC;CAAG;AACxG,QAAA,MAAM,2BAA2B,EAAE,MAAM,CAAC,MAAM,CAAC,2BAA2B,CAAgC,CAAC;AAE7G;;GAEG;AACH,QAAA,MAAM,4BAA4B;;;;;EAKhC,CAAC;AACH,UAAU,2BAA4B,SAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,4BAA4B,CAAC;CAAG;AACxG,QAAA,MAAM,2BAA2B,EAAE,MAAM,CAAC,MAAM,CAAC,2BAA2B,CAAgC,CAAC;AAE7G;;GAEG;AACH,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMtB,CAAC;AACH,UAAU,iBAAkB,SAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,kBAAkB,CAAC;CAAG;AACpF,QAAA,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAsB,CAAC;AAE/E;;GAEG;AACH,QAAA,MAAM,2BAA2B;;;;EAI/B,CAAC;AACH,UAAU,0BAA2B,SAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,2BAA2B,CAAC;CAAG;AACtG,QAAA,MAAM,0BAA0B,EAAE,MAAM,CAAC,MAAM,CAAC,0BAA0B,CAA+B,CAAC;AAE1G;;GAEG;AACH,QAAA,MAAM,eAAe;;;EAGnB,CAAC;AACH,UAAU,cAAe,SAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,eAAe,CAAC;CAAG;AAC9E,QAAA,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,CAAmB,CAAC;AAEtE,QAAA,MAAM,IAAI,oeAQT,CAAC;AAEF,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;AAClD,eAAO,MAAM,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAQ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=query.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.test.d.ts","sourceRoot":"","sources":["../../../../src/query/query.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import { type RelationSourceTargetRefs } from '@dxos/echo-schema';
2
+ export declare const def: <TSource extends import("effect/Schema").Schema.AnyNoContext, TTarget extends import("effect/Schema").Schema.AnyNoContext>(options: {
3
+ typename: string;
4
+ version: string;
5
+ source: TSource;
6
+ target: TTarget;
7
+ }) => <Self extends import("effect/Schema").Schema.Any>(self: Self) => import("@dxos/echo-schema").EchoTypeSchema<Self, RelationSourceTargetRefs<import("effect/Schema").Schema.Type<TSource>, import("effect/Schema").Schema.Type<TTarget>>>;
8
+ /**
9
+ * Get relation target type.
10
+ */
11
+ export type Target<A> = A extends RelationSourceTargetRefs<infer T, infer _S> ? T : never;
12
+ /**
13
+ * Get relation source type.
14
+ */
15
+ export type Source<A> = A extends RelationSourceTargetRefs<infer _T, infer S> ? S : never;
16
+ //# sourceMappingURL=Relation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Relation.d.ts","sourceRoot":"","sources":["../../../../src/type/Relation.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAEhF,eAAO,MAAM,GAAG;;;;;6OAAe,CAAC;AAEhC;;GAEG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,wBAAwB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAE1F;;GAEG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,wBAAwB,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC"}
@@ -0,0 +1,80 @@
1
+ import { type Schema } from 'effect';
2
+ import { type AnyLiveObject as AnyLiveObject$ } from '@dxos/echo-db';
3
+ import { type BaseEchoObject, type BaseObject, type BaseSchema, type EchoSchema, EntityKind, Expando as Expando$, type ImmutableSchema, type JsonSchemaType, ObjectId as ObjectId$, Ref as Ref$, type StoredSchema, type TypeMeta } from '@dxos/echo-schema';
4
+ import { SpaceId as SpaceId$ } from '@dxos/keys';
5
+ /**
6
+ * Type System API.
7
+ *
8
+ * @category api namespace
9
+ * @since 0.9.0
10
+ */
11
+ export declare namespace Type {
12
+ const SpaceIdSchema: Schema.Schema<SpaceId$, string, never>;
13
+ const SpaceId: Readonly<{
14
+ byteLength: 20;
15
+ encode: (value: Uint8Array) => SpaceId$;
16
+ decode: (value: SpaceId$) => Uint8Array;
17
+ isValid: (value: string) => value is SpaceId$;
18
+ random: () => SpaceId$;
19
+ }>;
20
+ type SpaceId = SpaceId$;
21
+ const ObjectId: import("@dxos/echo-schema").ObjectIdClass;
22
+ type ObjectId = ObjectId$;
23
+ const Kind: typeof EntityKind;
24
+ type AnyObject = BaseEchoObject;
25
+ type AnyLiveObject<T extends BaseObject> = AnyLiveObject$<T>;
26
+ type JsonSchema = JsonSchemaType;
27
+ /**
28
+ * A schema that can be extended with arbitrary properties.
29
+ */
30
+ const Expando: Schema.Schema<Expando$, Expando$, never>;
31
+ type Expando = Expando$;
32
+ type Abstract<T = any> = BaseSchema<T>;
33
+ type ImmutableType<T> = ImmutableSchema<T>;
34
+ type MutableType<T> = EchoSchema<T>;
35
+ type StoredType = StoredSchema;
36
+ const create: {
37
+ <T extends BaseObject>(obj: T): import("@dxos/live-object").Live<T>;
38
+ <T extends BaseObject>(schema: Schema.Schema<T, any, never>, obj: NoInfer<import("@dxos/echo-schema").ExcludeId<T>>, meta?: import("@dxos/echo-schema").ObjectMeta): import("@dxos/live-object").Live<T>;
39
+ };
40
+ /**
41
+ * Defines an ECHO type.
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * import { Type } from '@dxos/echo';
46
+ * const Organization = Schema.Struct({
47
+ * name: Schema.String,
48
+ * }).pipe(Type.def({
49
+ * typename: 'example.com/type/Organization',
50
+ * version: '0.1.0',
51
+ * }));
52
+ * ```
53
+ */
54
+ const def: (meta: TypeMeta) => <Self extends Schema.Schema.Any>(self: Self) => import("@dxos/echo-schema").EchoTypeSchema<Self>;
55
+ /**
56
+ * Defines a reference to an ECHO object.
57
+ *
58
+ * @example
59
+ * ```ts
60
+ * import { Type } from '@dxos/echo';
61
+ * const Person = Schema.Struct({
62
+ * name: Schema.String,
63
+ * organization: Type.Ref(Organization),
64
+ * }).pipe(Type.def({
65
+ * typename: 'example.com/type/Person',
66
+ * version: '0.1.0',
67
+ * }));
68
+ * ```
69
+ */
70
+ const Ref: <S extends Schema.Schema.AnyNoContext>(self: S) => import("@dxos/echo-schema").Ref$<Schema.Schema.Type<S>>;
71
+ const ref: <T extends import("@dxos/echo-schema").WithId>(object: T) => Ref$<T>;
72
+ const getMeta: (schema: Schema.Schema.All) => import("@dxos/echo-schema").TypeAnnotation | undefined;
73
+ const getSchema: (obj: unknown | undefined) => Schema.Schema.AnyNoContext | undefined;
74
+ const instanceOf: <Schema extends Schema.Schema.AnyNoContext>(schema: Schema, object: any) => object is Schema.Schema.Type<Schema>;
75
+ const getDXN: (schema: Schema.Schema.All) => import("@dxos/keys").DXN | undefined;
76
+ const getTypename: (schema: Schema.Schema.AnyNoContext) => string;
77
+ const getVersion: (schema: Schema.Schema.All) => string | undefined;
78
+ const toJsonSchema: (schema: Schema.Schema.All) => JsonSchemaType;
79
+ }
80
+ //# sourceMappingURL=Type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Type.d.ts","sourceRoot":"","sources":["../../../../src/type/Type.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,EAAE,KAAK,aAAa,IAAI,cAAc,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,UAAU,EAEf,UAAU,EACV,OAAO,IAAI,QAAQ,EACnB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,QAAQ,IAAI,SAAS,EACrB,GAAG,IAAI,IAAI,EAEX,KAAK,YAAY,EACjB,KAAK,QAAQ,EAQd,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AAKjD;;;;;GAKG;AACH,yBAAiB,IAAI,CAAC;IAKb,MAAM,aAAa,wCAAiB,CAAC;IACrC,MAAM,OAAO;;;;;;MAAW,CAAC;IAChC,KAAY,OAAO,GAAG,QAAQ,CAAC;IAExB,MAAM,QAAQ,2CAAY,CAAC;IAClC,KAAY,QAAQ,GAAG,SAAS,CAAC;IAM1B,MAAM,IAAI,mBAAa,CAAC;IAC/B,KAAY,SAAS,GAAG,cAAc,CAAC;IACvC,KAAY,aAAa,CAAC,CAAC,SAAS,UAAU,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC;IAMpE,KAAY,UAAU,GAAG,cAAc,CAAC;IAExC;;OAEG;IACI,MAAM,OAAO,0CAAW,CAAC;IAChC,KAAY,OAAO,GAAG,QAAQ,CAAC;IAG/B,KAAY,QAAQ,CAAC,CAAC,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAC9C,KAAY,aAAa,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC;IAClD,KAAY,WAAW,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAC3C,KAAY,UAAU,GAAG,YAAY,CAAC;IAE/B,MAAM,MAAM;;;KAAQ,CAAC;IAE5B;;;;;;;;;;;;;OAaG;IACI,MAAM,GAAG,GAAI,MAAM,QAAQ,qGAAqB,CAAC;IAMxD;;;;;;;;;;;;;;OAcG;IACI,MAAM,GAAG,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,4DAAsC,CAAC;IAEjG,MAAM,GAAG,sEAAY,CAAC;IAMtB,MAAM,OAAO,uFAAoB,CAAC;IAClC,MAAM,SAAS,sEAAa,CAAC;IAC7B,MAAM,UAAU,kHAAe,CAAC;IAOhC,MAAM,MAAM,qEAAe,CAAC;IAC5B,MAAM,WAAW,GAAI,QAAQ,MAAM,CAAC,MAAM,CAAC,YAAY,KAAG,MAIhE,CAAC;IACK,MAAM,UAAU,mDAAmB,CAAC;IACpC,MAAM,YAAY,+CAAgB,CAAC;CAC3C"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Type.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Type.test.d.ts","sourceRoot":"","sources":["../../../../src/type/Type.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export { Type } from './Type';
2
+ export * as Relation from './Relation';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/type/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":"5.7.3"}
1
+ {"version":"5.8.3"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/echo",
3
- "version": "0.8.2-main.36232bc",
3
+ "version": "0.8.2-main.5ca3450",
4
4
  "description": "ECHO API",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -22,19 +22,19 @@
22
22
  ],
23
23
  "dependencies": {
24
24
  "@preact/signals-core": "^1.6.0",
25
- "effect": "3.13.3",
26
- "@dxos/debug": "0.8.2-main.36232bc",
27
- "@dxos/echo-db": "0.8.2-main.36232bc",
28
- "@dxos/echo-protocol": "0.8.2-main.36232bc",
29
- "@dxos/echo-schema": "0.8.2-main.36232bc",
30
- "@dxos/effect": "0.8.2-main.36232bc",
31
- "@dxos/echo-signals": "0.8.2-main.36232bc",
32
- "@dxos/invariant": "0.8.2-main.36232bc",
33
- "@dxos/keys": "0.8.2-main.36232bc",
34
- "@dxos/live-object": "0.8.2-main.36232bc",
35
- "@dxos/log": "0.8.2-main.36232bc",
36
- "@dxos/node-std": "0.8.2-main.36232bc",
37
- "@dxos/util": "0.8.2-main.36232bc"
25
+ "effect": "3.14.21",
26
+ "@dxos/debug": "0.8.2-main.5ca3450",
27
+ "@dxos/echo-db": "0.8.2-main.5ca3450",
28
+ "@dxos/echo-schema": "0.8.2-main.5ca3450",
29
+ "@dxos/echo-signals": "0.8.2-main.5ca3450",
30
+ "@dxos/echo-protocol": "0.8.2-main.5ca3450",
31
+ "@dxos/keys": "0.8.2-main.5ca3450",
32
+ "@dxos/effect": "0.8.2-main.5ca3450",
33
+ "@dxos/live-object": "0.8.2-main.5ca3450",
34
+ "@dxos/log": "0.8.2-main.5ca3450",
35
+ "@dxos/invariant": "0.8.2-main.5ca3450",
36
+ "@dxos/node-std": "0.8.2-main.5ca3450",
37
+ "@dxos/util": "0.8.2-main.5ca3450"
38
38
  },
39
39
  "publishConfig": {
40
40
  "access": "public"
@@ -8,4 +8,4 @@
8
8
  * @category api namespace
9
9
  * @since 0.9.0
10
10
  */
11
- export declare namespace Database {}
11
+ export namespace Database {}
@@ -0,0 +1,7 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ // export type { Database } from './database';
6
+ // export type { Queue } from './queue';
7
+ // export type { Space } from './space';
@@ -8,4 +8,4 @@
8
8
  * @category api namespace
9
9
  * @since 0.9.0
10
10
  */
11
- export declare namespace Queue {}
11
+ export namespace Queue {}
package/src/index.ts CHANGED
@@ -2,11 +2,7 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { DXN } from '@dxos/keys';
5
+ export { Format, FormatEnum } from '@dxos/echo-schema';
6
+ export { DXN } from '@dxos/keys';
6
7
 
7
- export { DXN };
8
-
9
- export * as Database from './Database';
10
- export * as Queue from './Queue';
11
- export * as Space from './Space';
12
- export * as Type from './Type';
8
+ export * from './type';