@futdevpro/fsm-dynamo 1.10.25 → 1.10.27
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/build/_models/control-models/data-model-params.control-model.d.ts +1 -0
- package/build/_models/control-models/data-model-params.control-model.d.ts.map +1 -1
- package/build/_models/control-models/data-model-params.control-model.js +66 -9
- package/build/_models/control-models/data-model-params.control-model.js.map +1 -1
- package/build/_models/control-models/data-model-params.control-model.spec.js +5 -3
- package/build/_models/control-models/data-model-params.control-model.spec.js.map +1 -1
- package/build/_models/control-models/data-property-params.control-model.d.ts +8 -0
- package/build/_models/control-models/data-property-params.control-model.d.ts.map +1 -1
- package/build/_models/control-models/data-property-params.control-model.js +19 -0
- package/build/_models/control-models/data-property-params.control-model.js.map +1 -1
- package/futdevpro-fsm-dynamo-01.10.27.tgz +0 -0
- package/package.json +1 -1
- package/src/_models/control-models/data-model-params.control-model.spec.ts +5 -3
- package/src/_models/control-models/data-model-params.control-model.ts +87 -9
- package/src/_models/control-models/data-property-params.control-model.ts +28 -0
- package/futdevpro-fsm-dynamo-01.10.25.tgz +0 -0
|
@@ -15,6 +15,7 @@ export declare class DyFM_DataModel_Settings<T extends DyFM_Metadata> extends Dy
|
|
|
15
15
|
export type DyFM_Data_P<T> = DyFM_DataModel_Params<T>;
|
|
16
16
|
export type DyFM_Data_Params<T> = DyFM_DataModel_Params<T>;
|
|
17
17
|
export declare class DyFM_DataModel_Params<T extends DyFM_Metadata> extends DyFM_DataModel_Settings<T> {
|
|
18
|
+
readonly stackLocation: string;
|
|
18
19
|
constructor(set: DyFM_DataModel_Settings<T>);
|
|
19
20
|
constructed?(): boolean;
|
|
20
21
|
setKeysForSubObjectParams?(property: DyFM_DataProperty_Params<any>): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-model-params.control-model.d.ts","sourceRoot":"","sources":["../../../src/_models/control-models/data-model-params.control-model.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"data-model-params.control-model.d.ts","sourceRoot":"","sources":["../../../src/_models/control-models/data-model-params.control-model.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAErG,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,uBAAuB,CAAC,CAAC,CAAC,CAAC;AACxD,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,uBAAuB,CAAC,CAAC,CAAC,CAAC;AAC/D,qBAAa,uBAAuB,CAAC,CAAC,SAAS,aAAa,CAAE,SAAQ,aAAa;IACjF;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;CACpC;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAC;AACtD,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAC3D,qBAAa,qBAAqB,CAAC,CAAC,SAAS,aAAa,CAAE,SAAQ,uBAAuB,CAAC,CAAC,CAAC;IAG5F,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;gBAG7B,GAAG,EAAE,uBAAuB,CAAC,CAAC,CAAC;IAiJjC,WAAW,CAAC,IAAI,OAAO;IAIvB,yBAAyB,CAAC,CAAC,QAAQ,EAAE,wBAAwB,CAAC,GAAG,CAAC,GAAG,IAAI;CAmB1E"}
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DyFM_DataModel_Params = exports.DyFM_DataModel_Settings = void 0;
|
|
4
4
|
const log_util_1 = require("../../_collections/utils/log.util");
|
|
5
|
+
const stack_util_1 = require("../../_collections/utils/stack.util");
|
|
6
|
+
const basic_property_type_enum_1 = require("../../_enums/basic-property-type.enum");
|
|
5
7
|
const data_model_type_enum_1 = require("../../_enums/data-model-type.enum");
|
|
6
8
|
const metadata_data_model_1 = require("../data-models/metadata.data-model");
|
|
7
9
|
class DyFM_DataModel_Settings extends metadata_data_model_1.DyFM_Metadata {
|
|
@@ -16,24 +18,76 @@ class DyFM_DataModel_Settings extends metadata_data_model_1.DyFM_Metadata {
|
|
|
16
18
|
exports.DyFM_DataModel_Settings = DyFM_DataModel_Settings;
|
|
17
19
|
class DyFM_DataModel_Params extends DyFM_DataModel_Settings {
|
|
18
20
|
/* override properties?: DyFM_DataProperties<T>; */
|
|
21
|
+
stackLocation;
|
|
19
22
|
constructor(set) {
|
|
20
23
|
super(set);
|
|
21
24
|
if (set) {
|
|
22
25
|
Object.assign(this, set);
|
|
23
26
|
}
|
|
27
|
+
this.stackLocation = (0, stack_util_1.DyFM_getStackLocation)();
|
|
24
28
|
if (!this.properties || typeof this.properties !== 'object') {
|
|
25
29
|
log_util_1.DyFM_Log.error('DyFM_DataModel_Params.constructor: ' +
|
|
26
|
-
`Properties are missing in "${this.dataName}" model.`
|
|
30
|
+
`Properties are missing in "${this.dataName}" model.` +
|
|
31
|
+
`\nstackLocation: ${this.stackLocation}`);
|
|
27
32
|
this.properties = {};
|
|
28
33
|
}
|
|
29
|
-
Object.keys(this.properties)
|
|
34
|
+
const keys = Object.keys(this.properties);
|
|
35
|
+
keys.forEach((key) => {
|
|
30
36
|
if (!key) {
|
|
31
37
|
log_util_1.DyFM_Log.error('DyFM_DataModel_Params.constructor: ' +
|
|
32
|
-
`A property key is missing in "${this.dataName}" model.`
|
|
38
|
+
`A property key is missing in "${this.dataName}" model.` +
|
|
39
|
+
`\nstackLocation: ${this.stackLocation}`);
|
|
33
40
|
}
|
|
34
|
-
this.properties[key]
|
|
35
|
-
|
|
36
|
-
|
|
41
|
+
const property = this.properties[key];
|
|
42
|
+
property.key = key;
|
|
43
|
+
if (property.subObjectParams) {
|
|
44
|
+
this.setKeysForSubObjectParams(property);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
keys.forEach((key) => {
|
|
48
|
+
const property = this.properties[key];
|
|
49
|
+
/* if (property.vectorizeTo) {
|
|
50
|
+
if (!this.properties[property.vectorizeTo]) {
|
|
51
|
+
throw new Error(
|
|
52
|
+
`Vectorize to property "${property.vectorizeTo}" is not found in ` +
|
|
53
|
+
`"${this.dataName}" model.`
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
this.properties[property.vectorizeTo].vectorizeFrom ??= key;
|
|
58
|
+
} */
|
|
59
|
+
if (property.vectorizedFrom) {
|
|
60
|
+
if (!this.properties[property.vectorizedFrom]) {
|
|
61
|
+
throw new Error(`Vectorized from property "${property.vectorizedFrom}" is not found in ` +
|
|
62
|
+
`"${this.dataName}" model.` +
|
|
63
|
+
`\nstackLocation: ${this.stackLocation}`);
|
|
64
|
+
}
|
|
65
|
+
/* this.properties[property.vectorizedFrom].vectorizeTo ??= key; */
|
|
66
|
+
if (property.type !== 'number[]') {
|
|
67
|
+
throw new Error(`Vectorized from property "${property.vectorizedFrom}" is not a number[] property in ` +
|
|
68
|
+
`"${this.dataName}" model.` +
|
|
69
|
+
`\nstackLocation: ${this.stackLocation}`);
|
|
70
|
+
}
|
|
71
|
+
if (this.properties[property.vectorizedFrom].type !== basic_property_type_enum_1.DyFM_BasicProperty_Type.string) {
|
|
72
|
+
throw new Error(`Vectorized from property "${property.vectorizedFrom}" is not a string property in ` +
|
|
73
|
+
`"${this.dataName}" model.` +
|
|
74
|
+
`\nstackLocation: ${this.stackLocation}`);
|
|
75
|
+
}
|
|
76
|
+
if (!property.vectorizeUseIndex) {
|
|
77
|
+
throw new Error('vectorizeUseIndex is required if vectorizedFrom is set. ' +
|
|
78
|
+
`"${this.dataName}" model.` +
|
|
79
|
+
`\nstackLocation: ${this.stackLocation}`);
|
|
80
|
+
}
|
|
81
|
+
if (!this.properties[property.vectorizeUseIndex]) {
|
|
82
|
+
throw new Error(`vectorizeUseIndex property "${property.vectorizeUseIndex}" is not found in ` +
|
|
83
|
+
`"${this.dataName}" model.` +
|
|
84
|
+
`\nstackLocation: ${this.stackLocation}`);
|
|
85
|
+
}
|
|
86
|
+
if (!this.properties[property.vectorizeUseIndex].index) {
|
|
87
|
+
throw new Error(`vectorizeUseIndex property "${property.vectorizeUseIndex}" is not an ` +
|
|
88
|
+
`index property in "${this.dataName}" model.` +
|
|
89
|
+
`\nstackLocation: ${this.stackLocation}`);
|
|
90
|
+
}
|
|
37
91
|
}
|
|
38
92
|
});
|
|
39
93
|
if (!this?.modelType || this?.modelType == data_model_type_enum_1.DyFM_DataModel_Type.data) {
|
|
@@ -59,12 +113,14 @@ class DyFM_DataModel_Params extends DyFM_DataModel_Settings {
|
|
|
59
113
|
if (RegExp(/[A-Z]/).exec(this.dataName)) {
|
|
60
114
|
log_util_1.DyFM_Log.warn('DyFM_DataModel_Params.constructor: ' +
|
|
61
115
|
`dbName should be in snake_case in "${this.dataName}" model.` +
|
|
62
|
-
'For future compatibility.'
|
|
116
|
+
'For future compatibility.' +
|
|
117
|
+
`\nstackLocation: ${this.stackLocation}`);
|
|
63
118
|
}
|
|
64
119
|
if (this.dataName.includes('-')) {
|
|
65
120
|
log_util_1.DyFM_Log.warn('DyFM_DataModel_Params.constructor: ' +
|
|
66
121
|
`dataName should be in snake_case in "${this.dataName}" model.` +
|
|
67
|
-
'For future compatibility.'
|
|
122
|
+
'For future compatibility.' +
|
|
123
|
+
`\nstackLocation: ${this.stackLocation}`);
|
|
68
124
|
}
|
|
69
125
|
}
|
|
70
126
|
constructed() {
|
|
@@ -75,7 +131,8 @@ class DyFM_DataModel_Params extends DyFM_DataModel_Settings {
|
|
|
75
131
|
Object.keys(property.subObjectParams).forEach((key) => {
|
|
76
132
|
if (!key) {
|
|
77
133
|
log_util_1.DyFM_Log.error('DyFM_DataModel_Params.setKeysForSubObjectParams: ' +
|
|
78
|
-
`A subObjectParams key is missing in "${this.dataName}" model.`
|
|
134
|
+
`A subObjectParams key is missing in "${this.dataName}" model.` +
|
|
135
|
+
`\nstackLocation: ${this.stackLocation}`);
|
|
79
136
|
}
|
|
80
137
|
property.subObjectParams[key].key = key;
|
|
81
138
|
if (property.subObjectParams[key].subObjectParams) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-model-params.control-model.js","sourceRoot":"","sources":["../../../src/_models/control-models/data-model-params.control-model.ts"],"names":[],"mappings":";;;AAAA,gEAA6D;AAC7D,4EAAwE;AACxE,4EAAmE;AAKnE,MAAa,uBAAiD,SAAQ,mCAAa;IACjF;;OAEG;IACH,QAAQ,CAAS;IACjB,SAAS,CAAuB;IAChC,UAAU,CAAW;IACrB,UAAU,CAAyB;CACpC;AARD,0DAQC;AAID,MAAa,qBAA+C,SAAQ,uBAA0B;IAE5F,mDAAmD;
|
|
1
|
+
{"version":3,"file":"data-model-params.control-model.js","sourceRoot":"","sources":["../../../src/_models/control-models/data-model-params.control-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,14 +23,16 @@ describe('DyFM_DataModel_Params', () => {
|
|
|
23
23
|
spyOn(log_util_1.DyFM_Log, 'error');
|
|
24
24
|
mockSettings.properties = null;
|
|
25
25
|
const params = new data_model_params_control_model_1.DyFM_DataModel_Params(mockSettings);
|
|
26
|
-
expect(log_util_1.DyFM_Log.error).toHaveBeenCalledWith('DyFM_DataModel_Params.constructor: Properties are missing in "test_model" model.'
|
|
26
|
+
expect(log_util_1.DyFM_Log.error).toHaveBeenCalledWith('DyFM_DataModel_Params.constructor: Properties are missing in "test_model" model.' +
|
|
27
|
+
`\nstackLocation: ${params.stackLocation}`);
|
|
27
28
|
expect(params.properties).toEqual({});
|
|
28
29
|
});
|
|
29
30
|
it('should log an error if a property key is missing', () => {
|
|
30
31
|
spyOn(log_util_1.DyFM_Log, 'error');
|
|
31
32
|
mockSettings.properties = { '': { key: '' } };
|
|
32
|
-
new data_model_params_control_model_1.DyFM_DataModel_Params(mockSettings);
|
|
33
|
-
expect(log_util_1.DyFM_Log.error).toHaveBeenCalledWith('DyFM_DataModel_Params.constructor: A property key is missing in "test_model" model.'
|
|
33
|
+
const params = new data_model_params_control_model_1.DyFM_DataModel_Params(mockSettings);
|
|
34
|
+
expect(log_util_1.DyFM_Log.error).toHaveBeenCalledWith('DyFM_DataModel_Params.constructor: A property key is missing in "test_model" model.' +
|
|
35
|
+
`\nstackLocation: ${params.stackLocation}`);
|
|
34
36
|
});
|
|
35
37
|
it('should set modelType to data if not provided or is data', () => {
|
|
36
38
|
const params = new data_model_params_control_model_1.DyFM_DataModel_Params(mockSettings);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-model-params.control-model.spec.js","sourceRoot":"","sources":["../../../src/_models/control-models/data-model-params.control-model.spec.ts"],"names":[],"mappings":";;AAAA,gEAA6D;AAC7D,4EAAwE;AACxE,4EAAmE;AACnE,uFAAmG;AAGnG,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,MAAM,YAAa,SAAQ,mCAAa;KAEvC;IAED,IAAI,YAAmD,CAAC;IAExD,UAAU,CAAC,GAAG,EAAE;QACd,YAAY,GAAG;YACb,QAAQ,EAAE,YAAY;YACtB,UAAU,EAAE,EAAuC;SACpD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,MAAM,GAAG,IAAI,uDAAqB,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,KAAK,CAAC,mBAAQ,EAAE,OAAO,CAAC,CAAC;QACzB,YAAY,CAAC,UAAU,GAAG,IAAW,CAAC;QACtC,MAAM,MAAM,GAAG,IAAI,uDAAqB,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,CAAC,mBAAQ,CAAC,KAAK,CAAC,CAAC,oBAAoB,CACzC,kFAAkF,
|
|
1
|
+
{"version":3,"file":"data-model-params.control-model.spec.js","sourceRoot":"","sources":["../../../src/_models/control-models/data-model-params.control-model.spec.ts"],"names":[],"mappings":";;AAAA,gEAA6D;AAC7D,4EAAwE;AACxE,4EAAmE;AACnE,uFAAmG;AAGnG,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,MAAM,YAAa,SAAQ,mCAAa;KAEvC;IAED,IAAI,YAAmD,CAAC;IAExD,UAAU,CAAC,GAAG,EAAE;QACd,YAAY,GAAG;YACb,QAAQ,EAAE,YAAY;YACtB,UAAU,EAAE,EAAuC;SACpD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,MAAM,GAAG,IAAI,uDAAqB,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,KAAK,CAAC,mBAAQ,EAAE,OAAO,CAAC,CAAC;QACzB,YAAY,CAAC,UAAU,GAAG,IAAW,CAAC;QACtC,MAAM,MAAM,GAAG,IAAI,uDAAqB,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,CAAC,mBAAQ,CAAC,KAAK,CAAC,CAAC,oBAAoB,CACzC,kFAAkF;YAClF,oBAAoB,MAAM,CAAC,aAAa,EAAE,CAC3C,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,KAAK,CAAC,mBAAQ,EAAE,OAAO,CAAC,CAAC;QACzB,YAAY,CAAC,UAAU,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAS,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,uDAAqB,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,CAAC,mBAAQ,CAAC,KAAK,CAAC,CAAC,oBAAoB,CACzC,qFAAqF;YACrF,oBAAoB,MAAM,CAAC,aAAa,EAAE,CAC3C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,MAAM,GAAG,IAAI,uDAAqB,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,0CAAmB,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,MAAM,GAAG,IAAI,uDAAqB,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { DyFM_BasicProperty_Type } from '../../_enums/basic-property-type.enum';
|
|
2
|
+
import { DyFM_OpenAIModel } from '../../_modules/open-ai/_enums/open-ai-model.enum';
|
|
2
3
|
export type DyFM_DataProperties<T> = {
|
|
3
4
|
[K in keyof T]: DyFM_DataProperty_Params<T[K]>;
|
|
4
5
|
};
|
|
@@ -22,6 +23,13 @@ export declare class DyFM_DataProperty_Settings<T> {
|
|
|
22
23
|
dependencyDataName?: string;
|
|
23
24
|
archiveable?: boolean;
|
|
24
25
|
archiveListAfter?: number;
|
|
26
|
+
vectorizedFrom?: string;
|
|
27
|
+
embeddingModel?: DyFM_OpenAIModel;
|
|
28
|
+
/**
|
|
29
|
+
* If true, the property will be vectorized always, even if the property is already vectorized.
|
|
30
|
+
*/
|
|
31
|
+
vectorizeAlways?: boolean;
|
|
32
|
+
vectorizeUseIndex?: string;
|
|
25
33
|
minlength?: number;
|
|
26
34
|
maxlength?: number;
|
|
27
35
|
subObjectParams?: DyFM_DataProperties<any>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-property-params.control-model.d.ts","sourceRoot":"","sources":["../../../src/_models/control-models/data-property-params.control-model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"data-property-params.control-model.d.ts","sourceRoot":"","sources":["../../../src/_models/control-models/data-property-params.control-model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AAEpF,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI;KAClC,CAAC,IAAI,MAAM,CAAC,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC/C,CAAA;AAED,MAAM,MAAM,yBAAyB,CAAC,CAAC,GAAG,GAAG,IAAI,0BAA0B,CAAC,CAAC,CAAC,CAAC;AAE/E,qBAAa,0BAA0B,CAAC,CAAC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,uBAAuB,GAAG,MAAM,CAAC;IACvC,OAAO,CAAC,EAAE,CAAC,CAAC;IAEZ,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAGhB;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAClC;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,eAAe,CAAC,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAE3C,oBAAoB,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,KAAiB,IAAI,CAAC,EAAE,CAAC;CAC5D;AAGD,MAAM,MAAM,uBAAuB,CAAC,CAAC,IAAI,wBAAwB,CAAC,CAAC,CAAC,CAAC;AACrE,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,wBAAwB,CAAC,CAAC,CAAC,CAAC;AAC1D;;;GAGG;AACH,qBAAa,wBAAwB,CAAC,CAAC,CAAE,SAAQ,0BAA0B,CAAC,CAAC,CAAC;IAKnE,oBAAoB,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC,EAAE,CAAM;gBAG3D,GAAG,EAAE,0BAA0B,CAAC,CAAC,CAAC;IAuDpC,WAAW,CAAC,IAAI,OAAO;IAKvB,SAAS,CAAC,IAAI,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI;CAyBhF"}
|
|
@@ -23,6 +23,14 @@ class DyFM_DataProperty_Settings {
|
|
|
23
23
|
dependencyDataName;
|
|
24
24
|
archiveable;
|
|
25
25
|
archiveListAfter;
|
|
26
|
+
vectorizedFrom;
|
|
27
|
+
/* vectorizeTo?: string; */
|
|
28
|
+
embeddingModel;
|
|
29
|
+
/**
|
|
30
|
+
* If true, the property will be vectorized always, even if the property is already vectorized.
|
|
31
|
+
*/
|
|
32
|
+
vectorizeAlways;
|
|
33
|
+
vectorizeUseIndex;
|
|
26
34
|
minlength;
|
|
27
35
|
maxlength;
|
|
28
36
|
subObjectParams;
|
|
@@ -53,6 +61,17 @@ class DyFM_DataProperty_Params extends DyFM_DataProperty_Settings {
|
|
|
53
61
|
set.required = true;
|
|
54
62
|
}
|
|
55
63
|
}
|
|
64
|
+
if (set.vectorizedFrom) {
|
|
65
|
+
if (set.index) {
|
|
66
|
+
log_util_1.DyFM_Log.warn('DYNAMO WARNING: ', '\n vectorizedFrom and index are not recommended to be set at the same time. ' +
|
|
67
|
+
`It will be set to false by while you are not setting it.`);
|
|
68
|
+
set.index = false;
|
|
69
|
+
}
|
|
70
|
+
if (!set.vectorizeUseIndex) {
|
|
71
|
+
throw new Error('vectorizeUseIndex is required if vectorizedFrom is set. ' +
|
|
72
|
+
`"${this.key}" property.`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
56
75
|
Object.assign(this, set);
|
|
57
76
|
}
|
|
58
77
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-property-params.control-model.js","sourceRoot":"","sources":["../../../src/_models/control-models/data-property-params.control-model.ts"],"names":[],"mappings":";;;AAAA,gEAA6D;AAC7D,oFAAgF;
|
|
1
|
+
{"version":3,"file":"data-property-params.control-model.js","sourceRoot":"","sources":["../../../src/_models/control-models/data-property-params.control-model.ts"],"names":[],"mappings":"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"}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@futdevpro/fsm-dynamo",
|
|
3
|
-
"version": "01.10.
|
|
3
|
+
"version": "01.10.27",
|
|
4
4
|
"description": "Full Stack Model Collection for Dynamic (NodeJS-Typescript) Framework called Dynamo, by Future Development Ltd.",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"prep": "npm i pnpm -g && npm i rimraf nodemon -g",
|
|
@@ -29,7 +29,8 @@ describe('DyFM_DataModel_Params', () => {
|
|
|
29
29
|
mockSettings.properties = null as any;
|
|
30
30
|
const params = new DyFM_DataModel_Params(mockSettings);
|
|
31
31
|
expect(DyFM_Log.error).toHaveBeenCalledWith(
|
|
32
|
-
'DyFM_DataModel_Params.constructor: Properties are missing in "test_model" model.'
|
|
32
|
+
'DyFM_DataModel_Params.constructor: Properties are missing in "test_model" model.' +
|
|
33
|
+
`\nstackLocation: ${params.stackLocation}`
|
|
33
34
|
);
|
|
34
35
|
expect(params.properties).toEqual({});
|
|
35
36
|
});
|
|
@@ -37,9 +38,10 @@ describe('DyFM_DataModel_Params', () => {
|
|
|
37
38
|
it('should log an error if a property key is missing', () => {
|
|
38
39
|
spyOn(DyFM_Log, 'error');
|
|
39
40
|
mockSettings.properties = { '': { key: '' } } as any;
|
|
40
|
-
new DyFM_DataModel_Params(mockSettings);
|
|
41
|
+
const params = new DyFM_DataModel_Params(mockSettings);
|
|
41
42
|
expect(DyFM_Log.error).toHaveBeenCalledWith(
|
|
42
|
-
'DyFM_DataModel_Params.constructor: A property key is missing in "test_model" model.'
|
|
43
|
+
'DyFM_DataModel_Params.constructor: A property key is missing in "test_model" model.' +
|
|
44
|
+
`\nstackLocation: ${params.stackLocation}`
|
|
43
45
|
);
|
|
44
46
|
});
|
|
45
47
|
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { DyFM_Log } from '../../_collections/utils/log.util';
|
|
2
|
+
import { DyFM_getStackLocation } from '../../_collections/utils/stack.util';
|
|
3
|
+
import { DyFM_BasicProperty_Type } from '../../_enums/basic-property-type.enum';
|
|
2
4
|
import { DyFM_DataModel_Type } from '../../_enums/data-model-type.enum';
|
|
3
5
|
import { DyFM_Metadata } from '../data-models/metadata.data-model';
|
|
4
6
|
import { DyFM_DataProperties, DyFM_DataProperty_Params } from './data-property-params.control-model';
|
|
@@ -20,6 +22,7 @@ export type DyFM_Data_Params<T> = DyFM_DataModel_Params<T>;
|
|
|
20
22
|
export class DyFM_DataModel_Params<T extends DyFM_Metadata> extends DyFM_DataModel_Settings<T> {
|
|
21
23
|
|
|
22
24
|
/* override properties?: DyFM_DataProperties<T>; */
|
|
25
|
+
readonly stackLocation: string;
|
|
23
26
|
|
|
24
27
|
constructor(
|
|
25
28
|
set: DyFM_DataModel_Settings<T>
|
|
@@ -30,27 +33,99 @@ export class DyFM_DataModel_Params<T extends DyFM_Metadata> extends DyFM_DataMod
|
|
|
30
33
|
Object.assign(this, set);
|
|
31
34
|
}
|
|
32
35
|
|
|
36
|
+
this.stackLocation = DyFM_getStackLocation();
|
|
37
|
+
|
|
33
38
|
if (!this.properties || typeof this.properties !== 'object') {
|
|
34
39
|
DyFM_Log.error(
|
|
35
40
|
'DyFM_DataModel_Params.constructor: ' +
|
|
36
|
-
`Properties are missing in "${this.dataName}" model.`
|
|
41
|
+
`Properties are missing in "${this.dataName}" model.` +
|
|
42
|
+
`\nstackLocation: ${this.stackLocation}`
|
|
37
43
|
);
|
|
38
44
|
|
|
39
45
|
this.properties = {} as DyFM_DataProperties<T>;
|
|
40
46
|
}
|
|
41
47
|
|
|
42
|
-
Object.keys(this.properties)
|
|
48
|
+
const keys: string[] = Object.keys(this.properties);
|
|
49
|
+
keys.forEach((key: string): void => {
|
|
43
50
|
if (!key) {
|
|
44
51
|
DyFM_Log.error(
|
|
45
52
|
'DyFM_DataModel_Params.constructor: ' +
|
|
46
|
-
`A property key is missing in "${this.dataName}" model.`
|
|
53
|
+
`A property key is missing in "${this.dataName}" model.` +
|
|
54
|
+
`\nstackLocation: ${this.stackLocation}`
|
|
47
55
|
);
|
|
48
56
|
}
|
|
49
57
|
|
|
50
|
-
this.properties[key]
|
|
58
|
+
const property: DyFM_DataProperty_Params<any> = this.properties[key];
|
|
59
|
+
property.key = key;
|
|
60
|
+
|
|
61
|
+
if (property.subObjectParams) {
|
|
62
|
+
this.setKeysForSubObjectParams(property);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
keys.forEach((key: string): void => {
|
|
67
|
+
const property: DyFM_DataProperty_Params<any> = this.properties[key];
|
|
68
|
+
/* if (property.vectorizeTo) {
|
|
69
|
+
if (!this.properties[property.vectorizeTo]) {
|
|
70
|
+
throw new Error(
|
|
71
|
+
`Vectorize to property "${property.vectorizeTo}" is not found in ` +
|
|
72
|
+
`"${this.dataName}" model.`
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
this.properties[property.vectorizeTo].vectorizeFrom ??= key;
|
|
77
|
+
} */
|
|
78
|
+
|
|
79
|
+
if (property.vectorizedFrom) {
|
|
80
|
+
if (!this.properties[property.vectorizedFrom]) {
|
|
81
|
+
throw new Error(
|
|
82
|
+
`Vectorized from property "${property.vectorizedFrom}" is not found in ` +
|
|
83
|
+
`"${this.dataName}" model.` +
|
|
84
|
+
`\nstackLocation: ${this.stackLocation}`
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/* this.properties[property.vectorizedFrom].vectorizeTo ??= key; */
|
|
89
|
+
|
|
90
|
+
if (property.type !== 'number[]') {
|
|
91
|
+
throw new Error(
|
|
92
|
+
`Vectorized from property "${property.vectorizedFrom}" is not a number[] property in ` +
|
|
93
|
+
`"${this.dataName}" model.` +
|
|
94
|
+
`\nstackLocation: ${this.stackLocation}`
|
|
95
|
+
);
|
|
96
|
+
}
|
|
51
97
|
|
|
52
|
-
|
|
53
|
-
|
|
98
|
+
if ((this.properties[property.vectorizedFrom] as DyFM_DataProperty_Params<any>).type !== DyFM_BasicProperty_Type.string) {
|
|
99
|
+
throw new Error(
|
|
100
|
+
`Vectorized from property "${property.vectorizedFrom}" is not a string property in ` +
|
|
101
|
+
`"${this.dataName}" model.` +
|
|
102
|
+
`\nstackLocation: ${this.stackLocation}`
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
if (!property.vectorizeUseIndex) {
|
|
107
|
+
throw new Error(
|
|
108
|
+
'vectorizeUseIndex is required if vectorizedFrom is set. ' +
|
|
109
|
+
`"${this.dataName}" model.` +
|
|
110
|
+
`\nstackLocation: ${this.stackLocation}`
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
if (!this.properties[property.vectorizeUseIndex]) {
|
|
115
|
+
throw new Error(
|
|
116
|
+
`vectorizeUseIndex property "${property.vectorizeUseIndex}" is not found in ` +
|
|
117
|
+
`"${this.dataName}" model.` +
|
|
118
|
+
`\nstackLocation: ${this.stackLocation}`
|
|
119
|
+
);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
if (!(this.properties[property.vectorizeUseIndex] as DyFM_DataProperty_Params<any>).index) {
|
|
123
|
+
throw new Error(
|
|
124
|
+
`vectorizeUseIndex property "${property.vectorizeUseIndex}" is not an ` +
|
|
125
|
+
`index property in "${this.dataName}" model.` +
|
|
126
|
+
`\nstackLocation: ${this.stackLocation}`
|
|
127
|
+
);
|
|
128
|
+
}
|
|
54
129
|
}
|
|
55
130
|
});
|
|
56
131
|
|
|
@@ -80,7 +155,8 @@ export class DyFM_DataModel_Params<T extends DyFM_Metadata> extends DyFM_DataMod
|
|
|
80
155
|
DyFM_Log.warn(
|
|
81
156
|
'DyFM_DataModel_Params.constructor: ' +
|
|
82
157
|
`dbName should be in snake_case in "${this.dataName}" model.` +
|
|
83
|
-
'For future compatibility.'
|
|
158
|
+
'For future compatibility.' +
|
|
159
|
+
`\nstackLocation: ${this.stackLocation}`
|
|
84
160
|
);
|
|
85
161
|
}
|
|
86
162
|
|
|
@@ -88,7 +164,8 @@ export class DyFM_DataModel_Params<T extends DyFM_Metadata> extends DyFM_DataMod
|
|
|
88
164
|
DyFM_Log.warn(
|
|
89
165
|
'DyFM_DataModel_Params.constructor: ' +
|
|
90
166
|
`dataName should be in snake_case in "${this.dataName}" model.` +
|
|
91
|
-
'For future compatibility.'
|
|
167
|
+
'For future compatibility.' +
|
|
168
|
+
`\nstackLocation: ${this.stackLocation}`
|
|
92
169
|
);
|
|
93
170
|
}
|
|
94
171
|
}
|
|
@@ -103,7 +180,8 @@ export class DyFM_DataModel_Params<T extends DyFM_Metadata> extends DyFM_DataMod
|
|
|
103
180
|
if (!key) {
|
|
104
181
|
DyFM_Log.error(
|
|
105
182
|
'DyFM_DataModel_Params.setKeysForSubObjectParams: ' +
|
|
106
|
-
`A subObjectParams key is missing in "${this.dataName}" model.`
|
|
183
|
+
`A subObjectParams key is missing in "${this.dataName}" model.` +
|
|
184
|
+
`\nstackLocation: ${this.stackLocation}`
|
|
107
185
|
);
|
|
108
186
|
}
|
|
109
187
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { DyFM_Log } from '../../_collections/utils/log.util';
|
|
2
2
|
import { DyFM_BasicProperty_Type } from '../../_enums/basic-property-type.enum';
|
|
3
|
+
import { DyFM_OpenAIModel } from '../../_modules/open-ai/_enums/open-ai-model.enum';
|
|
3
4
|
|
|
4
5
|
export type DyFM_DataProperties<T> = {
|
|
5
6
|
[K in keyof T]: DyFM_DataProperty_Params<T[K]>;
|
|
@@ -30,6 +31,15 @@ export class DyFM_DataProperty_Settings<T>{
|
|
|
30
31
|
archiveable?: boolean;
|
|
31
32
|
archiveListAfter?: number;
|
|
32
33
|
|
|
34
|
+
vectorizedFrom?: string;
|
|
35
|
+
/* vectorizeTo?: string; */
|
|
36
|
+
embeddingModel?: DyFM_OpenAIModel;
|
|
37
|
+
/**
|
|
38
|
+
* If true, the property will be vectorized always, even if the property is already vectorized.
|
|
39
|
+
*/
|
|
40
|
+
vectorizeAlways?: boolean;
|
|
41
|
+
vectorizeUseIndex?: string;
|
|
42
|
+
|
|
33
43
|
minlength?: number;
|
|
34
44
|
maxlength?: number;
|
|
35
45
|
|
|
@@ -80,6 +90,24 @@ export class DyFM_DataProperty_Params<T> extends DyFM_DataProperty_Settings<T> {
|
|
|
80
90
|
set.required = true;
|
|
81
91
|
}
|
|
82
92
|
}
|
|
93
|
+
|
|
94
|
+
if (set.vectorizedFrom) {
|
|
95
|
+
if (set.index) {
|
|
96
|
+
DyFM_Log.warn(
|
|
97
|
+
'DYNAMO WARNING: ',
|
|
98
|
+
'\n vectorizedFrom and index are not recommended to be set at the same time. ' +
|
|
99
|
+
`It will be set to false by while you are not setting it.`
|
|
100
|
+
);
|
|
101
|
+
set.index = false;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
if (!set.vectorizeUseIndex) {
|
|
105
|
+
throw new Error(
|
|
106
|
+
'vectorizeUseIndex is required if vectorizedFrom is set. ' +
|
|
107
|
+
`"${this.key}" property.`
|
|
108
|
+
);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
83
111
|
|
|
84
112
|
Object.assign(this, set);
|
|
85
113
|
} else {
|
|
Binary file
|