@happyvertical/smrt-core 0.36.8 → 0.37.1
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/child-accessors.d.ts +1 -1
- package/dist/child-accessors.d.ts.map +1 -1
- package/dist/child-accessors.js +1 -1
- package/dist/child-accessors.js.map +1 -1
- package/dist/class.d.ts.map +1 -1
- package/dist/class.js +3 -1
- package/dist/class.js.map +1 -1
- package/dist/collection-cache.d.ts.map +1 -1
- package/dist/collection-cache.js +5 -3
- package/dist/collection-cache.js.map +1 -1
- package/dist/collection.d.ts +39 -16
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +40 -19
- package/dist/collection.js.map +1 -1
- package/dist/consumer-plugin/index.js.map +1 -1
- package/dist/decorators/compatibility.d.ts +1 -1
- package/dist/decorators/compatibility.d.ts.map +1 -1
- package/dist/decorators/compatibility.js.map +1 -1
- package/dist/decorators/index.d.ts +4 -4
- package/dist/decorators/index.d.ts.map +1 -1
- package/dist/decorators/index.js.map +1 -1
- package/dist/hierarchical.d.ts.map +1 -1
- package/dist/hierarchical.js.map +1 -1
- package/dist/junction.d.ts.map +1 -1
- package/dist/junction.js.map +1 -1
- package/dist/manifest/discover-smrt-packages.d.ts +10 -0
- package/dist/manifest/discover-smrt-packages.d.ts.map +1 -1
- package/dist/manifest/discover-smrt-packages.js.map +1 -1
- package/dist/manifest/generator.d.ts.map +1 -1
- package/dist/manifest/generator.js +34 -37
- package/dist/manifest/generator.js.map +1 -1
- package/dist/manifest/index.js +2 -2
- package/dist/manifest/index.js.map +1 -1
- package/dist/manifest/manifest-loader.d.ts +10 -0
- package/dist/manifest/manifest-loader.d.ts.map +1 -1
- package/dist/manifest/manifest-loader.js.map +1 -1
- package/dist/manifest/static-manifest.d.ts.map +1 -1
- package/dist/manifest/static-manifest.js +39 -20
- package/dist/manifest/static-manifest.js.map +1 -1
- package/dist/manifest/store.js +2 -2
- package/dist/manifest/store.js.map +1 -1
- package/dist/manifest/test-manifest-stub.d.ts.map +1 -1
- package/dist/manifest/test-manifest-stub.js +2301 -629
- package/dist/manifest/test-manifest-stub.js.map +1 -1
- package/dist/manifest.json +39 -20
- package/dist/migrations/differ.d.ts +104 -13
- package/dist/migrations/differ.d.ts.map +1 -1
- package/dist/migrations/differ.js +199 -26
- package/dist/migrations/differ.js.map +1 -1
- package/dist/node_modules/.pnpm/{minimatch@10.2.3 → minimatch@10.2.5}/node_modules/minimatch/dist/esm/assert-valid-pattern.js.map +1 -1
- package/dist/node_modules/.pnpm/{minimatch@10.2.3 → minimatch@10.2.5}/node_modules/minimatch/dist/esm/ast.js +1 -7
- package/dist/node_modules/.pnpm/minimatch@10.2.5/node_modules/minimatch/dist/esm/ast.js.map +1 -0
- package/dist/node_modules/.pnpm/{minimatch@10.2.3 → minimatch@10.2.5}/node_modules/minimatch/dist/esm/brace-expressions.js.map +1 -1
- package/dist/node_modules/.pnpm/{minimatch@10.2.3 → minimatch@10.2.5}/node_modules/minimatch/dist/esm/escape.js.map +1 -1
- package/dist/node_modules/.pnpm/{minimatch@10.2.3 → minimatch@10.2.5}/node_modules/minimatch/dist/esm/index.js +17 -14
- package/dist/node_modules/.pnpm/minimatch@10.2.5/node_modules/minimatch/dist/esm/index.js.map +1 -0
- package/dist/node_modules/.pnpm/minimatch@10.2.5/node_modules/minimatch/dist/esm/unescape.js +10 -0
- package/dist/node_modules/.pnpm/{minimatch@10.2.3 → minimatch@10.2.5}/node_modules/minimatch/dist/esm/unescape.js.map +1 -1
- package/dist/object.d.ts +64 -17
- package/dist/object.d.ts.map +1 -1
- package/dist/object.js +76 -30
- package/dist/object.js.map +1 -1
- package/dist/registry/class-registration.d.ts +3 -3
- package/dist/registry/class-registration.d.ts.map +1 -1
- package/dist/registry/class-registration.js +39 -42
- package/dist/registry/class-registration.js.map +1 -1
- package/dist/registry/inheritance-resolver.d.ts +17 -3
- package/dist/registry/inheritance-resolver.d.ts.map +1 -1
- package/dist/registry/inheritance-resolver.js +1 -1
- package/dist/registry/inheritance-resolver.js.map +1 -1
- package/dist/registry/manifest-field-merge.d.ts +17 -3
- package/dist/registry/manifest-field-merge.d.ts.map +1 -1
- package/dist/registry/manifest-field-merge.js +8 -6
- package/dist/registry/manifest-field-merge.js.map +1 -1
- package/dist/registry/schema-builder.d.ts +1 -1
- package/dist/registry/schema-builder.d.ts.map +1 -1
- package/dist/registry/schema-builder.js.map +1 -1
- package/dist/registry/shared-state.d.ts +3 -3
- package/dist/registry/shared-state.d.ts.map +1 -1
- package/dist/registry/shared-state.js.map +1 -1
- package/dist/registry/types.d.ts +78 -19
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/registry/validator.d.ts +2 -1
- package/dist/registry/validator.d.ts.map +1 -1
- package/dist/registry/validator.js +38 -39
- package/dist/registry/validator.js.map +1 -1
- package/dist/registry.d.ts +84 -57
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +31 -25
- package/dist/registry.js.map +1 -1
- package/dist/scanner/manifest-generator.d.ts.map +1 -1
- package/dist/scanner/manifest-generator.js +22 -20
- package/dist/scanner/manifest-generator.js.map +1 -1
- package/dist/smrt-knowledge.json +8 -7
- package/dist/system-fields.d.ts +1 -1
- package/dist/system-fields.d.ts.map +1 -1
- package/dist/system-fields.js.map +1 -1
- package/dist/vite-plugin/index.js +1 -1
- package/package.json +7 -7
- package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/ast.js.map +0 -1
- package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/index.js.map +0 -1
- package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/unescape.js +0 -10
- /package/dist/node_modules/.pnpm/{minimatch@10.2.3 → minimatch@10.2.5}/node_modules/minimatch/dist/esm/assert-valid-pattern.js +0 -0
- /package/dist/node_modules/.pnpm/{minimatch@10.2.3 → minimatch@10.2.5}/node_modules/minimatch/dist/esm/brace-expressions.js +0 -0
- /package/dist/node_modules/.pnpm/{minimatch@10.2.3 → minimatch@10.2.5}/node_modules/minimatch/dist/esm/escape.js +0 -0
package/dist/collection.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ type SmrtInternalKeys = keyof SmrtClass | '_tableName' | '_loadedRelationships'
|
|
|
24
24
|
* ```
|
|
25
25
|
*/
|
|
26
26
|
export type SmrtCreateInput<T extends SmrtObject> = Partial<Omit<{
|
|
27
|
-
[K in keyof T as T[K] extends (...args:
|
|
27
|
+
[K in keyof T as T[K] extends (...args: never[]) => unknown ? never : K]: T[K];
|
|
28
28
|
}, SmrtInternalKeys>> & {
|
|
29
29
|
/** STI discriminator for polymorphic creation */
|
|
30
30
|
_meta_type?: string;
|
|
@@ -44,6 +44,23 @@ export type SmrtCreateInput<T extends SmrtObject> = Partial<Omit<{
|
|
|
44
44
|
* `convertWhereKeys()` handles field and operator checking.
|
|
45
45
|
*/
|
|
46
46
|
export type SmrtWhereClause<T extends SmrtObject> = Record<string, unknown>;
|
|
47
|
+
/**
|
|
48
|
+
* Minimal runtime shape of a field definition as consumed by the collection's
|
|
49
|
+
* query/hydration helpers (`getFieldsSync()`, `convertWhereKeys()`,
|
|
50
|
+
* `formatDataJs()`). These come from `fieldsFromClass()` /
|
|
51
|
+
* `ObjectRegistry.getFields()` and only a few members are read here: `type`
|
|
52
|
+
* (for `formatDataJs` value coercion) and the `sensitive` markers (for the
|
|
53
|
+
* `@field({ sensitive: true })` WHERE guard, #1540). The index signature keeps
|
|
54
|
+
* the bag open for the other registry-attached members without forcing `any`.
|
|
55
|
+
*/
|
|
56
|
+
interface CollectionFieldDefinition {
|
|
57
|
+
type?: string;
|
|
58
|
+
sensitive?: boolean;
|
|
59
|
+
_meta?: {
|
|
60
|
+
sensitive?: boolean;
|
|
61
|
+
} & Record<string, unknown>;
|
|
62
|
+
[key: string]: unknown;
|
|
63
|
+
}
|
|
47
64
|
/**
|
|
48
65
|
* Configuration options for SmrtCollection
|
|
49
66
|
*/
|
|
@@ -124,7 +141,13 @@ export declare class SmrtCollection<ModelType extends SmrtObject> extends SmrtCl
|
|
|
124
141
|
*/
|
|
125
142
|
getItemClass(): SmrtCollectionItemClass<ModelType>;
|
|
126
143
|
/**
|
|
127
|
-
* Static reference to the item class constructor
|
|
144
|
+
* Static reference to the item class constructor.
|
|
145
|
+
*
|
|
146
|
+
* S4 #1579: kept as `any`. Subclasses assign a concrete model constructor
|
|
147
|
+
* (`static readonly _itemClass = Product`) here; the base declares the slot
|
|
148
|
+
* generically and `SmrtCollection` is invariant in `ModelType`, so a narrower
|
|
149
|
+
* `SmrtObjectConstructor` / `SmrtCollectionItemClass<SmrtObject>` type rejects
|
|
150
|
+
* the heterogeneous concrete assignments. Mirrors the registry escape hatch.
|
|
128
151
|
*/
|
|
129
152
|
static readonly _itemClass: any;
|
|
130
153
|
/**
|
|
@@ -201,7 +224,7 @@ export declare class SmrtCollection<ModelType extends SmrtObject> extends SmrtCl
|
|
|
201
224
|
* ```
|
|
202
225
|
*/
|
|
203
226
|
findOne(options: {
|
|
204
|
-
where:
|
|
227
|
+
where: SmrtWhereClause<ModelType>;
|
|
205
228
|
}): Promise<ModelType | null>;
|
|
206
229
|
/**
|
|
207
230
|
* Find a record by ID (convenience method - delegates to get())
|
|
@@ -309,7 +332,7 @@ export declare class SmrtCollection<ModelType extends SmrtObject> extends SmrtCl
|
|
|
309
332
|
* @see {@link list} for multiple results
|
|
310
333
|
* @see {@link findById} / {@link findOne} for convenience aliases
|
|
311
334
|
*/
|
|
312
|
-
get(filter: string |
|
|
335
|
+
get(filter: string | SmrtWhereClause<ModelType>, options?: {
|
|
313
336
|
cache?: CollectionCacheConfig | false;
|
|
314
337
|
}): Promise<ModelType | null>;
|
|
315
338
|
/**
|
|
@@ -501,7 +524,7 @@ export declare class SmrtCollection<ModelType extends SmrtObject> extends SmrtCl
|
|
|
501
524
|
* @see {@link create} for always-insert semantics
|
|
502
525
|
* @see {@link get} for read-only lookup
|
|
503
526
|
*/
|
|
504
|
-
getOrUpsert(data:
|
|
527
|
+
getOrUpsert(data: Record<string, unknown>, defaults?: Record<string, unknown>): Promise<ModelType>;
|
|
505
528
|
/**
|
|
506
529
|
* Gets differences between an existing object and new data
|
|
507
530
|
*
|
|
@@ -509,14 +532,14 @@ export declare class SmrtCollection<ModelType extends SmrtObject> extends SmrtCl
|
|
|
509
532
|
* @param data - New data
|
|
510
533
|
* @returns Object containing only the changed fields
|
|
511
534
|
*/
|
|
512
|
-
getDiff(existing: Record<string,
|
|
535
|
+
getDiff(existing: SmrtObject | Record<string, unknown>, data: Record<string, unknown>): Promise<Record<string, unknown> | null>;
|
|
513
536
|
private getDiffSync;
|
|
514
537
|
/**
|
|
515
538
|
* Gets field definitions for the collection's item class
|
|
516
539
|
*
|
|
517
540
|
* @returns Object containing field definitions
|
|
518
541
|
*/
|
|
519
|
-
getFields(): Promise<Record<string,
|
|
542
|
+
getFields(): Promise<Record<string, CollectionFieldDefinition>>;
|
|
520
543
|
/**
|
|
521
544
|
* Normalize user input into the model's logical field names before diffing or creation.
|
|
522
545
|
*
|
|
@@ -545,7 +568,7 @@ export declare class SmrtCollection<ModelType extends SmrtObject> extends SmrtCl
|
|
|
545
568
|
* @returns Map containing field definitions
|
|
546
569
|
* @private
|
|
547
570
|
*/
|
|
548
|
-
getFieldsSync(): Record<string,
|
|
571
|
+
getFieldsSync(): Record<string, CollectionFieldDefinition>;
|
|
549
572
|
/**
|
|
550
573
|
* Generates database schema for the collection's item class
|
|
551
574
|
*
|
|
@@ -607,7 +630,7 @@ export declare class SmrtCollection<ModelType extends SmrtObject> extends SmrtCl
|
|
|
607
630
|
* @see {@link list} for retrieving the actual records
|
|
608
631
|
*/
|
|
609
632
|
count(options?: {
|
|
610
|
-
where?:
|
|
633
|
+
where?: SmrtWhereClause<ModelType>;
|
|
611
634
|
}): Promise<number>;
|
|
612
635
|
/**
|
|
613
636
|
* Resolve this collection's STI child discriminator — the qualified item
|
|
@@ -662,7 +685,7 @@ export declare class SmrtCollection<ModelType extends SmrtObject> extends SmrtCl
|
|
|
662
685
|
* `, ['Electronics', 100]);
|
|
663
686
|
* ```
|
|
664
687
|
*/
|
|
665
|
-
query(sql: string, params?:
|
|
688
|
+
query(sql: string, params?: unknown[], options?: {
|
|
666
689
|
allowRawOnTenantScoped?: boolean;
|
|
667
690
|
}): Promise<ModelType[]>;
|
|
668
691
|
private hydrateResultRow;
|
|
@@ -698,8 +721,8 @@ export declare class SmrtCollection<ModelType extends SmrtObject> extends SmrtCl
|
|
|
698
721
|
id?: string;
|
|
699
722
|
scope: string;
|
|
700
723
|
key: string;
|
|
701
|
-
value:
|
|
702
|
-
metadata?:
|
|
724
|
+
value: unknown;
|
|
725
|
+
metadata?: unknown;
|
|
703
726
|
confidence?: number;
|
|
704
727
|
version?: number;
|
|
705
728
|
expiresAt?: Date;
|
|
@@ -726,7 +749,7 @@ export declare class SmrtCollection<ModelType extends SmrtObject> extends SmrtCl
|
|
|
726
749
|
key: string;
|
|
727
750
|
includeAncestors?: boolean;
|
|
728
751
|
minConfidence?: number;
|
|
729
|
-
}): Promise<
|
|
752
|
+
}): Promise<unknown>;
|
|
730
753
|
/**
|
|
731
754
|
* Recall all collection-level context in a scope
|
|
732
755
|
*
|
|
@@ -747,7 +770,7 @@ export declare class SmrtCollection<ModelType extends SmrtObject> extends SmrtCl
|
|
|
747
770
|
scope?: string;
|
|
748
771
|
includeDescendants?: boolean;
|
|
749
772
|
minConfidence?: number;
|
|
750
|
-
}): Promise<Map<string,
|
|
773
|
+
}): Promise<Map<string, unknown>>;
|
|
751
774
|
/**
|
|
752
775
|
* Forget collection-level context
|
|
753
776
|
*
|
|
@@ -818,7 +841,7 @@ export declare class SmrtCollection<ModelType extends SmrtObject> extends SmrtCl
|
|
|
818
841
|
field?: string;
|
|
819
842
|
limit?: number;
|
|
820
843
|
minSimilarity?: number;
|
|
821
|
-
where?:
|
|
844
|
+
where?: SmrtWhereClause<ModelType>;
|
|
822
845
|
}): Promise<Array<ModelType & {
|
|
823
846
|
_similarity: number;
|
|
824
847
|
}>>;
|
|
@@ -876,7 +899,7 @@ export declare class SmrtCollection<ModelType extends SmrtObject> extends SmrtCl
|
|
|
876
899
|
field?: string;
|
|
877
900
|
limit?: number;
|
|
878
901
|
minSimilarity?: number;
|
|
879
|
-
where?:
|
|
902
|
+
where?: SmrtWhereClause<ModelType>;
|
|
880
903
|
}): Promise<Array<ModelType & {
|
|
881
904
|
_similarity: number;
|
|
882
905
|
}>>;
|
package/dist/collection.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAEL,KAAK,qBAAqB,EAQ3B,MAAM,oBAAoB,CAAC;AAQ5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"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"}
|
package/dist/collection.js
CHANGED
|
@@ -36,7 +36,9 @@ class SmrtCollection extends SmrtClass {
|
|
|
36
36
|
*/
|
|
37
37
|
_cachedFields = null;
|
|
38
38
|
getRegisteredItemClass() {
|
|
39
|
-
return ObjectRegistry.getClassByConstructor(
|
|
39
|
+
return ObjectRegistry.getClassByConstructor(
|
|
40
|
+
this._itemClass
|
|
41
|
+
) || ObjectRegistry.getClass(this._itemClass.name);
|
|
40
42
|
}
|
|
41
43
|
getResolvedItemClassName() {
|
|
42
44
|
return this.getRegisteredItemClass()?.name || this._itemClass.name;
|
|
@@ -81,7 +83,8 @@ class SmrtCollection extends SmrtClass {
|
|
|
81
83
|
const sensitiveFieldNames = /* @__PURE__ */ new Set();
|
|
82
84
|
const collectSensitive = (fieldMap) => {
|
|
83
85
|
const entries = fieldMap instanceof Map ? fieldMap.entries() : Object.entries(fieldMap);
|
|
84
|
-
for (const [fieldName,
|
|
86
|
+
for (const [fieldName, rawDef] of entries) {
|
|
87
|
+
const def = rawDef;
|
|
85
88
|
if (def && (def.sensitive === true || def._meta?.sensitive === true)) {
|
|
86
89
|
sensitiveFieldNames.add(toSnakeCase(fieldName));
|
|
87
90
|
sensitiveFieldNames.add(fieldName);
|
|
@@ -215,8 +218,15 @@ class SmrtCollection extends SmrtClass {
|
|
|
215
218
|
return this._itemClass;
|
|
216
219
|
}
|
|
217
220
|
/**
|
|
218
|
-
* Static reference to the item class constructor
|
|
221
|
+
* Static reference to the item class constructor.
|
|
222
|
+
*
|
|
223
|
+
* S4 #1579: kept as `any`. Subclasses assign a concrete model constructor
|
|
224
|
+
* (`static readonly _itemClass = Product`) here; the base declares the slot
|
|
225
|
+
* generically and `SmrtCollection` is invariant in `ModelType`, so a narrower
|
|
226
|
+
* `SmrtObjectConstructor` / `SmrtCollectionItemClass<SmrtObject>` type rejects
|
|
227
|
+
* the heterogeneous concrete assignments. Mirrors the registry escape hatch.
|
|
219
228
|
*/
|
|
229
|
+
// biome-ignore lint/suspicious/noExplicitAny: subclasses assign a concrete `static _itemClass = Product`; `SmrtCollection` is invariant in `ModelType`, so a narrower constructor type rejects the heterogeneous assignments. S4 #1579.
|
|
220
230
|
static _itemClass;
|
|
221
231
|
/**
|
|
222
232
|
* Validates that the collection is properly configured
|
|
@@ -259,10 +269,11 @@ class SmrtCollection extends SmrtClass {
|
|
|
259
269
|
*/
|
|
260
270
|
constructor(options = {}) {
|
|
261
271
|
super(options);
|
|
262
|
-
|
|
263
|
-
|
|
272
|
+
const collectionCtor = this.constructor;
|
|
273
|
+
if (this.constructor !== SmrtCollection && collectionCtor._itemClass) {
|
|
274
|
+
const itemClass = collectionCtor._itemClass;
|
|
264
275
|
const itemClassName = ObjectRegistry.getClassByConstructor(itemClass)?.name || itemClass.name;
|
|
265
|
-
ObjectRegistry.registerCollection(itemClassName,
|
|
276
|
+
ObjectRegistry.registerCollection(itemClassName, collectionCtor);
|
|
266
277
|
}
|
|
267
278
|
}
|
|
268
279
|
/**
|
|
@@ -290,6 +301,12 @@ class SmrtCollection extends SmrtClass {
|
|
|
290
301
|
* });
|
|
291
302
|
* ```
|
|
292
303
|
*/
|
|
304
|
+
// S4 #1579: `SmrtCollection<any>` bound is irreducible. `SmrtCollection` is
|
|
305
|
+
// invariant in `ModelType` (it has `create(options: SmrtCreateInput<ModelType>)`),
|
|
306
|
+
// so a concrete `Products extends SmrtCollection<Product>` does not satisfy
|
|
307
|
+
// `T extends SmrtCollection<SmrtObject>`. The `any` bound is the only constraint
|
|
308
|
+
// every subclass collection satisfies.
|
|
309
|
+
// biome-ignore lint/suspicious/noExplicitAny: `SmrtCollection` is invariant in `ModelType`, so concrete `Products extends SmrtCollection<Product>` fails `T extends SmrtCollection<SmrtObject>`; the `any` bound is the only one every subclass satisfies. S4 #1579.
|
|
293
310
|
static async create(options = {}) {
|
|
294
311
|
const {
|
|
295
312
|
_className,
|
|
@@ -317,8 +334,9 @@ class SmrtCollection extends SmrtClass {
|
|
|
317
334
|
sanitization,
|
|
318
335
|
signals
|
|
319
336
|
};
|
|
320
|
-
|
|
321
|
-
|
|
337
|
+
const staticSelf = this;
|
|
338
|
+
if (staticSelf._isJunctionBase === true) {
|
|
339
|
+
const itemCtor = staticSelf._itemClass;
|
|
322
340
|
const itemRegistered = itemCtor && ObjectRegistry.getClassByConstructor(itemCtor);
|
|
323
341
|
if (!itemRegistered) {
|
|
324
342
|
throw new Error(
|
|
@@ -764,14 +782,14 @@ class SmrtCollection extends SmrtClass {
|
|
|
764
782
|
}
|
|
765
783
|
const relatedMap = /* @__PURE__ */ new Map();
|
|
766
784
|
for (const obj of relatedObjects) {
|
|
767
|
-
relatedMap.set(obj.id, obj);
|
|
785
|
+
if (obj.id) relatedMap.set(obj.id, obj);
|
|
768
786
|
}
|
|
769
787
|
for (const instance of instances) {
|
|
770
788
|
const foreignKeyValue = instance[fieldName];
|
|
771
789
|
if (foreignKeyValue && typeof foreignKeyValue === "string") {
|
|
772
790
|
const relatedObject = relatedMap.get(foreignKeyValue);
|
|
773
791
|
if (relatedObject) {
|
|
774
|
-
instance.
|
|
792
|
+
instance._setLoadedRelationship(fieldName, relatedObject);
|
|
775
793
|
}
|
|
776
794
|
}
|
|
777
795
|
}
|
|
@@ -836,7 +854,7 @@ class SmrtCollection extends SmrtClass {
|
|
|
836
854
|
}
|
|
837
855
|
for (const instance of instances) {
|
|
838
856
|
const relatedArray = relatedMap.get(instance.id) || [];
|
|
839
|
-
instance.
|
|
857
|
+
instance._setLoadedRelationship(fieldName, relatedArray);
|
|
840
858
|
}
|
|
841
859
|
}
|
|
842
860
|
/**
|
|
@@ -873,7 +891,7 @@ class SmrtCollection extends SmrtClass {
|
|
|
873
891
|
return;
|
|
874
892
|
}
|
|
875
893
|
for (const instance of instances) {
|
|
876
|
-
instance.
|
|
894
|
+
instance._setLoadedRelationship(fieldName, []);
|
|
877
895
|
}
|
|
878
896
|
const junctionRowsAll = [];
|
|
879
897
|
for (const idChunk of chunkArray(instanceIds, IN_LIST_CHUNK_SIZE)) {
|
|
@@ -925,7 +943,7 @@ class SmrtCollection extends SmrtClass {
|
|
|
925
943
|
for (const instance of instances) {
|
|
926
944
|
const targetIds = sourceToTargets.get(instance.id) ?? [];
|
|
927
945
|
const objects = targetIds.map((id) => targetById.get(id)).filter((o) => o !== void 0);
|
|
928
|
-
instance.
|
|
946
|
+
instance._setLoadedRelationship(fieldName, objects);
|
|
929
947
|
}
|
|
930
948
|
}
|
|
931
949
|
/**
|
|
@@ -1011,7 +1029,7 @@ class SmrtCollection extends SmrtClass {
|
|
|
1011
1029
|
const { DatabaseError } = await import("./errors.js");
|
|
1012
1030
|
throw DatabaseError.missingDiscriminator(
|
|
1013
1031
|
this._itemClass.name,
|
|
1014
|
-
options?.id
|
|
1032
|
+
typeof options?.id === "string" ? options.id : void 0
|
|
1015
1033
|
);
|
|
1016
1034
|
}
|
|
1017
1035
|
let registeredClass = ObjectRegistry.getClassByQualifiedName(className);
|
|
@@ -1126,9 +1144,10 @@ class SmrtCollection extends SmrtClass {
|
|
|
1126
1144
|
"slug",
|
|
1127
1145
|
"context"
|
|
1128
1146
|
]);
|
|
1147
|
+
const existingRecord = existing;
|
|
1129
1148
|
const diff = Object.keys(data).reduce(
|
|
1130
1149
|
(acc, key) => {
|
|
1131
|
-
if (validKeys.has(key) && !this.areEquivalentValues(
|
|
1150
|
+
if (validKeys.has(key) && !this.areEquivalentValues(existingRecord[key], data[key])) {
|
|
1132
1151
|
acc[key] = data[key];
|
|
1133
1152
|
}
|
|
1134
1153
|
return acc;
|
|
@@ -1459,9 +1478,10 @@ class SmrtCollection extends SmrtClass {
|
|
|
1459
1478
|
const formattedData = this.withHydratedCoreFields(
|
|
1460
1479
|
formatDataJs(row, fields)
|
|
1461
1480
|
);
|
|
1462
|
-
|
|
1481
|
+
const metaType = formattedData._meta_type;
|
|
1482
|
+
if (isSTI && metaType) {
|
|
1463
1483
|
const polymorphicInstance = await this.createPolymorphic(
|
|
1464
|
-
|
|
1484
|
+
typeof metaType === "string" ? metaType : String(metaType),
|
|
1465
1485
|
formattedData,
|
|
1466
1486
|
{ hydrateOnly: true }
|
|
1467
1487
|
);
|
|
@@ -1990,9 +2010,10 @@ class SmrtCollection extends SmrtClass {
|
|
|
1990
2010
|
const batch = await this.list({ limit: batchSize, offset });
|
|
1991
2011
|
for (const obj of batch) {
|
|
1992
2012
|
try {
|
|
1993
|
-
const
|
|
2013
|
+
const embeddable = obj;
|
|
2014
|
+
const hasStale = await embeddable.hasStaleEmbeddings();
|
|
1994
2015
|
if (hasStale) {
|
|
1995
|
-
await
|
|
2016
|
+
await embeddable.generateEmbeddings();
|
|
1996
2017
|
generated++;
|
|
1997
2018
|
} else {
|
|
1998
2019
|
skipped++;
|