@ekairos/domain 1.8.10-beta.0 → 1.9.0
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/__type_tests__/domain-builder.typecheck.js +455 -6
- package/dist/__type_tests__/domain-builder.typecheck.js.map +1 -1
- package/dist/__type_tests__/instant-schema-example.d.ts +225 -1
- package/dist/__type_tests__/instant-schema-example.d.ts.map +1 -1
- package/dist/__type_tests__/instant-schema-migration-example.d.ts +188 -1
- package/dist/__type_tests__/instant-schema-migration-example.d.ts.map +1 -1
- package/dist/__type_tests__/test.schema.d.ts +95 -0
- package/dist/__type_tests__/test.schema.d.ts.map +1 -0
- package/dist/__type_tests__/test.schema.js +86 -0
- package/dist/__type_tests__/test.schema.js.map +1 -0
- package/dist/index.d.ts +16 -22
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +96 -39
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,45 +1,39 @@
|
|
|
1
1
|
import { i } from "@instantdb/core";
|
|
2
|
-
import type { EntitiesDef, LinksDef, RoomsDef, InstantSchemaDef } from "@instantdb/core";
|
|
2
|
+
import type { EntitiesDef, LinksDef, RoomsDef, InstantSchemaDef, EntityDef } from "@instantdb/core";
|
|
3
3
|
export type DomainDefinition<E extends EntitiesDef, L extends LinksDef<E>, R extends RoomsDef> = {
|
|
4
4
|
entities: E;
|
|
5
5
|
links: L;
|
|
6
6
|
rooms: R;
|
|
7
7
|
};
|
|
8
8
|
export type DomainInstance<E extends EntitiesDef, L extends LinksDef<E>, R extends RoomsDef> = DomainDefinition<E, L, R> & {
|
|
9
|
-
schema: () =>
|
|
9
|
+
schema: () => any;
|
|
10
10
|
compose: <E2 extends EntitiesDef, L2 extends LinksDef<E2>, R2 extends RoomsDef>(other: DomainInstance<E2, L2, R2> | DomainDefinition<E2, L2, R2>) => DomainInstance<E & E2, LinksDef<E & E2>, R & R2>;
|
|
11
11
|
};
|
|
12
|
-
export type SchemaOf<D extends DomainDefinition<any, any, any>> = InstantSchemaDef<D["entities"], LinksDef<D["entities"]>, D["rooms"]>;
|
|
12
|
+
export type SchemaOf<D extends DomainDefinition<any, any, any> | DomainSchemaResult<any, any, any>> = D extends DomainSchemaResult<any, any, any> ? ReturnType<D["toInstantSchema"]> : InstantSchemaDef<D["entities"], LinksDef<D["entities"]>, D["rooms"]>;
|
|
13
13
|
type MergeEntities<A extends EntitiesDef, B extends EntitiesDef> = {
|
|
14
14
|
[K in keyof A | keyof B]: K extends keyof A ? A[K] : K extends keyof B ? B[K] : never;
|
|
15
15
|
};
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
links: L;
|
|
19
|
-
rooms: R;
|
|
20
|
-
toInstantSchema: () => InstantSchemaWithDomain<any>;
|
|
16
|
+
type MergeLinks<A extends LinksDef<any>, B extends LinksDef<any>> = {
|
|
17
|
+
[K in keyof A | keyof B]: K extends keyof A ? A[K] : K extends keyof B ? B[K] : never;
|
|
21
18
|
};
|
|
22
|
-
export type
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
rooms: RoomsDef;
|
|
26
|
-
withRoomSchema: any;
|
|
19
|
+
export type DomainSchemaResult<E extends EntitiesDef = EntitiesDef, L extends LinksDef<any> = LinksDef<any>, R extends RoomsDef = RoomsDef> = ReturnType<typeof i.schema<WithBase<E>, L, R>> & {
|
|
20
|
+
readonly originalEntities: E;
|
|
21
|
+
toInstantSchema: () => ReturnType<typeof i.schema<WithBase<E>, L, R>>;
|
|
27
22
|
};
|
|
28
|
-
type AnyEntityDef = EntitiesDef[string];
|
|
29
23
|
type BaseEntitiesPhantom = {
|
|
30
|
-
$users:
|
|
31
|
-
$files:
|
|
24
|
+
$users: EntityDef<any, any, any>;
|
|
25
|
+
$files: EntityDef<any, any, any>;
|
|
32
26
|
};
|
|
33
27
|
type WithBase<E extends EntitiesDef> = MergeEntities<E, BaseEntitiesPhantom>;
|
|
34
|
-
export type DomainBuilder<AccumE extends EntitiesDef> = {
|
|
35
|
-
includes
|
|
36
|
-
schema
|
|
28
|
+
export type DomainBuilder<AccumE extends EntitiesDef, AccumL extends LinksDef<any> = LinksDef<any>> = {
|
|
29
|
+
includes<E2 extends EntitiesDef, L2 extends LinksDef<any> = {}>(other: DomainInstance<E2, L2, any> | DomainSchemaResult<E2, L2, any> | InstantSchemaDef<E2, L2, any> | (() => DomainInstance<E2, L2, any> | DomainSchemaResult<E2, L2, any> | InstantSchemaDef<E2, L2, any>) | undefined): DomainBuilder<MergeEntities<AccumE, E2>, MergeLinks<AccumL, L2>>;
|
|
30
|
+
schema<LE extends EntitiesDef, const LL extends LinksDef<WithBase<MergeEntities<AccumE, LE>>>>(def: {
|
|
37
31
|
entities: LE;
|
|
38
|
-
links:
|
|
32
|
+
links: LL;
|
|
39
33
|
rooms: RoomsDef;
|
|
40
|
-
})
|
|
34
|
+
}): DomainSchemaResult<MergeEntities<AccumE, LE>, MergeLinks<AccumL, LL>, RoomsDef>;
|
|
41
35
|
};
|
|
42
36
|
export declare function domain<E extends EntitiesDef, L extends LinksDef<E>, R extends RoomsDef>(def: DomainDefinition<E, L, R>): DomainInstance<E, L, R>;
|
|
43
|
-
export declare function domain(name?: string): DomainBuilder<{}>;
|
|
37
|
+
export declare function domain(name?: string): DomainBuilder<{}, {}>;
|
|
44
38
|
export {};
|
|
45
39
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAC;AACpC,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -40,9 +40,10 @@ function domain(arg) {
|
|
|
40
40
|
}
|
|
41
41
|
// builder API - runtime state tracks accumulated dependencies
|
|
42
42
|
// Support lazy includes for circular dependencies by storing references and resolving at schema()/toInstantSchema() time
|
|
43
|
-
|
|
43
|
+
// AL preserves literal link keys from included domains
|
|
44
|
+
function createBuilder(deps, linkDeps, lazyIncludes = []) {
|
|
44
45
|
return {
|
|
45
|
-
includes
|
|
46
|
+
includes(other) {
|
|
46
47
|
// Support lazy includes via function for circular dependencies
|
|
47
48
|
if (typeof other === 'function') {
|
|
48
49
|
const lazyGetter = () => {
|
|
@@ -53,7 +54,8 @@ function domain(arg) {
|
|
|
53
54
|
return undefined;
|
|
54
55
|
}
|
|
55
56
|
};
|
|
56
|
-
|
|
57
|
+
// Preserve link literal keys using MergeLinks
|
|
58
|
+
return createBuilder(deps, linkDeps, [...lazyIncludes, lazyGetter]);
|
|
57
59
|
}
|
|
58
60
|
// If other is undefined (circular dependency), store a lazy getter
|
|
59
61
|
// Entities will be resolved from app domain composition at toInstantSchema() time
|
|
@@ -61,30 +63,37 @@ function domain(arg) {
|
|
|
61
63
|
// Create a lazy getter that returns undefined
|
|
62
64
|
// Entities will be available from app domain's merged entities when toInstantSchema() is called
|
|
63
65
|
const lazyGetter = () => undefined;
|
|
64
|
-
//
|
|
65
|
-
return createBuilder(deps, [...lazyIncludes, lazyGetter]);
|
|
66
|
+
// Preserve link literal keys
|
|
67
|
+
return createBuilder(deps, linkDeps, [...lazyIncludes, lazyGetter]);
|
|
66
68
|
}
|
|
67
|
-
// Try to get entities immediately
|
|
69
|
+
// Try to get entities and links immediately
|
|
68
70
|
try {
|
|
69
71
|
const entities = other.entities;
|
|
70
72
|
if (!entities) {
|
|
71
73
|
// If entities don't exist yet, store as lazy
|
|
72
74
|
const lazyGetter = () => other;
|
|
73
|
-
|
|
75
|
+
// Preserve link literal keys
|
|
76
|
+
return createBuilder(deps, linkDeps, [...lazyIncludes, lazyGetter]);
|
|
74
77
|
}
|
|
75
|
-
const
|
|
76
|
-
|
|
78
|
+
const links = other.links;
|
|
79
|
+
const mergedEntities = { ...deps, ...entities };
|
|
80
|
+
// Preserve literal link keys by merging directly (not casting to LinksDef)
|
|
81
|
+
const mergedLinks = (links ? { ...linkDeps, ...links } : { ...linkDeps });
|
|
82
|
+
return createBuilder(mergedEntities, mergedLinks, lazyIncludes);
|
|
77
83
|
}
|
|
78
84
|
catch (e) {
|
|
79
85
|
// If accessing entities throws, store as lazy
|
|
80
86
|
const lazyGetter = () => other;
|
|
81
|
-
|
|
87
|
+
// Preserve link literal keys
|
|
88
|
+
return createBuilder(deps, linkDeps, [...lazyIncludes, lazyGetter]);
|
|
82
89
|
}
|
|
83
90
|
},
|
|
84
|
-
schema
|
|
91
|
+
schema(def) {
|
|
85
92
|
// Resolve lazy includes at schema() time (when all domains should be initialized)
|
|
86
93
|
// This handles circular dependencies by deferring entity resolution
|
|
87
94
|
let resolvedDeps = { ...deps };
|
|
95
|
+
// Preserve literal link keys from accumulated links
|
|
96
|
+
let resolvedLinks = { ...linkDeps };
|
|
88
97
|
for (const lazyGetter of lazyIncludes) {
|
|
89
98
|
try {
|
|
90
99
|
const other = lazyGetter();
|
|
@@ -93,6 +102,11 @@ function domain(arg) {
|
|
|
93
102
|
if (entities) {
|
|
94
103
|
resolvedDeps = { ...resolvedDeps, ...entities };
|
|
95
104
|
}
|
|
105
|
+
const links = other.links;
|
|
106
|
+
if (links) {
|
|
107
|
+
// Merge links preserving literal keys
|
|
108
|
+
resolvedLinks = { ...resolvedLinks, ...links };
|
|
109
|
+
}
|
|
96
110
|
}
|
|
97
111
|
}
|
|
98
112
|
catch (e) {
|
|
@@ -102,45 +116,88 @@ function domain(arg) {
|
|
|
102
116
|
}
|
|
103
117
|
// Runtime merge for output; compile-time validation handled by types above
|
|
104
118
|
const allEntities = { ...resolvedDeps, ...def.entities };
|
|
119
|
+
// allLinks contains merged links from included domains + current domain
|
|
120
|
+
// Preserve literal link keys (owner, related, parent, etc.) by using MergeLinks
|
|
121
|
+
const allLinks = { ...resolvedLinks, ...def.links };
|
|
105
122
|
return {
|
|
106
123
|
entities: allEntities,
|
|
107
124
|
// Strip base phantom from public type so it's assignable to i.schema()
|
|
108
|
-
links:
|
|
125
|
+
links: allLinks,
|
|
109
126
|
rooms: def.rooms,
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
//
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
127
|
+
// Add originalEntities for type-safe access to original entity definitions
|
|
128
|
+
originalEntities: allEntities,
|
|
129
|
+
toInstantSchema: (() => {
|
|
130
|
+
// Capture allEntities and allLinks in closure to avoid TypeScript scoping issues
|
|
131
|
+
const capturedEntities = allEntities;
|
|
132
|
+
const capturedLinks = allLinks;
|
|
133
|
+
return () => {
|
|
134
|
+
const { i } = require("@instantdb/core");
|
|
135
|
+
// Final resolution: capturedEntities contains merged entities from all includes()
|
|
136
|
+
// For app domain, this includes all domains, so all entities are available
|
|
137
|
+
// Resolve any remaining lazy includes that couldn't be resolved at schema() time
|
|
138
|
+
let finalEntities = { ...capturedEntities };
|
|
139
|
+
// Preserve literal link keys from capturedLinks
|
|
140
|
+
let finalLinks = { ...capturedLinks };
|
|
141
|
+
// Try to resolve lazy includes one more time (domains should be initialized by now)
|
|
142
|
+
for (const lazyGetter of lazyIncludes) {
|
|
143
|
+
try {
|
|
144
|
+
const other = lazyGetter();
|
|
145
|
+
if (other) {
|
|
146
|
+
const entities = other.entities;
|
|
147
|
+
if (entities) {
|
|
148
|
+
// Merge entities that weren't available during schema() call
|
|
149
|
+
finalEntities = { ...finalEntities, ...entities };
|
|
150
|
+
}
|
|
151
|
+
const links = other.links;
|
|
152
|
+
if (links) {
|
|
153
|
+
// Merge links preserving literal keys (owner, related, parent, etc.)
|
|
154
|
+
finalLinks = { ...finalLinks, ...links };
|
|
155
|
+
}
|
|
125
156
|
}
|
|
126
157
|
}
|
|
158
|
+
catch (e) {
|
|
159
|
+
// If still can't resolve, entities should already be in allEntities from app domain composition
|
|
160
|
+
}
|
|
127
161
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
162
|
+
// Include base entities ($users, $files) that InstantDB manages
|
|
163
|
+
// These need to be explicitly included since InstantDB doesn't auto-add them
|
|
164
|
+
const baseEntities = {
|
|
165
|
+
$users: i.entity({
|
|
166
|
+
email: i.string().optional().indexed(),
|
|
167
|
+
}),
|
|
168
|
+
$files: i.entity({
|
|
169
|
+
path: i.string(),
|
|
170
|
+
url: i.string().optional(),
|
|
171
|
+
contentType: i.string().optional(),
|
|
172
|
+
size: i.number().optional(),
|
|
173
|
+
}),
|
|
174
|
+
};
|
|
175
|
+
// Merge base entities with user entities, user entities take precedence
|
|
176
|
+
const allEntitiesWithBase = { ...baseEntities, ...finalEntities };
|
|
177
|
+
// Create schema with merged links - preserve literal link keys
|
|
178
|
+
// The actual links object has literal keys (owner, related, parent, etc.)
|
|
179
|
+
// that need to be preserved for query validation
|
|
180
|
+
const schemaResult = i.schema({
|
|
181
|
+
entities: allEntitiesWithBase,
|
|
182
|
+
links: finalLinks,
|
|
183
|
+
rooms: def.rooms,
|
|
184
|
+
});
|
|
185
|
+
// Return schema result - i.schema() enriches entities with link labels automatically
|
|
186
|
+
// The type system should preserve this enrichment through the return type of toInstantSchema()
|
|
187
|
+
// which uses ReturnType<typeof i.schema<WithBase<E>, L, R>> where L is MergeLinks<AL, LL>
|
|
188
|
+
// This preserves both the enriched entities and the literal link keys
|
|
189
|
+
return schemaResult;
|
|
190
|
+
};
|
|
191
|
+
})(),
|
|
138
192
|
};
|
|
139
193
|
},
|
|
140
194
|
};
|
|
141
195
|
}
|
|
142
|
-
// Default include: start with an empty
|
|
196
|
+
// Default include: start with an empty entities object
|
|
197
|
+
// Base entities ($users, $files) are added at toInstantSchema() time to ensure they're always available
|
|
198
|
+
// This allows links to reference them even when they're not explicitly defined in domains
|
|
143
199
|
const base = core_1.i.schema({ entities: {}, links: {}, rooms: {} });
|
|
144
|
-
|
|
200
|
+
const baseEntities = { ...base.entities };
|
|
201
|
+
return createBuilder(baseEntities, {});
|
|
145
202
|
}
|
|
146
203
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ekairos/domain",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.9.0",
|
|
4
4
|
"description": "Pulzar Domain Utilities",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"test:conflicts": "node dist/__type_tests__/conflict-validation.test.js"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@instantdb/core": "^0.
|
|
36
|
+
"@instantdb/core": "^0.22.48"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@ekairos/tsconfig": "workspace:*",
|