@happyvertical/smrt-core 0.36.7 → 0.37.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/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/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/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/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/runtime/client.d.ts +6 -6
- package/dist/runtime/client.d.ts.map +1 -1
- package/dist/runtime/client.js.map +1 -1
- package/dist/runtime/mcp.d.ts +11 -4
- package/dist/runtime/mcp.d.ts.map +1 -1
- package/dist/runtime/mcp.js.map +1 -1
- package/dist/runtime/server.d.ts +29 -5
- package/dist/runtime/server.d.ts.map +1 -1
- package/dist/runtime/server.js +4 -4
- package/dist/runtime/server.js.map +1 -1
- package/dist/runtime/types.d.ts +12 -12
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/smrt-knowledge.json +5 -4
- 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/package.json +4 -4
package/dist/registry.d.ts
CHANGED
|
@@ -1,13 +1,78 @@
|
|
|
1
|
-
import { SmrtCollection } from './collection';
|
|
1
|
+
import { SmrtCollection, SmrtCollectionOptions } from './collection';
|
|
2
2
|
import { CollectionCacheConfig } from './collection-cache';
|
|
3
|
+
import { FieldOptions } from './decorators/index.js';
|
|
3
4
|
import { ClassEmbeddingConfig, ProjectEmbeddingConfig, ResolvedEmbeddingConfig } from './embeddings/types';
|
|
5
|
+
import { ValidationError } from './errors';
|
|
4
6
|
import { SmrtObject } from './object';
|
|
5
7
|
import { RegistryDiagnostic } from './registry/diagnostics';
|
|
6
|
-
import { RegisteredClass, RelationshipMetadata, SmartObjectConfig, SmrtObjectConstructor, ValidatorFunction } from './registry/types';
|
|
7
|
-
import { QualifiedClassName, SmrtVisibility, ValidationRule } from './scanner/types.js';
|
|
8
|
+
import { RegisteredClass, RegisteredField, RelationshipMetadata, SmartObjectConfig, SmrtObjectConstructor, ValidatorFunction } from './registry/types';
|
|
9
|
+
import { MethodDefinition, QualifiedClassName, SmartObjectDefinition, SmrtVisibility, ValidationRule } from './scanner/types.js';
|
|
8
10
|
import { SchemaDefinition } from './schema/types.js';
|
|
9
11
|
export { isSmrtCollectionExtendsName, SMRT_COLLECTION_BASE_NAMES, } from './registry/collection-resolution';
|
|
10
12
|
export type { RelationshipMetadata, RelationshipType, SmartObjectConfig, } from './registry/types';
|
|
13
|
+
/**
|
|
14
|
+
* Decorator-supplied field metadata bag (from `@field()`, `@foreignKey()`,
|
|
15
|
+
* `@oneToMany()`, `@manyToMany()`, etc.). All concrete decorator option
|
|
16
|
+
* interfaces extend `FieldOptions`; this adds the relationship/junction members
|
|
17
|
+
* that the relationship and cross-package decorators store and that downstream
|
|
18
|
+
* consumers (`SmrtObject` relationship resolution, schema builder) read back.
|
|
19
|
+
*/
|
|
20
|
+
interface FieldDecoratorOptions extends FieldOptions {
|
|
21
|
+
/** Related class name (foreignKey / crossPackageRef / oneToMany / manyToMany). */
|
|
22
|
+
related?: string;
|
|
23
|
+
/** Inverse foreign-key field name for relationship resolution. */
|
|
24
|
+
foreignKey?: string;
|
|
25
|
+
/** Join table name for many-to-many relationships. */
|
|
26
|
+
through?: string;
|
|
27
|
+
/** Source-side join column override for many-to-many relationships. */
|
|
28
|
+
sourceKey?: string;
|
|
29
|
+
/** Target-side join column override for many-to-many relationships. */
|
|
30
|
+
targetKey?: string;
|
|
31
|
+
__tenancy?: unknown;
|
|
32
|
+
__report?: unknown;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Constructor shape for a registered collection class.
|
|
36
|
+
*
|
|
37
|
+
* The `SmrtCollection<any>` type argument is an intentional heterogeneous-
|
|
38
|
+
* storage leave: the registry maps many different item types onto a single
|
|
39
|
+
* constructor-map shape and invokes invariant methods (`create()`), so it
|
|
40
|
+
* cannot be narrowed to `SmrtCollection<SmrtObject>`. The `options` param is
|
|
41
|
+
* `any` (not `unknown`): consumers register CONCRETE collection constructors
|
|
42
|
+
* (`new (options: ChatRoomCollectionOptions) => …`), and constructor params are
|
|
43
|
+
* contravariant — `unknown` would reject those, `any` (like `SmrtObjectConstructor`)
|
|
44
|
+
* stays assignable from any concrete options shape.
|
|
45
|
+
*/
|
|
46
|
+
type CollectionConstructor = new (options: any) => SmrtCollection<any>;
|
|
47
|
+
/**
|
|
48
|
+
* AI-callable tool descriptor surfaced alongside class metadata. Mirrors the
|
|
49
|
+
* `tools` shape on {@link RegisteredClass}.
|
|
50
|
+
*/
|
|
51
|
+
interface ObjectMetadataTool {
|
|
52
|
+
type: 'function';
|
|
53
|
+
function: {
|
|
54
|
+
name: string;
|
|
55
|
+
description?: string;
|
|
56
|
+
parameters?: Record<string, unknown>;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Aggregated, read-only metadata snapshot for a single registered class.
|
|
61
|
+
* Returned by `getObjectMetadata` / `getAllObjectMetadata`.
|
|
62
|
+
*/
|
|
63
|
+
interface ObjectMetadata {
|
|
64
|
+
name: string;
|
|
65
|
+
constructor: typeof SmrtObject;
|
|
66
|
+
collectionConstructor?: CollectionConstructor;
|
|
67
|
+
config: SmartObjectConfig;
|
|
68
|
+
fields: Map<string, RegisteredField>;
|
|
69
|
+
methods: Map<string, MethodDefinition>;
|
|
70
|
+
schema: SchemaDefinition | undefined;
|
|
71
|
+
validators: ValidatorFunction[];
|
|
72
|
+
relationships: RelationshipMetadata[];
|
|
73
|
+
inverseRelationships: RelationshipMetadata[];
|
|
74
|
+
tools?: ObjectMetadataTool[];
|
|
75
|
+
}
|
|
11
76
|
/**
|
|
12
77
|
* Central registry for all SMRT objects
|
|
13
78
|
*
|
|
@@ -118,7 +183,7 @@ export declare class ObjectRegistry {
|
|
|
118
183
|
* });
|
|
119
184
|
* ```
|
|
120
185
|
*/
|
|
121
|
-
static registerFieldDecorator(className: string, propertyKey: string, options:
|
|
186
|
+
static registerFieldDecorator(className: string, propertyKey: string, options: FieldDecoratorOptions): void;
|
|
122
187
|
/**
|
|
123
188
|
* Get field decorator metadata for a specific field
|
|
124
189
|
*
|
|
@@ -131,7 +196,7 @@ export declare class ObjectRegistry {
|
|
|
131
196
|
* // { type: 'text', required: true }
|
|
132
197
|
* ```
|
|
133
198
|
*/
|
|
134
|
-
static getFieldDecorator(className: string, propertyKey: string):
|
|
199
|
+
static getFieldDecorator(className: string, propertyKey: string): FieldDecoratorOptions | undefined;
|
|
135
200
|
/**
|
|
136
201
|
* Get all field decorator metadata for a class
|
|
137
202
|
*
|
|
@@ -143,7 +208,7 @@ export declare class ObjectRegistry {
|
|
|
143
208
|
* // Map { 'name' => { type: 'text', required: true }, ... }
|
|
144
209
|
* ```
|
|
145
210
|
*/
|
|
146
|
-
static getFieldDecorators(className: string): Map<string,
|
|
211
|
+
static getFieldDecorators(className: string): Map<string, FieldDecoratorOptions>;
|
|
147
212
|
/**
|
|
148
213
|
* Check if a class has any field decorators registered
|
|
149
214
|
*
|
|
@@ -183,8 +248,8 @@ export declare class ObjectRegistry {
|
|
|
183
248
|
* ObjectRegistry.registerCollection('Product', ProductCollection);
|
|
184
249
|
* ```
|
|
185
250
|
*/
|
|
186
|
-
static registerCollection(objectName: string, collectionConstructor:
|
|
187
|
-
static registerFromManifest(name: string, objectDef:
|
|
251
|
+
static registerCollection(objectName: string, collectionConstructor: CollectionConstructor): void;
|
|
252
|
+
static registerFromManifest(name: string, objectDef: SmartObjectDefinition, packageName?: string): void;
|
|
188
253
|
/**
|
|
189
254
|
* Helper method for class lookup with qualified name support.
|
|
190
255
|
*
|
|
@@ -567,12 +632,12 @@ export declare class ObjectRegistry {
|
|
|
567
632
|
*
|
|
568
633
|
* @see {@link https://github.com/happyvertical/sdk/blob/main/packages/core/CLAUDE.md#singleton-collection-management-phase-4|Phase 4 Documentation}
|
|
569
634
|
*/
|
|
570
|
-
static getCollection<T extends SmrtObject>(className: string, options?:
|
|
635
|
+
static getCollection<T extends SmrtObject>(className: string, options?: SmrtCollectionOptions): Promise<SmrtCollection<T>>;
|
|
571
636
|
/**
|
|
572
637
|
* Get field definitions for a registered class.
|
|
573
638
|
* Supports both qualified names and simple class names.
|
|
574
639
|
*/
|
|
575
|
-
static getFields(name: string): Map<string,
|
|
640
|
+
static getFields(name: string): Map<string, RegisteredField>;
|
|
576
641
|
/**
|
|
577
642
|
* Get method definitions for a registered class
|
|
578
643
|
*
|
|
@@ -593,8 +658,8 @@ export declare class ObjectRegistry {
|
|
|
593
658
|
* }
|
|
594
659
|
* ```
|
|
595
660
|
*/
|
|
596
|
-
static getMethods(name: string): Map<string,
|
|
597
|
-
static compileValidators(className: string, fields: Map<string,
|
|
661
|
+
static getMethods(name: string): Map<string, MethodDefinition>;
|
|
662
|
+
static compileValidators(className: string, fields: Map<string, RegisteredField>): ValidatorFunction[];
|
|
598
663
|
/**
|
|
599
664
|
* Ensure manifest is loaded for external package classes
|
|
600
665
|
*
|
|
@@ -684,7 +749,7 @@ export declare class ObjectRegistry {
|
|
|
684
749
|
* @returns Array of validation errors (empty if valid)
|
|
685
750
|
* @see https://github.com/happyvertical/smrt/issues/782
|
|
686
751
|
*/
|
|
687
|
-
static validateWithRules(instance:
|
|
752
|
+
static validateWithRules(instance: object, rules: ValidationRule[], className: string): Promise<ValidationError[]>;
|
|
688
753
|
/**
|
|
689
754
|
* Build dependency graph from foreignKey relationships
|
|
690
755
|
*
|
|
@@ -806,7 +871,7 @@ export declare class ObjectRegistry {
|
|
|
806
871
|
* @param className - Name of the registered class
|
|
807
872
|
* @returns Map of all fields (including inherited)
|
|
808
873
|
*/
|
|
809
|
-
static getAllFields(className: string): Promise<Map<string,
|
|
874
|
+
static getAllFields(className: string): Promise<Map<string, RegisteredField>>;
|
|
810
875
|
/**
|
|
811
876
|
* Merge field configurations from parent and child.
|
|
812
877
|
*
|
|
@@ -842,7 +907,7 @@ export declare class ObjectRegistry {
|
|
|
842
907
|
* // Includes: generateSummary() (from PraecoContent) + analyzeLocal() (from BentleyContent)
|
|
843
908
|
* ```
|
|
844
909
|
*/
|
|
845
|
-
static getAllMethods(className: string): Promise<Map<string,
|
|
910
|
+
static getAllMethods(className: string): Promise<Map<string, MethodDefinition>>;
|
|
846
911
|
/**
|
|
847
912
|
* Get complete metadata for a single object (convenience method)
|
|
848
913
|
*
|
|
@@ -872,26 +937,7 @@ export declare class ObjectRegistry {
|
|
|
872
937
|
* }
|
|
873
938
|
* ```
|
|
874
939
|
*/
|
|
875
|
-
static getObjectMetadata(className: string):
|
|
876
|
-
name: string;
|
|
877
|
-
constructor: typeof SmrtObject;
|
|
878
|
-
collectionConstructor?: new (options: any) => SmrtCollection<any>;
|
|
879
|
-
config: SmartObjectConfig;
|
|
880
|
-
fields: Map<string, any>;
|
|
881
|
-
methods: Map<string, any>;
|
|
882
|
-
schema: SchemaDefinition | undefined;
|
|
883
|
-
validators: ValidatorFunction[];
|
|
884
|
-
relationships: RelationshipMetadata[];
|
|
885
|
-
inverseRelationships: RelationshipMetadata[];
|
|
886
|
-
tools?: Array<{
|
|
887
|
-
type: 'function';
|
|
888
|
-
function: {
|
|
889
|
-
name: string;
|
|
890
|
-
description?: string;
|
|
891
|
-
parameters?: Record<string, any>;
|
|
892
|
-
};
|
|
893
|
-
}>;
|
|
894
|
-
} | null;
|
|
940
|
+
static getObjectMetadata(className: string): ObjectMetadata | null;
|
|
895
941
|
/**
|
|
896
942
|
* Get metadata for all registered objects (convenience method)
|
|
897
943
|
*
|
|
@@ -935,26 +981,7 @@ export declare class ObjectRegistry {
|
|
|
935
981
|
* }));
|
|
936
982
|
* ```
|
|
937
983
|
*/
|
|
938
|
-
static getAllObjectMetadata():
|
|
939
|
-
name: string;
|
|
940
|
-
constructor: typeof SmrtObject;
|
|
941
|
-
collectionConstructor?: new (options: any) => SmrtCollection<any>;
|
|
942
|
-
config: SmartObjectConfig;
|
|
943
|
-
fields: Map<string, any>;
|
|
944
|
-
methods: Map<string, any>;
|
|
945
|
-
schema: SchemaDefinition | undefined;
|
|
946
|
-
validators: ValidatorFunction[];
|
|
947
|
-
relationships: RelationshipMetadata[];
|
|
948
|
-
inverseRelationships: RelationshipMetadata[];
|
|
949
|
-
tools?: Array<{
|
|
950
|
-
type: 'function';
|
|
951
|
-
function: {
|
|
952
|
-
name: string;
|
|
953
|
-
description?: string;
|
|
954
|
-
parameters?: Record<string, any>;
|
|
955
|
-
};
|
|
956
|
-
}>;
|
|
957
|
-
}>;
|
|
984
|
+
static getAllObjectMetadata(): ObjectMetadata[];
|
|
958
985
|
/**
|
|
959
986
|
* Get inverse relationships (relationships where this class is the target)
|
|
960
987
|
*
|
|
@@ -1183,7 +1210,7 @@ export declare class ObjectRegistry {
|
|
|
1183
1210
|
* }
|
|
1184
1211
|
* ```
|
|
1185
1212
|
*/
|
|
1186
|
-
static loadFromDatabase(db: import('@happyvertical/sql').DatabaseInterface): Promise<
|
|
1213
|
+
static loadFromDatabase(db: import('@happyvertical/sql').DatabaseInterface): Promise<Record<string, unknown>[]>;
|
|
1187
1214
|
/**
|
|
1188
1215
|
* Get embedding configuration for a class
|
|
1189
1216
|
*
|
|
@@ -1354,5 +1381,5 @@ export declare class ObjectRegistry {
|
|
|
1354
1381
|
* @see {@link SmartObjectConfig} for all available configuration options
|
|
1355
1382
|
* @see {@link field} / {@link meta} / {@link foreignKey} for field decorators
|
|
1356
1383
|
*/
|
|
1357
|
-
export declare function smrt(config?: SmartObjectConfig): <T extends abstract new (...args: any[]) =>
|
|
1384
|
+
export declare function smrt(config?: SmartObjectConfig): <T extends abstract new (...args: any[]) => object>(ctor: T, decoratorContext?: ClassDecoratorContext<T>) => T;
|
|
1358
1385
|
//# sourceMappingURL=registry.d.ts.map
|
package/dist/registry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAIH,OAAO,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/registry.js
CHANGED
|
@@ -119,6 +119,7 @@ class ObjectRegistry {
|
|
|
119
119
|
/**
|
|
120
120
|
* Get the collection cache from globalThis, initializing if needed
|
|
121
121
|
*/
|
|
122
|
+
// biome-ignore lint/suspicious/noExplicitAny: heterogeneous cache of concrete collections; `SmrtCollection` is invariant in `ModelType`, so the type arg cannot narrow to `SmrtObject` (read sites cast back). S4 #1579.
|
|
122
123
|
static get collectionCache() {
|
|
123
124
|
return getCollectionCache();
|
|
124
125
|
}
|
|
@@ -571,9 +572,7 @@ class ObjectRegistry {
|
|
|
571
572
|
const lowerClassName = requestedClassName.toLowerCase();
|
|
572
573
|
let objectDef2 = manifest2.objects[lowerClassName] || manifest2.objects[requestedClassName] || (requestedPackageName ? manifest2.objects[`${requestedPackageName}:${requestedClassName}`] : void 0);
|
|
573
574
|
if (!objectDef2) {
|
|
574
|
-
for (const [_key, def] of Object.entries(
|
|
575
|
-
manifest2.objects
|
|
576
|
-
)) {
|
|
575
|
+
for (const [_key, def] of Object.entries(manifest2.objects)) {
|
|
577
576
|
if (def.className?.toLowerCase() === lowerClassName || def.className === requestedClassName) {
|
|
578
577
|
objectDef2 = def;
|
|
579
578
|
break;
|
|
@@ -620,9 +619,7 @@ class ObjectRegistry {
|
|
|
620
619
|
const lowerParentName = parentName.toLowerCase();
|
|
621
620
|
let parentDef = manifest.objects[lowerParentName] || manifest.objects[parentName];
|
|
622
621
|
if (!parentDef) {
|
|
623
|
-
for (const [_key, def] of Object.entries(
|
|
624
|
-
manifest.objects
|
|
625
|
-
)) {
|
|
622
|
+
for (const [_key, def] of Object.entries(manifest.objects)) {
|
|
626
623
|
if (def.className?.toLowerCase() === lowerParentName || def.className === parentName) {
|
|
627
624
|
parentDef = def;
|
|
628
625
|
break;
|
|
@@ -837,9 +834,8 @@ class ObjectRegistry {
|
|
|
837
834
|
manifestGlobals.__smrtManifestCache.set(cacheKey, manifest);
|
|
838
835
|
let objectsRegistered = 0;
|
|
839
836
|
for (const [key, def] of Object.entries(manifest.objects)) {
|
|
840
|
-
const
|
|
841
|
-
|
|
842
|
-
ObjectRegistry.registerFromManifest(className, objectDef, packageName);
|
|
837
|
+
const className = def.className || key;
|
|
838
|
+
ObjectRegistry.registerFromManifest(className, def, packageName);
|
|
843
839
|
objectsRegistered++;
|
|
844
840
|
}
|
|
845
841
|
verboseLog(
|
|
@@ -1047,16 +1043,18 @@ class ObjectRegistry {
|
|
|
1047
1043
|
);
|
|
1048
1044
|
}
|
|
1049
1045
|
const { SmrtCollection: SmrtCollectionClass } = await import("./collection.js");
|
|
1046
|
+
const itemConstructor = registered.constructor;
|
|
1050
1047
|
class DefaultCollection extends SmrtCollectionClass {
|
|
1051
|
-
static _itemClass =
|
|
1048
|
+
static _itemClass = itemConstructor;
|
|
1052
1049
|
}
|
|
1053
1050
|
collectionConstructor = DefaultCollection;
|
|
1054
1051
|
registered.collectionConstructor = DefaultCollection;
|
|
1055
|
-
ObjectRegistry.collections.set(
|
|
1052
|
+
ObjectRegistry.collections.set(
|
|
1053
|
+
canonicalName,
|
|
1054
|
+
DefaultCollection
|
|
1055
|
+
);
|
|
1056
1056
|
}
|
|
1057
|
-
const collection = await collectionConstructor.create(
|
|
1058
|
-
options
|
|
1059
|
-
);
|
|
1057
|
+
const collection = await collectionConstructor.create(options);
|
|
1060
1058
|
ObjectRegistry.collectionCache.set(cacheKey, collection);
|
|
1061
1059
|
return collection;
|
|
1062
1060
|
}
|
|
@@ -1125,7 +1123,8 @@ class ObjectRegistry {
|
|
|
1125
1123
|
}
|
|
1126
1124
|
}
|
|
1127
1125
|
if (!registered) {
|
|
1128
|
-
const
|
|
1126
|
+
const testGlobals = globalThis;
|
|
1127
|
+
const isTestEnv = process.env.NODE_ENV === "test" || process.env.VITEST === "true" || typeof testGlobals.describe !== "undefined" || typeof testGlobals.it !== "undefined";
|
|
1129
1128
|
const testHint = isTestEnv ? `
|
|
1130
1129
|
|
|
1131
1130
|
⚠️ Are you using 'smrt test'? Tests require manifest generation.
|
|
@@ -1341,8 +1340,9 @@ See: https://github.com/happyvertical/smrt/issues/131`
|
|
|
1341
1340
|
static async validateWithRules(instance, rules, className) {
|
|
1342
1341
|
const { ValidationError } = await import("./errors.js");
|
|
1343
1342
|
const errors = [];
|
|
1343
|
+
const record = instance;
|
|
1344
1344
|
for (const rule of rules) {
|
|
1345
|
-
const value =
|
|
1345
|
+
const value = record[rule.field];
|
|
1346
1346
|
switch (rule.rule) {
|
|
1347
1347
|
case "required":
|
|
1348
1348
|
if (value === null || value === void 0 || value === "") {
|
|
@@ -2222,9 +2222,7 @@ function smrt(config = {}) {
|
|
|
2222
2222
|
let tableName = config.tableName;
|
|
2223
2223
|
if (!tableName) {
|
|
2224
2224
|
const itemClassName = itemClass.name;
|
|
2225
|
-
const itemReg = ObjectRegistry.getClassByConstructor(
|
|
2226
|
-
itemClass
|
|
2227
|
-
);
|
|
2225
|
+
const itemReg = ObjectRegistry.getClassByConstructor(itemClass);
|
|
2228
2226
|
const itemQualified = itemReg?.qualifiedName ?? itemClassName;
|
|
2229
2227
|
const stiBase = ObjectRegistry.getSTIBase(itemQualified);
|
|
2230
2228
|
if (stiBase && stiBase !== itemQualified) {
|
|
@@ -2238,14 +2236,15 @@ function smrt(config = {}) {
|
|
|
2238
2236
|
}
|
|
2239
2237
|
ObjectRegistry.register(itemClass, { ...config, tableName });
|
|
2240
2238
|
const registeredItemClass = ObjectRegistry.getClass(itemClass.name);
|
|
2241
|
-
|
|
2239
|
+
const collectionCtor = ctor;
|
|
2240
|
+
ObjectRegistry.registerCollection(itemClass.name, collectionCtor);
|
|
2242
2241
|
if (registeredItemClass?.qualifiedName) {
|
|
2243
2242
|
ObjectRegistry.registerCollection(
|
|
2244
2243
|
registeredItemClass.qualifiedName,
|
|
2245
|
-
|
|
2244
|
+
collectionCtor
|
|
2246
2245
|
);
|
|
2247
2246
|
}
|
|
2248
|
-
ObjectRegistry.registerCollection(tableName,
|
|
2247
|
+
ObjectRegistry.registerCollection(tableName, collectionCtor);
|
|
2249
2248
|
ObjectRegistry.setCollectionTableName(ctor.name, tableName);
|
|
2250
2249
|
}
|
|
2251
2250
|
} else {
|
|
@@ -2258,7 +2257,9 @@ function smrt(config = {}) {
|
|
|
2258
2257
|
let proto = Object.getPrototypeOf(ctor);
|
|
2259
2258
|
let stiBaseName = null;
|
|
2260
2259
|
while (proto?.name && proto.name !== "SmrtObject") {
|
|
2261
|
-
const protoReg = ObjectRegistry.getClassByConstructor(
|
|
2260
|
+
const protoReg = ObjectRegistry.getClassByConstructor(
|
|
2261
|
+
proto
|
|
2262
|
+
);
|
|
2262
2263
|
const protoKey = protoReg?.qualifiedName ?? proto.name;
|
|
2263
2264
|
if (ObjectRegistry.getTableStrategy(protoKey) === "sti") {
|
|
2264
2265
|
stiBaseName = ObjectRegistry.getSTIBase(protoKey);
|
|
@@ -2276,7 +2277,9 @@ function smrt(config = {}) {
|
|
|
2276
2277
|
let proto = Object.getPrototypeOf(ctor);
|
|
2277
2278
|
let stiBaseName = null;
|
|
2278
2279
|
while (proto?.name && proto.name !== "SmrtObject") {
|
|
2279
|
-
const protoReg = ObjectRegistry.getClassByConstructor(
|
|
2280
|
+
const protoReg = ObjectRegistry.getClassByConstructor(
|
|
2281
|
+
proto
|
|
2282
|
+
);
|
|
2280
2283
|
const protoKey = protoReg?.qualifiedName ?? proto.name;
|
|
2281
2284
|
if (ObjectRegistry.getTableStrategy(protoKey) === "sti") {
|
|
2282
2285
|
stiBaseName = ObjectRegistry.getSTIBase(protoKey);
|
|
@@ -2292,7 +2295,10 @@ function smrt(config = {}) {
|
|
|
2292
2295
|
}
|
|
2293
2296
|
}
|
|
2294
2297
|
}
|
|
2295
|
-
ObjectRegistry.register(ctor, {
|
|
2298
|
+
ObjectRegistry.register(ctor, {
|
|
2299
|
+
...config,
|
|
2300
|
+
tableName
|
|
2301
|
+
});
|
|
2296
2302
|
applyOneToManyChildAccessors(
|
|
2297
2303
|
ctor,
|
|
2298
2304
|
ObjectRegistry.getRelationships(ctor.name)
|