@akanjs/constant 0.9.48 → 0.9.49
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/cjs/src/baseGql.js +124 -122
- package/cjs/src/classMeta.js +12 -117
- package/cjs/src/constantInfo.js +145 -0
- package/cjs/src/crystalize.js +89 -0
- package/cjs/src/default.js +67 -0
- package/cjs/src/fieldInfo.js +98 -0
- package/cjs/src/immerify.js +35 -0
- package/cjs/src/index.js +6 -11
- package/cjs/src/purify.js +110 -0
- package/cjs/src/scalar.js +8 -12
- package/cjs/src/serialize.js +116 -0
- package/esm/src/baseGql.js +129 -132
- package/esm/src/classMeta.js +13 -118
- package/esm/src/constantInfo.js +126 -0
- package/esm/src/crystalize.js +78 -0
- package/esm/src/default.js +48 -0
- package/esm/src/fieldInfo.js +88 -0
- package/esm/src/immerify.js +16 -0
- package/esm/src/index.js +6 -7
- package/esm/src/purify.js +99 -0
- package/esm/src/scalar.js +8 -12
- package/esm/src/serialize.js +106 -0
- package/package.json +2 -1
- package/src/baseGql.d.ts +8 -4
- package/src/classMeta.d.ts +5 -21
- package/src/constantInfo.d.ts +69 -0
- package/src/crystalize.d.ts +6 -0
- package/src/default.d.ts +6 -0
- package/src/fieldInfo.d.ts +37 -0
- package/src/immerify.d.ts +2 -0
- package/src/index.d.ts +6 -5
- package/src/purify.d.ts +14 -0
- package/src/scalar.d.ts +16 -46
- package/src/serialize.d.ts +7 -0
- package/src/types.d.ts +3 -23
- package/cjs/src/constantDecorator.js +0 -67
- package/cjs/src/fieldMeta.js +0 -82
- package/cjs/src/filterMeta.js +0 -196
- package/esm/src/constantDecorator.js +0 -48
- package/esm/src/fieldMeta.js +0 -67
- package/esm/src/filterMeta.js +0 -181
- package/src/constantDecorator.d.ts +0 -30
- package/src/fieldMeta.d.ts +0 -7
- package/src/filterMeta.d.ts +0 -61
package/cjs/src/baseGql.js
CHANGED
|
@@ -17,7 +17,6 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
17
17
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
18
|
var baseGql_exports = {};
|
|
19
19
|
__export(baseGql_exports, {
|
|
20
|
-
as: () => as,
|
|
21
20
|
via: () => via
|
|
22
21
|
});
|
|
23
22
|
module.exports = __toCommonJS(baseGql_exports);
|
|
@@ -25,7 +24,8 @@ var import_reflect_metadata = require("reflect-metadata");
|
|
|
25
24
|
var import_base = require("@akanjs/base");
|
|
26
25
|
var import_common = require("@akanjs/common");
|
|
27
26
|
var import_classMeta = require("./classMeta");
|
|
28
|
-
var
|
|
27
|
+
var import_constantInfo = require("./constantInfo");
|
|
28
|
+
var import_fieldInfo = require("./fieldInfo");
|
|
29
29
|
var import_scalar = require("./scalar");
|
|
30
30
|
const defaultFieldMeta = {
|
|
31
31
|
fieldType: "property",
|
|
@@ -41,162 +41,164 @@ const defaultFieldMeta = {
|
|
|
41
41
|
isMap: false,
|
|
42
42
|
meta: {}
|
|
43
43
|
};
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
...defaultFieldMeta,
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
modelRef:
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
const extendModel = (modelRef) => {
|
|
56
|
-
class BaseModel {
|
|
57
|
-
}
|
|
58
|
-
const metadataMap = (0, import_scalar.getFieldMetaMap)(modelRef);
|
|
59
|
-
(0, import_scalar.setFieldMetaMap)(BaseModel, metadataMap);
|
|
60
|
-
return BaseModel;
|
|
61
|
-
};
|
|
62
|
-
const as = extendModel;
|
|
63
|
-
const baseModelOf = (modelRef) => {
|
|
64
|
-
class BaseModel {
|
|
65
|
-
__ModelType__ = "full";
|
|
44
|
+
const baseFieldMetaMap = /* @__PURE__ */ new Map([
|
|
45
|
+
["id", { ...defaultFieldMeta, key: "id", modelRef: import_base.ID }],
|
|
46
|
+
["createdAt", { ...defaultFieldMeta, key: "createdAt", modelRef: Date }],
|
|
47
|
+
["updatedAt", { ...defaultFieldMeta, key: "updatedAt", modelRef: Date }],
|
|
48
|
+
["removedAt", { ...defaultFieldMeta, key: "removedAt", modelRef: Date, nullable: true, default: null }]
|
|
49
|
+
]);
|
|
50
|
+
const baseInsightFieldMetaMap = /* @__PURE__ */ new Map([
|
|
51
|
+
["count", { ...defaultFieldMeta, key: "count", modelRef: import_base.Int, default: 0, accumulate: { $sum: 1 } }]
|
|
52
|
+
]);
|
|
53
|
+
const objectModelOf = (inputRef, fieldMap) => {
|
|
54
|
+
class ObjectModel {
|
|
66
55
|
}
|
|
67
|
-
const metadataMap = new Map((0, import_scalar.getFieldMetaMap)(
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
56
|
+
const metadataMap = new Map([...baseFieldMetaMap, ...(0, import_scalar.getFieldMetaMap)(inputRef)]);
|
|
57
|
+
(0, import_scalar.setFieldMetaMap)(ObjectModel, metadataMap);
|
|
58
|
+
(0, import_classMeta.setExtendRef)(ObjectModel, inputRef);
|
|
59
|
+
import_constantInfo.constantInfo.setModelType(ObjectModel, "object");
|
|
60
|
+
Object.entries(fieldMap).forEach(([key, fieldInfo]) => {
|
|
61
|
+
fieldInfo.applyFieldMeta(ObjectModel, key);
|
|
62
|
+
});
|
|
63
|
+
return ObjectModel;
|
|
74
64
|
};
|
|
75
|
-
const lightModelOf = (objectRef, fields, ...libLightModelRefs) => {
|
|
65
|
+
const lightModelOf = (objectRef, fields, fieldMap, ...libLightModelRefs) => {
|
|
76
66
|
const objectFieldMetaMap = (0, import_scalar.getFieldMetaMap)(objectRef);
|
|
77
67
|
const baseLightModelRef = libLightModelRefs.at(0);
|
|
78
|
-
const fieldMetaMap = baseLightModelRef ? (0, import_scalar.getFieldMetaMap)(baseLightModelRef) :
|
|
68
|
+
const fieldMetaMap = baseLightModelRef ? (0, import_scalar.getFieldMetaMap)(baseLightModelRef) : new Map([...baseFieldMetaMap]);
|
|
79
69
|
class BaseLightModel {
|
|
80
|
-
__ModelType__ = "light";
|
|
81
70
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
fieldMetaMap.set("updatedAt", updatedAtFieldMeta);
|
|
85
|
-
fieldMetaMap.set("removedAt", removedAtFieldMeta);
|
|
86
|
-
for (const field of fields) {
|
|
87
|
-
const fieldMeta = objectFieldMetaMap.get(field);
|
|
71
|
+
for (const field2 of fields) {
|
|
72
|
+
const fieldMeta = objectFieldMetaMap.get(field2);
|
|
88
73
|
if (!fieldMeta)
|
|
89
|
-
throw new Error(`Field ${
|
|
90
|
-
fieldMetaMap.set(
|
|
74
|
+
throw new Error(`Field ${field2} not found in objectRef`);
|
|
75
|
+
fieldMetaMap.set(field2, fieldMeta);
|
|
91
76
|
}
|
|
92
77
|
(0, import_common.applyMixins)(BaseLightModel, libLightModelRefs);
|
|
93
|
-
|
|
78
|
+
(0, import_scalar.setFieldMetaMap)(BaseLightModel, fieldMetaMap);
|
|
79
|
+
(0, import_classMeta.setExtendRef)(BaseLightModel, objectRef);
|
|
80
|
+
import_constantInfo.constantInfo.setModelType(BaseLightModel, "light");
|
|
81
|
+
Object.entries(fieldMap).forEach(([key, fieldInfo]) => {
|
|
82
|
+
fieldInfo.applyFieldMeta(BaseLightModel, key);
|
|
83
|
+
});
|
|
94
84
|
return BaseLightModel;
|
|
95
85
|
};
|
|
96
|
-
const fullModelOf = (
|
|
97
|
-
const
|
|
98
|
-
|
|
99
|
-
(0,
|
|
86
|
+
const fullModelOf = (objectRef, lightRef, fieldMap, ...libFullModelRefs) => {
|
|
87
|
+
const fullRef = libFullModelRefs.at(0) ?? class FullModel {
|
|
88
|
+
};
|
|
89
|
+
const fieldMetaMap = new Map([...(0, import_scalar.getFieldMetaMap)(objectRef), ...(0, import_scalar.getFieldMetaMap)(lightRef)]);
|
|
90
|
+
(0, import_common.applyMixins)(fullRef, [objectRef, lightRef, ...libFullModelRefs]);
|
|
100
91
|
libFullModelRefs.forEach((libFullModelRef) => {
|
|
101
|
-
(0, import_common.applyMixins)(libFullModelRef, [
|
|
92
|
+
(0, import_common.applyMixins)(libFullModelRef, [objectRef, lightRef]);
|
|
93
|
+
});
|
|
94
|
+
(0, import_scalar.setFieldMetaMap)(fullRef, fieldMetaMap);
|
|
95
|
+
(0, import_classMeta.setExtendRef)(fullRef, objectRef);
|
|
96
|
+
import_constantInfo.constantInfo.setModelType(fullRef, "full");
|
|
97
|
+
Object.entries(fieldMap).forEach(([key, fieldInfo]) => {
|
|
98
|
+
fieldInfo.applyFieldMeta(fullRef, key);
|
|
102
99
|
});
|
|
103
|
-
|
|
104
|
-
return modelRef;
|
|
100
|
+
return fullRef;
|
|
105
101
|
};
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
if (!fieldsOrLightModelRef) {
|
|
109
|
-
if (classMeta.type === "input") {
|
|
110
|
-
const objectRefName = classMeta.refName.slice(0, -5) + "Object";
|
|
111
|
-
const isFullModelRefDefined = (0, import_classMeta.getFullModelRefs)(objectRefName).length > 0;
|
|
112
|
-
if (isFullModelRefDefined)
|
|
113
|
-
return extendModelInputs(modelRef);
|
|
114
|
-
else
|
|
115
|
-
return baseModelOf(modelRef);
|
|
116
|
-
} else if (classMeta.modelType === "insight")
|
|
117
|
-
return extendModelInsights(modelRef);
|
|
118
|
-
else
|
|
119
|
-
throw new Error("Invalid modelRef args");
|
|
102
|
+
const makeBaseScalar = (fieldMap) => {
|
|
103
|
+
class BaseScalar {
|
|
120
104
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
105
|
+
import_constantInfo.constantInfo.setModelType(BaseScalar, "scalar");
|
|
106
|
+
Object.entries(fieldMap).forEach(([key, fieldInfo]) => {
|
|
107
|
+
fieldInfo.applyFieldMeta(BaseScalar, key);
|
|
108
|
+
});
|
|
109
|
+
return BaseScalar;
|
|
110
|
+
};
|
|
111
|
+
function via(firstRefOrBuildField, secondRefOrFieldsOrBuildField, thirdRefOrResolveField, ...extendRefs) {
|
|
112
|
+
if (!firstRefOrBuildField.prototype || !import_constantInfo.constantInfo.getModelType(firstRefOrBuildField, { allowEmpty: true })) {
|
|
113
|
+
const buildField = firstRefOrBuildField;
|
|
114
|
+
const fieldMap = buildField(import_fieldInfo.field);
|
|
115
|
+
const extendInputRefs = [
|
|
116
|
+
...secondRefOrFieldsOrBuildField ? [secondRefOrFieldsOrBuildField] : [],
|
|
117
|
+
...thirdRefOrResolveField ? [thirdRefOrResolveField] : [],
|
|
118
|
+
...extendRefs
|
|
119
|
+
];
|
|
120
|
+
if (!secondRefOrFieldsOrBuildField)
|
|
121
|
+
return makeBaseScalar(fieldMap);
|
|
135
122
|
else
|
|
136
|
-
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
123
|
+
return extendModelInputs(fieldMap, ...extendInputRefs);
|
|
124
|
+
}
|
|
125
|
+
if (Array.isArray(secondRefOrFieldsOrBuildField)) {
|
|
126
|
+
const resolveField = thirdRefOrResolveField;
|
|
127
|
+
const fieldMap = resolveField(import_fieldInfo.resolve);
|
|
128
|
+
return lightModelOf(
|
|
129
|
+
firstRefOrBuildField,
|
|
130
|
+
secondRefOrFieldsOrBuildField,
|
|
131
|
+
fieldMap,
|
|
132
|
+
...extendRefs
|
|
133
|
+
);
|
|
134
|
+
}
|
|
135
|
+
if (!secondRefOrFieldsOrBuildField.prototype || !import_constantInfo.constantInfo.getModelType(secondRefOrFieldsOrBuildField, { allowEmpty: true })) {
|
|
136
|
+
const buildField = secondRefOrFieldsOrBuildField;
|
|
137
|
+
const fieldMap = buildField(import_fieldInfo.field);
|
|
138
|
+
if (import_constantInfo.constantInfo.isScalar(firstRefOrBuildField)) {
|
|
139
|
+
if (!thirdRefOrResolveField)
|
|
140
|
+
return objectModelOf(firstRefOrBuildField, fieldMap);
|
|
141
|
+
else
|
|
142
|
+
return extendModelObjects(
|
|
143
|
+
firstRefOrBuildField,
|
|
144
|
+
fieldMap,
|
|
145
|
+
thirdRefOrResolveField,
|
|
146
|
+
...extendRefs
|
|
147
|
+
);
|
|
148
|
+
}
|
|
149
|
+
if (import_constantInfo.constantInfo.isFull(firstRefOrBuildField)) {
|
|
150
|
+
const extendInsightRefs = [
|
|
151
|
+
...thirdRefOrResolveField ? [thirdRefOrResolveField] : [],
|
|
152
|
+
...extendRefs
|
|
153
|
+
];
|
|
154
|
+
return extendModelInsights(fieldMap, ...extendInsightRefs);
|
|
155
|
+
}
|
|
156
|
+
} else {
|
|
157
|
+
const objectRef = firstRefOrBuildField;
|
|
158
|
+
const lightRef = secondRefOrFieldsOrBuildField;
|
|
159
|
+
const resolveField = thirdRefOrResolveField;
|
|
160
|
+
const fieldMap = resolveField(import_fieldInfo.resolve);
|
|
161
|
+
return fullModelOf(objectRef, lightRef, fieldMap, ...extendRefs);
|
|
162
|
+
}
|
|
163
|
+
throw new Error(
|
|
164
|
+
`Invalid modelRef args ${firstRefOrBuildField} ${secondRefOrFieldsOrBuildField} ${extendRefs.join(", ")}`
|
|
165
|
+
);
|
|
141
166
|
}
|
|
142
|
-
const extendModelInputs = (...libInputModelRefs) => {
|
|
167
|
+
const extendModelInputs = (fieldMap, ...libInputModelRefs) => {
|
|
143
168
|
const baseInputModelRef = libInputModelRefs.at(0);
|
|
144
169
|
const fieldMetaMap = baseInputModelRef ? (0, import_scalar.getFieldMetaMap)(baseInputModelRef) : /* @__PURE__ */ new Map();
|
|
145
170
|
class BaseInput {
|
|
146
|
-
__ModelType__ = "input";
|
|
147
171
|
}
|
|
148
172
|
(0, import_scalar.setFieldMetaMap)(BaseInput, fieldMetaMap);
|
|
173
|
+
import_constantInfo.constantInfo.setModelType(BaseInput, "scalar");
|
|
174
|
+
Object.entries(fieldMap).forEach(([key, fieldInfo]) => {
|
|
175
|
+
fieldInfo.applyFieldMeta(BaseInput, key);
|
|
176
|
+
});
|
|
149
177
|
return BaseInput;
|
|
150
178
|
};
|
|
151
|
-
const extendModelObjects = (inputRef, ...libObjectModelRefs) => {
|
|
179
|
+
const extendModelObjects = (inputRef, fieldMap, ...libObjectModelRefs) => {
|
|
152
180
|
const baseObjectModelRef = libObjectModelRefs.at(0);
|
|
153
181
|
const inputFieldMetaMap = (0, import_scalar.getFieldMetaMap)(inputRef);
|
|
154
182
|
const fieldMetaMap = baseObjectModelRef ? (0, import_scalar.getFieldMetaMap)(baseObjectModelRef) : /* @__PURE__ */ new Map();
|
|
155
183
|
class BaseInput {
|
|
156
|
-
__ModelType__ = "object";
|
|
157
184
|
}
|
|
158
185
|
inputFieldMetaMap.forEach((value, key) => fieldMetaMap.set(key, value));
|
|
159
186
|
(0, import_scalar.setFieldMetaMap)(BaseInput, fieldMetaMap);
|
|
187
|
+
import_constantInfo.constantInfo.setModelType(BaseInput, "object");
|
|
188
|
+
Object.entries(fieldMap).forEach(([key, fieldInfo]) => {
|
|
189
|
+
fieldInfo.applyFieldMeta(BaseInput, key);
|
|
190
|
+
});
|
|
160
191
|
return BaseInput;
|
|
161
192
|
};
|
|
162
|
-
const extendModelInsights = (...insightModelRefs) => {
|
|
193
|
+
const extendModelInsights = (fieldMap, ...insightModelRefs) => {
|
|
163
194
|
const baseInsightModelRef = insightModelRefs.at(0);
|
|
164
|
-
const insightFieldMetaMap = baseInsightModelRef ? (0, import_scalar.getFieldMetaMap)(baseInsightModelRef) :
|
|
195
|
+
const insightFieldMetaMap = baseInsightModelRef ? (0, import_scalar.getFieldMetaMap)(baseInsightModelRef) : new Map([...baseInsightFieldMetaMap]);
|
|
165
196
|
class BaseInsight {
|
|
166
|
-
__ModelType__ = "insight";
|
|
167
197
|
}
|
|
168
198
|
(0, import_scalar.setFieldMetaMap)(BaseInsight, insightFieldMetaMap);
|
|
199
|
+
import_constantInfo.constantInfo.setModelType(BaseInsight, "insight");
|
|
200
|
+
Object.entries(fieldMap).forEach(([key, fieldInfo]) => {
|
|
201
|
+
fieldInfo.applyFieldMeta(BaseInsight, key);
|
|
202
|
+
});
|
|
169
203
|
return BaseInsight;
|
|
170
204
|
};
|
|
171
|
-
const addModelOf = (modelRef, ...types) => {
|
|
172
|
-
const modelMetadataMap = (0, import_scalar.getFieldMetaMap)(modelRef);
|
|
173
|
-
const metadataMap = types.reduce((acc, writeRef) => {
|
|
174
|
-
const writeMetadataMap = (0, import_scalar.getFieldMetaMap)(writeRef);
|
|
175
|
-
(0, import_common.applyMixins)(modelRef, [writeRef]);
|
|
176
|
-
return new Map([...acc, ...writeMetadataMap]);
|
|
177
|
-
}, modelMetadataMap);
|
|
178
|
-
(0, import_scalar.setFieldMetaMap)(modelRef, metadataMap);
|
|
179
|
-
return modelRef;
|
|
180
|
-
};
|
|
181
|
-
const addFilterOf = (filterRef, ...types) => {
|
|
182
|
-
const filterMeta = (0, import_filterMeta.getFilterMeta)(filterRef);
|
|
183
|
-
const filterQueryMap = (0, import_filterMeta.getFilterQueryMap)(filterRef);
|
|
184
|
-
const metadataMap = new Map(
|
|
185
|
-
types.reduce((acc, writeRef) => {
|
|
186
|
-
const writeMetadataMap = (0, import_filterMeta.getFilterQueryMap)(writeRef);
|
|
187
|
-
(0, import_common.applyMixins)(filterRef, [writeRef]);
|
|
188
|
-
writeMetadataMap.forEach((value, key) => {
|
|
189
|
-
const filterArgMetas = (0, import_filterMeta.getFilterArgMetas)(writeRef, key);
|
|
190
|
-
(0, import_filterMeta.setFilterArgMetasOnPrototype)(filterRef.prototype, key, filterArgMetas);
|
|
191
|
-
});
|
|
192
|
-
return new Map([...acc, ...writeMetadataMap]);
|
|
193
|
-
}, filterQueryMap)
|
|
194
|
-
);
|
|
195
|
-
const filterSort = types.filter(Boolean).map((t) => (0, import_filterMeta.getFilterSortMap)(t)).reduce((acc, sort) => {
|
|
196
|
-
Object.assign(acc, sort);
|
|
197
|
-
return acc;
|
|
198
|
-
}, filterMeta.sort);
|
|
199
|
-
(0, import_filterMeta.setFilterKeyMetaMapOnPrototype)(filterRef.prototype, metadataMap);
|
|
200
|
-
(0, import_filterMeta.setFilterMeta)(filterRef, { ...filterMeta, sort: filterSort });
|
|
201
|
-
return filterRef;
|
|
202
|
-
};
|
package/cjs/src/classMeta.js
CHANGED
|
@@ -17,68 +17,24 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
17
17
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
18
|
var classMeta_exports = {};
|
|
19
19
|
__export(classMeta_exports, {
|
|
20
|
-
Model: () => Model,
|
|
21
|
-
getAllFilterModelRefs: () => getAllFilterModelRefs,
|
|
22
|
-
getAllFullModelRefs: () => getAllFullModelRefs,
|
|
23
|
-
getAllScalarModelRefs: () => getAllScalarModelRefs,
|
|
24
20
|
getChildClassRefs: () => getChildClassRefs,
|
|
21
|
+
getExtendRef: () => getExtendRef,
|
|
25
22
|
getFieldEnumMetas: () => getFieldEnumMetas,
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
getInputModelRef: () => getInputModelRef,
|
|
29
|
-
getInputModelRefs: () => getInputModelRefs,
|
|
30
|
-
getLightModelRef: () => getLightModelRef,
|
|
31
|
-
getScalarModelRef: () => getScalarModelRef,
|
|
32
|
-
getScalarModelRefs: () => getScalarModelRefs,
|
|
33
|
-
hasTextField: () => hasTextField
|
|
23
|
+
hasTextField: () => hasTextField,
|
|
24
|
+
setExtendRef: () => setExtendRef
|
|
34
25
|
});
|
|
35
26
|
module.exports = __toCommonJS(classMeta_exports);
|
|
36
27
|
var import_reflect_metadata = require("reflect-metadata");
|
|
37
|
-
var
|
|
38
|
-
var import_filterMeta = require("./filterMeta");
|
|
28
|
+
var import_constantInfo = require("./constantInfo");
|
|
39
29
|
var import_scalar = require("./scalar");
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
class LightModelStorage {
|
|
43
|
-
}
|
|
44
|
-
class FullModelStorage {
|
|
45
|
-
}
|
|
46
|
-
class ScalarModelStorage {
|
|
47
|
-
}
|
|
48
|
-
class FilterModelStorage {
|
|
49
|
-
}
|
|
50
|
-
const getFullModelRef = (refName) => {
|
|
51
|
-
const modelRefs = Reflect.getMetadata((0, import_common.capitalize)(refName), FullModelStorage.prototype);
|
|
52
|
-
const modelRef = modelRefs?.[0];
|
|
53
|
-
if (!modelRef)
|
|
54
|
-
throw new Error(`FullModel not found - ${refName}`);
|
|
55
|
-
return modelRef;
|
|
30
|
+
const setExtendRef = (modelRef, extendRef) => {
|
|
31
|
+
Reflect.defineMetadata("akan:extend", extendRef, modelRef.prototype);
|
|
56
32
|
};
|
|
57
|
-
const
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
const modelRefs = Reflect.getMetadata((0, import_common.capitalize)(refName), InputModelStorage.prototype);
|
|
63
|
-
const modelRef = modelRefs?.[0];
|
|
64
|
-
if (!modelRef)
|
|
65
|
-
throw new Error(`InputModel not found - ${refName}`);
|
|
66
|
-
return modelRef;
|
|
67
|
-
};
|
|
68
|
-
const getInputModelRefs = (refName) => {
|
|
69
|
-
const modelRefs = Reflect.getMetadata((0, import_common.capitalize)(refName), InputModelStorage.prototype);
|
|
70
|
-
return modelRefs ?? [];
|
|
71
|
-
};
|
|
72
|
-
const getScalarModelRef = (refName) => {
|
|
73
|
-
const modelRefs = Reflect.getMetadata((0, import_common.capitalize)(refName), ScalarModelStorage.prototype);
|
|
74
|
-
const modelRef = modelRefs?.[0];
|
|
75
|
-
if (!modelRef)
|
|
76
|
-
throw new Error(`ScalarModel not found - ${refName}`);
|
|
77
|
-
return modelRef;
|
|
78
|
-
};
|
|
79
|
-
const getScalarModelRefs = (refName) => {
|
|
80
|
-
const modelRefs = Reflect.getMetadata((0, import_common.capitalize)(refName), ScalarModelStorage.prototype);
|
|
81
|
-
return modelRefs ?? [];
|
|
33
|
+
const getExtendRef = (modelRef, { allowEmpty } = {}) => {
|
|
34
|
+
const extendRef = Reflect.getMetadata("akan:extend", modelRef.prototype);
|
|
35
|
+
if (!extendRef && !allowEmpty)
|
|
36
|
+
throw new Error(`ExtendRef not found - ${modelRef.name}`);
|
|
37
|
+
return extendRef;
|
|
82
38
|
};
|
|
83
39
|
const getChildClassRefs = (target) => {
|
|
84
40
|
const metadatas = (0, import_scalar.getFieldMetas)(target);
|
|
@@ -86,7 +42,7 @@ const getChildClassRefs = (target) => {
|
|
|
86
42
|
const childRefs = metadatas.filter((metadata) => metadata.isClass).reduce((acc, metadata) => {
|
|
87
43
|
return [...acc, metadata.modelRef, ...getChildClassRefs(metadata.modelRef)];
|
|
88
44
|
}, []);
|
|
89
|
-
childRefs.filter((modelRef, idx) => childRefs.findIndex((ref) => ref.prototype === modelRef.prototype) === idx).map((modelRef) => refMap.set(
|
|
45
|
+
childRefs.filter((modelRef, idx) => childRefs.findIndex((ref) => ref.prototype === modelRef.prototype) === idx).map((modelRef) => refMap.set(import_constantInfo.constantInfo.getRefName(modelRef), modelRef));
|
|
90
46
|
return [...refMap.values()];
|
|
91
47
|
};
|
|
92
48
|
const getFieldEnumMetas = (modelRef) => {
|
|
@@ -99,64 +55,3 @@ const hasTextField = (modelRef) => {
|
|
|
99
55
|
(fieldMeta) => !!fieldMeta.text || fieldMeta.isScalar && fieldMeta.isClass && fieldMeta.select && hasTextField(fieldMeta.modelRef)
|
|
100
56
|
);
|
|
101
57
|
};
|
|
102
|
-
const applyClassMeta = (type, modelType, storage) => {
|
|
103
|
-
return function(refName) {
|
|
104
|
-
return function(target) {
|
|
105
|
-
const modelRef = target;
|
|
106
|
-
const classMeta = { refName, type, modelType, modelRef, hasTextField: hasTextField(modelRef) };
|
|
107
|
-
Reflect.defineMetadata("class", classMeta, modelRef.prototype);
|
|
108
|
-
const modelRefs = Reflect.getMetadata((0, import_common.capitalize)(refName), storage.prototype);
|
|
109
|
-
if (modelRefs)
|
|
110
|
-
modelRefs.push(modelRef);
|
|
111
|
-
else
|
|
112
|
-
Reflect.defineMetadata(refName, [modelRef], storage.prototype);
|
|
113
|
-
};
|
|
114
|
-
};
|
|
115
|
-
};
|
|
116
|
-
const applyFilterMeta = (storage) => {
|
|
117
|
-
return function(refName) {
|
|
118
|
-
return function(target) {
|
|
119
|
-
const modelRef = target;
|
|
120
|
-
(0, import_filterMeta.setFilterMeta)(modelRef, { refName, sort: {} });
|
|
121
|
-
const modelRefs = Reflect.getMetadata((0, import_common.capitalize)(refName), storage.prototype);
|
|
122
|
-
if (modelRefs)
|
|
123
|
-
modelRefs.push(modelRef);
|
|
124
|
-
else
|
|
125
|
-
Reflect.defineMetadata(refName, [modelRef], storage.prototype);
|
|
126
|
-
};
|
|
127
|
-
};
|
|
128
|
-
};
|
|
129
|
-
const Model = {
|
|
130
|
-
Light: applyClassMeta("light", "data", LightModelStorage),
|
|
131
|
-
Object: applyClassMeta("full", "ephemeral", FullModelStorage),
|
|
132
|
-
Full: applyClassMeta("full", "data", FullModelStorage),
|
|
133
|
-
Input: applyClassMeta("input", "data", InputModelStorage),
|
|
134
|
-
Scalar: applyClassMeta("scalar", "data", ScalarModelStorage),
|
|
135
|
-
Insight: applyClassMeta("scalar", "insight", ScalarModelStorage),
|
|
136
|
-
Filter: applyFilterMeta(FilterModelStorage)
|
|
137
|
-
};
|
|
138
|
-
const getLightModelRef = (modelRef) => {
|
|
139
|
-
const classMeta = (0, import_scalar.getClassMeta)(modelRef);
|
|
140
|
-
if (classMeta.type !== "full")
|
|
141
|
-
return modelRef;
|
|
142
|
-
const lightModelRefs = Reflect.getMetadata(`Light${classMeta.refName}`, LightModelStorage.prototype);
|
|
143
|
-
const lightModelRef = lightModelRefs?.at(-1);
|
|
144
|
-
if (!lightModelRef)
|
|
145
|
-
throw new Error(`LightModel not found - ${classMeta.refName}`);
|
|
146
|
-
return lightModelRef;
|
|
147
|
-
};
|
|
148
|
-
const getAllFullModelRefs = () => {
|
|
149
|
-
const modelNames = Reflect.getMetadataKeys(FullModelStorage.prototype);
|
|
150
|
-
const modelRefs = modelNames.map((modelName) => Reflect.getMetadata(modelName, FullModelStorage.prototype)).flat();
|
|
151
|
-
return modelRefs;
|
|
152
|
-
};
|
|
153
|
-
const getAllScalarModelRefs = () => {
|
|
154
|
-
const modelNames = Reflect.getMetadataKeys(ScalarModelStorage.prototype);
|
|
155
|
-
const modelRefs = modelNames.map((modelName) => Reflect.getMetadata(modelName, ScalarModelStorage.prototype)).flat();
|
|
156
|
-
return modelRefs;
|
|
157
|
-
};
|
|
158
|
-
const getAllFilterModelRefs = () => {
|
|
159
|
-
const modelNames = Reflect.getMetadataKeys(FilterModelStorage.prototype);
|
|
160
|
-
const modelRefs = modelNames.map((modelName) => Reflect.getMetadata(modelName, FilterModelStorage.prototype)).flat();
|
|
161
|
-
return modelRefs;
|
|
162
|
-
};
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var constantInfo_exports = {};
|
|
19
|
+
__export(constantInfo_exports, {
|
|
20
|
+
cnstOf: () => cnstOf,
|
|
21
|
+
constantInfo: () => constantInfo,
|
|
22
|
+
scalarCnstOf: () => scalarCnstOf
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(constantInfo_exports);
|
|
25
|
+
var import_reflect_metadata = require("reflect-metadata");
|
|
26
|
+
var import_base = require("@akanjs/base");
|
|
27
|
+
var import__ = require(".");
|
|
28
|
+
var import_immerify = require("./immerify");
|
|
29
|
+
const constantInfo = {
|
|
30
|
+
database: /* @__PURE__ */ new Map(),
|
|
31
|
+
scalar: /* @__PURE__ */ new Map(),
|
|
32
|
+
modelRefNameMap: /* @__PURE__ */ new Map(),
|
|
33
|
+
getRefName(modelRef, { allowEmpty } = {}) {
|
|
34
|
+
const refName = constantInfo.modelRefNameMap.get(modelRef);
|
|
35
|
+
if (!refName && !allowEmpty)
|
|
36
|
+
throw new Error(`No ref name for modelRef: ${modelRef}`);
|
|
37
|
+
return refName;
|
|
38
|
+
},
|
|
39
|
+
getModelType(modelRef, { allowEmpty } = {}) {
|
|
40
|
+
const modelType = Reflect.getMetadata("akan:modeltype", modelRef.prototype);
|
|
41
|
+
if (!modelType && !allowEmpty)
|
|
42
|
+
throw new Error(`No model type for modelRef: ${modelRef}`);
|
|
43
|
+
return modelType;
|
|
44
|
+
},
|
|
45
|
+
setModelType(modelRef, modelType) {
|
|
46
|
+
Reflect.defineMetadata("akan:modeltype", modelType, modelRef.prototype);
|
|
47
|
+
},
|
|
48
|
+
isObject(modelRef) {
|
|
49
|
+
return constantInfo.getModelType(modelRef, { allowEmpty: true }) === "object";
|
|
50
|
+
},
|
|
51
|
+
isFull(modelRef) {
|
|
52
|
+
return constantInfo.getModelType(modelRef, { allowEmpty: true }) === "full";
|
|
53
|
+
},
|
|
54
|
+
isLight(modelRef) {
|
|
55
|
+
return constantInfo.getModelType(modelRef, { allowEmpty: true }) === "light";
|
|
56
|
+
},
|
|
57
|
+
isInsight(modelRef) {
|
|
58
|
+
return constantInfo.getModelType(modelRef, { allowEmpty: true }) === "insight";
|
|
59
|
+
},
|
|
60
|
+
isFilter(modelRef) {
|
|
61
|
+
return constantInfo.getModelType(modelRef, { allowEmpty: true }) === "filter";
|
|
62
|
+
},
|
|
63
|
+
isScalar(modelRef) {
|
|
64
|
+
return constantInfo.getModelType(modelRef, { allowEmpty: true }) === "scalar";
|
|
65
|
+
},
|
|
66
|
+
setDatabase(refName, cnst) {
|
|
67
|
+
constantInfo.database.set(refName, cnst);
|
|
68
|
+
},
|
|
69
|
+
getDatabase(refName, { allowEmpty } = {}) {
|
|
70
|
+
const info = constantInfo.database.get(refName);
|
|
71
|
+
if (!info && !allowEmpty)
|
|
72
|
+
throw new Error(`No database constant model info for ${refName}`);
|
|
73
|
+
return info;
|
|
74
|
+
},
|
|
75
|
+
setScalar(refName, cnst) {
|
|
76
|
+
if (constantInfo.scalar.has(refName))
|
|
77
|
+
return;
|
|
78
|
+
constantInfo.scalar.set(refName, cnst);
|
|
79
|
+
},
|
|
80
|
+
getScalar(refName, { allowEmpty } = {}) {
|
|
81
|
+
const model = constantInfo.scalar.get(refName);
|
|
82
|
+
if (!model && !allowEmpty)
|
|
83
|
+
throw new Error(`No scalar constant model for ${refName}`);
|
|
84
|
+
return model;
|
|
85
|
+
},
|
|
86
|
+
getModelRef(refName, modelType) {
|
|
87
|
+
if (modelType === "scalar") {
|
|
88
|
+
if (import_base.gqlScalarMap.has(refName))
|
|
89
|
+
return import_base.gqlScalarMap.get(refName);
|
|
90
|
+
else
|
|
91
|
+
return constantInfo.getScalar(refName).model;
|
|
92
|
+
} else
|
|
93
|
+
return constantInfo.getDatabase(refName)[modelType];
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
const cnstOf = (refName, Input, Full, Light, Insight, option = {}) => {
|
|
97
|
+
[Input, Full, Light, Insight].forEach((modelRef) => {
|
|
98
|
+
constantInfo.modelRefNameMap.set(modelRef, refName);
|
|
99
|
+
});
|
|
100
|
+
constantInfo.setModelType(Input, "input");
|
|
101
|
+
constantInfo.setModelType(Full, "full");
|
|
102
|
+
constantInfo.setModelType(Light, "light");
|
|
103
|
+
constantInfo.setModelType(Insight, "insight");
|
|
104
|
+
const cnst = {
|
|
105
|
+
refName,
|
|
106
|
+
input: Input,
|
|
107
|
+
full: Full,
|
|
108
|
+
light: Light,
|
|
109
|
+
insight: Insight,
|
|
110
|
+
crystalize: (0, import__.makeCrystalize)(Full, option),
|
|
111
|
+
lightCrystalize: (0, import__.makeCrystalize)(Light, option),
|
|
112
|
+
crystalizeInsight: (0, import__.makeCrystalize)(Insight, option),
|
|
113
|
+
purify: (0, import__.makePurify)(Input, option),
|
|
114
|
+
getDefault: () => (0, import_immerify.immerify)(Full, Object.assign(new Full(), (0, import__.makeDefault)(Full, option))),
|
|
115
|
+
getDefaultInsight: () => (0, import_immerify.immerify)(Insight, Object.assign(new Insight(), (0, import__.makeDefault)(Insight, option))),
|
|
116
|
+
_CapitalizedT: null,
|
|
117
|
+
_Default: null,
|
|
118
|
+
_DefaultInput: null,
|
|
119
|
+
_DefaultState: null,
|
|
120
|
+
_DefaultStateInput: null,
|
|
121
|
+
_DefaultInsight: null,
|
|
122
|
+
_PurifiedInput: null,
|
|
123
|
+
_Doc: null,
|
|
124
|
+
_DocInput: null,
|
|
125
|
+
_QueryOfDoc: null
|
|
126
|
+
};
|
|
127
|
+
constantInfo.setDatabase(refName, cnst);
|
|
128
|
+
return cnst;
|
|
129
|
+
};
|
|
130
|
+
const scalarCnstOf = (refName, Model) => {
|
|
131
|
+
constantInfo.setModelType(Model, "scalar");
|
|
132
|
+
constantInfo.modelRefNameMap.set(Model, refName);
|
|
133
|
+
const cnst = {
|
|
134
|
+
refName,
|
|
135
|
+
model: Model,
|
|
136
|
+
crystalize: (0, import__.makeCrystalize)(Model),
|
|
137
|
+
purify: (0, import__.makePurify)(Model),
|
|
138
|
+
getDefault: () => (0, import_immerify.immerify)(Model, Object.assign(new Model(), (0, import__.makeDefault)(Model))),
|
|
139
|
+
_Default: null,
|
|
140
|
+
_Doc: null,
|
|
141
|
+
_PurifiedInput: null
|
|
142
|
+
};
|
|
143
|
+
constantInfo.setScalar(refName, cnst);
|
|
144
|
+
return cnst;
|
|
145
|
+
};
|