@resistdesign/voltra 3.0.0-alpha.28 → 3.0.0-alpha.29

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.
@@ -0,0 +1,22 @@
1
+ // src/common/TypeInfoORM/Types.ts
2
+ var ITEM_RELATIONSHIP_DAC_RESOURCE_NAME = "TYPE_INFO_ORM_ITEM_RELATIONSHIP";
3
+ var TypeInfoORMServiceError = /* @__PURE__ */ ((TypeInfoORMServiceError2) => {
4
+ TypeInfoORMServiceError2["NO_DRIVERS_SUPPLIED"] = "NO_DRIVERS_SUPPLIED";
5
+ TypeInfoORMServiceError2["NO_RELATIONSHIP_DRIVERS_SUPPLIED"] = "NO_RELATIONSHIP_DRIVERS_SUPPLIED";
6
+ TypeInfoORMServiceError2["NO_PRIMARY_FIELD_VALUE_SUPPLIED"] = "NO_PRIMARY_FIELD_VALUE_SUPPLIED";
7
+ TypeInfoORMServiceError2["INVALID_DRIVER"] = "INVALID_DRIVER";
8
+ TypeInfoORMServiceError2["INVALID_RELATIONSHIP_DRIVER"] = "INVALID_RELATIONSHIP_DRIVER";
9
+ TypeInfoORMServiceError2["INVALID_TYPE_INFO"] = "INVALID_TYPE_INFO";
10
+ TypeInfoORMServiceError2["TYPE_INFO_MISSING_PRIMARY_FIELD"] = "TYPE_INFO_MISSING_PRIMARY_FIELD";
11
+ TypeInfoORMServiceError2["INVALID_RELATIONSHIP"] = "INVALID_RELATIONSHIP";
12
+ TypeInfoORMServiceError2["INVALID_OPERATION"] = "INVALID_OPERATION";
13
+ TypeInfoORMServiceError2["MISSING_ACCESSING_ROLE"] = "MISSING_ACCESSING_ROLE";
14
+ TypeInfoORMServiceError2["INDEXING_UNSUPPORTED_CRITERIA"] = "INDEXING_UNSUPPORTED_CRITERIA";
15
+ TypeInfoORMServiceError2["INDEXING_UNSUPPORTED_COMBINATION"] = "INDEXING_UNSUPPORTED_COMBINATION";
16
+ TypeInfoORMServiceError2["INDEXING_MISSING_INDEX_FIELD"] = "INDEXING_MISSING_INDEX_FIELD";
17
+ TypeInfoORMServiceError2["INDEXING_MISSING_BACKEND"] = "INDEXING_MISSING_BACKEND";
18
+ TypeInfoORMServiceError2["INDEXING_REQUIRES_CRITERIA"] = "INDEXING_REQUIRES_CRITERIA";
19
+ return TypeInfoORMServiceError2;
20
+ })(TypeInfoORMServiceError || {});
21
+
22
+ export { ITEM_RELATIONSHIP_DAC_RESOURCE_NAME, TypeInfoORMServiceError };
@@ -0,0 +1,19 @@
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 __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
18
+
19
+ export { __export, __reExport };
@@ -0,0 +1,10 @@
1
+ // src/common/TypeParsing/TypeInfo.ts
2
+ var TypeOperation = /* @__PURE__ */ ((TypeOperation2) => {
3
+ TypeOperation2["CREATE"] = "CREATE";
4
+ TypeOperation2["READ"] = "READ";
5
+ TypeOperation2["UPDATE"] = "UPDATE";
6
+ TypeOperation2["DELETE"] = "DELETE";
7
+ return TypeOperation2;
8
+ })(TypeOperation || {});
9
+
10
+ export { TypeOperation };
@@ -0,0 +1,353 @@
1
+ import { getPathString } from './chunk-GYWRAW3Y.js';
2
+
3
+ // src/common/TypeParsing/Validation.ts
4
+ var RelationshipValidationType = /* @__PURE__ */ ((RelationshipValidationType2) => {
5
+ RelationshipValidationType2["INCLUDE"] = "INCLUDE";
6
+ RelationshipValidationType2["EXCLUDE"] = "EXCLUDE";
7
+ RelationshipValidationType2["STRICT_EXCLUDE"] = "STRICT_EXCLUDE";
8
+ return RelationshipValidationType2;
9
+ })(RelationshipValidationType || {});
10
+ var INVALID_CUSTOM_TYPE = "INVALID_CUSTOM_TYPE";
11
+ var PRIMITIVE_ERROR_MESSAGE_CONSTANTS = {
12
+ string: "NOT_A_STRING",
13
+ number: "NOT_A_NUMBER",
14
+ boolean: "NOT_A_BOOLEAN"
15
+ };
16
+ var ERROR_MESSAGE_CONSTANTS = {
17
+ MISSING: "MISSING",
18
+ INVALID_OPTION: "INVALID_OPTION",
19
+ INVALID_FIELD: "INVALID_FIELD",
20
+ RELATIONSHIP_VALUES_ARE_STRICTLY_EXCLUDED: "RELATIONSHIP_VALUES_ARE_STRICTLY_EXCLUDED",
21
+ INVALID_TYPE: "INVALID_TYPE",
22
+ NO_UNION_TYPE_MATCHED: "NO_UNION_TYPE_MATCHED",
23
+ TYPE_DOES_NOT_EXIST: "TYPE_DOES_NOT_EXIST",
24
+ INVALID_PATTERN: "INVALID_PATTERN",
25
+ VALUE_DOES_NOT_MATCH_PATTERN: "VALUE_DOES_NOT_MATCH_PATTERN"
26
+ };
27
+ var DENIED_TYPE_OPERATIONS = {
28
+ CREATE: "DENIED_TYPE_OPERATION_CREATE",
29
+ READ: "DENIED_TYPE_OPERATION_READ",
30
+ UPDATE: "DENIED_TYPE_OPERATION_UPDATE",
31
+ DELETE: "DENIED_TYPE_OPERATION_DELETE"
32
+ };
33
+ var validateValueMatchesPattern = (typeName, value, pattern) => {
34
+ const results = {
35
+ typeName,
36
+ valid: true,
37
+ error: "",
38
+ errorMap: {}
39
+ };
40
+ const valueSupplied = typeof value !== "undefined";
41
+ const patternSupplied = typeof pattern === "string" && pattern.trim() !== "";
42
+ if (!valueSupplied || !patternSupplied) {
43
+ try {
44
+ const regex = new RegExp(pattern);
45
+ const testResult = typeof value === "string" && regex.test(value);
46
+ if (!testResult) {
47
+ results.valid = false;
48
+ results.error = ERROR_MESSAGE_CONSTANTS.VALUE_DOES_NOT_MATCH_PATTERN;
49
+ }
50
+ } catch (e) {
51
+ results.valid = false;
52
+ results.error = ERROR_MESSAGE_CONSTANTS.INVALID_PATTERN;
53
+ }
54
+ }
55
+ return results;
56
+ };
57
+ var getValidityValue = (existing, pending) => !existing ? false : pending;
58
+ var TYPE_KEYWORD_VALIDATORS = {
59
+ string: (value) => typeof value === "string",
60
+ number: (value) => typeof value === "number",
61
+ boolean: (value) => typeof value === "boolean"
62
+ };
63
+ var hasValue = (value) => value ?? false;
64
+ var validateKeywordType = (value, type) => {
65
+ const validator = TYPE_KEYWORD_VALIDATORS[type];
66
+ let valid = true;
67
+ if (validator) {
68
+ valid = validator(value);
69
+ }
70
+ return valid;
71
+ };
72
+ var validateCustomType = (value, customType, customValidators) => {
73
+ let valid = true;
74
+ if (customValidators && customType) {
75
+ const validator = customValidators[customType];
76
+ if (validator) {
77
+ try {
78
+ valid = validator(value);
79
+ } catch (e) {
80
+ valid = false;
81
+ }
82
+ }
83
+ }
84
+ return valid;
85
+ };
86
+ var validateTypeInfoFieldValue = (value, typeInfoField, typeInfoMap, ignoreArray = false, strict = false, customValidators, typeOperation, relationshipValidationType = "STRICT_EXCLUDE" /* STRICT_EXCLUDE */, itemIsPartial) => {
87
+ const {
88
+ type,
89
+ typeReference,
90
+ array,
91
+ optional,
92
+ possibleValues,
93
+ tags: { customType, constraints: { pattern = void 0 } = {} } = {}
94
+ } = typeInfoField;
95
+ const results = {
96
+ typeName: typeReference ?? type,
97
+ valid: true,
98
+ error: "",
99
+ errorMap: {}
100
+ };
101
+ const requiredValueAllowed = !typeReference || relationshipValidationType === "INCLUDE" /* INCLUDE */;
102
+ const valueIsUndefined = typeof value === "undefined";
103
+ const valueIsNull = value === null;
104
+ const canSkipValidation = itemIsPartial && (valueIsUndefined || valueIsNull) || optional && valueIsUndefined;
105
+ if (canSkipValidation) {
106
+ results.valid = true;
107
+ } else if (requiredValueAllowed && !itemIsPartial && !optional && !hasValue(value)) {
108
+ results.valid = false;
109
+ results.error = ERROR_MESSAGE_CONSTANTS.MISSING;
110
+ } else if (array && !ignoreArray) {
111
+ const {
112
+ valid: validArray,
113
+ error: arrayError,
114
+ errorMap: arrayErrorMap
115
+ } = validateArrayOfTypeInfoFieldValues(
116
+ value,
117
+ typeInfoField,
118
+ typeInfoMap,
119
+ strict,
120
+ customValidators,
121
+ typeOperation,
122
+ relationshipValidationType,
123
+ itemIsPartial
124
+ );
125
+ results.valid = getValidityValue(results.valid, validArray);
126
+ results.error = arrayError;
127
+ results.errorMap = arrayErrorMap;
128
+ } else {
129
+ if (typeReference) {
130
+ if (relationshipValidationType === "INCLUDE" /* INCLUDE */) {
131
+ const {
132
+ valid: validTypeInfo,
133
+ error: typeInfoError,
134
+ errorMap: typeInfoErrorMap
135
+ } = validateTypeInfoValue(
136
+ value,
137
+ typeReference,
138
+ typeInfoMap,
139
+ strict,
140
+ customValidators,
141
+ typeOperation,
142
+ relationshipValidationType,
143
+ itemIsPartial
144
+ );
145
+ results.valid = getValidityValue(results.valid, validTypeInfo);
146
+ results.error = typeInfoError;
147
+ results.errorMap = typeInfoErrorMap;
148
+ } else if (relationshipValidationType === "STRICT_EXCLUDE" /* STRICT_EXCLUDE */) {
149
+ const valueSupplied = typeof value !== "undefined";
150
+ if (valueSupplied) {
151
+ results.valid = false;
152
+ results.error = ERROR_MESSAGE_CONSTANTS.RELATIONSHIP_VALUES_ARE_STRICTLY_EXCLUDED;
153
+ }
154
+ } else if (relationshipValidationType === "EXCLUDE" /* EXCLUDE */) {
155
+ results.valid = getValidityValue(results.valid, true);
156
+ }
157
+ } else if (possibleValues && !possibleValues.includes(value)) {
158
+ results.valid = false;
159
+ results.error = ERROR_MESSAGE_CONSTANTS.INVALID_OPTION;
160
+ } else {
161
+ const pendingValid = validateKeywordType(value, type);
162
+ const customValid = validateCustomType(
163
+ value,
164
+ customType,
165
+ customValidators
166
+ );
167
+ results.valid = getValidityValue(results.valid, pendingValid);
168
+ results.valid = getValidityValue(results.valid, customValid);
169
+ if (type === "string" && typeof pattern === "string") {
170
+ const { valid: patternValid, error: patternError } = validateValueMatchesPattern(value, pattern);
171
+ results.valid = getValidityValue(results.valid, patternValid);
172
+ results.error = patternError;
173
+ }
174
+ if (!customValid) {
175
+ results.error = INVALID_CUSTOM_TYPE;
176
+ } else if (!results.valid) {
177
+ results.error = results.error ? results.error : PRIMITIVE_ERROR_MESSAGE_CONSTANTS[type];
178
+ }
179
+ }
180
+ }
181
+ return results;
182
+ };
183
+ var validateArrayOfTypeInfoFieldValues = (values = [], typeInfoField, typeInfoMap, strict = false, customValidators, typeOperation, relationshipValidationType, itemIsPartial) => {
184
+ const { type, typeReference } = typeInfoField;
185
+ const results = {
186
+ typeName: typeReference ?? type,
187
+ valid: true,
188
+ error: "",
189
+ errorMap: {}
190
+ };
191
+ for (let i = 0; i < values.length; i++) {
192
+ const v = values[i];
193
+ const {
194
+ valid: indexValid,
195
+ error: indexError = "",
196
+ errorMap: indexErrorMap
197
+ } = validateTypeInfoFieldValue(
198
+ v,
199
+ typeInfoField,
200
+ typeInfoMap,
201
+ true,
202
+ strict,
203
+ customValidators,
204
+ typeOperation,
205
+ relationshipValidationType,
206
+ itemIsPartial
207
+ );
208
+ results.valid = getValidityValue(results.valid, indexValid);
209
+ results.errorMap[getPathString([i])] = [indexError];
210
+ for (const er in indexErrorMap) {
211
+ results.errorMap[getPathString([i, er])] = indexErrorMap[er];
212
+ }
213
+ }
214
+ return results;
215
+ };
216
+ var validateTypeInfoFieldOperationAllowed = (fieldName, fieldOperation, typeInfoField) => {
217
+ const results = {
218
+ typeName: null,
219
+ valid: true,
220
+ error: "",
221
+ errorMap: {}
222
+ };
223
+ if (fieldOperation && typeInfoField) {
224
+ const {
225
+ type,
226
+ typeReference,
227
+ tags = {}
228
+ } = typeInfoField || {};
229
+ const { deniedOperations: { [fieldOperation]: denied = false } = {} } = tags;
230
+ results.typeName = typeReference ?? type;
231
+ results.valid = !denied;
232
+ if (!results.valid) {
233
+ results.error = DENIED_TYPE_OPERATIONS[fieldOperation];
234
+ results.errorMap[fieldName] = [results.error];
235
+ }
236
+ }
237
+ return results;
238
+ };
239
+ var validateTypeOperationAllowed = (typeName, valueFields, typeOperation, typeInfo) => {
240
+ const results = {
241
+ typeName,
242
+ valid: true,
243
+ error: "",
244
+ errorMap: {}
245
+ };
246
+ const { fields = {}, tags = {} } = typeInfo;
247
+ const { deniedOperations: { [typeOperation]: denied = false } = {} } = tags;
248
+ if (denied) {
249
+ results.valid = false;
250
+ results.error = DENIED_TYPE_OPERATIONS[typeOperation];
251
+ } else {
252
+ for (const vF of valueFields) {
253
+ const vFieldInfo = fields[vF];
254
+ const { valid: vFValid, error: vFError } = validateTypeInfoFieldOperationAllowed(vF, typeOperation, vFieldInfo);
255
+ results.valid = getValidityValue(results.valid, vFValid);
256
+ if (!vFValid) {
257
+ results.errorMap[vF] = [vFError];
258
+ }
259
+ }
260
+ }
261
+ return results;
262
+ };
263
+ var validateTypeInfoValue = (value, typeInfoFullName, typeInfoMap, strict = false, customValidators, typeOperation, relationshipValidationType, itemIsPartial) => {
264
+ const typeInfo = typeInfoMap[typeInfoFullName];
265
+ const results = {
266
+ typeName: typeInfoFullName,
267
+ valid: !!typeInfo,
268
+ error: !!typeInfo ? "" : ERROR_MESSAGE_CONSTANTS.TYPE_DOES_NOT_EXIST,
269
+ errorMap: {}
270
+ };
271
+ if (typeInfo) {
272
+ const { primaryField, fields, unionFieldSets } = typeInfo;
273
+ if (typeOperation) {
274
+ const valueFields = typeof value === "object" ? Object.keys(value ?? {}) : [];
275
+ const {
276
+ valid: operationValid,
277
+ error: operationError,
278
+ errorMap: operationErrorMap
279
+ } = validateTypeOperationAllowed(
280
+ typeInfoFullName,
281
+ valueFields,
282
+ typeOperation,
283
+ typeInfo
284
+ );
285
+ results.valid = getValidityValue(results.valid, operationValid);
286
+ results.error = operationError;
287
+ for (const oE in operationErrorMap) {
288
+ const existingError = results.errorMap[oE] ?? [];
289
+ results.errorMap[oE] = existingError ? [...existingError, ...operationErrorMap[oE]] : operationErrorMap[oE];
290
+ }
291
+ if (!operationValid && operationError) {
292
+ results.error = operationError;
293
+ }
294
+ }
295
+ if (unionFieldSets) {
296
+ const valueFields = Object.keys(value || {});
297
+ let valid = false;
298
+ for (const uFS of unionFieldSets) {
299
+ valid = valueFields.every((vF) => uFS.includes(vF));
300
+ if (valid) {
301
+ break;
302
+ }
303
+ }
304
+ if (!valid) {
305
+ results.valid = false;
306
+ results.error = ERROR_MESSAGE_CONSTANTS.NO_UNION_TYPE_MATCHED;
307
+ }
308
+ } else if (strict) {
309
+ const knownFields = Object.keys(fields || {});
310
+ const valueFields = Object.keys(value || {});
311
+ for (const vF of valueFields) {
312
+ if (!knownFields.includes(vF)) {
313
+ results.valid = false;
314
+ results.errorMap[vF] = [ERROR_MESSAGE_CONSTANTS.INVALID_FIELD];
315
+ }
316
+ }
317
+ }
318
+ if (fields) {
319
+ for (const key in fields) {
320
+ if (typeOperation !== "CREATE" /* CREATE */ || typeof primaryField !== "string" || key !== primaryField) {
321
+ const typeInfoField = fields[key];
322
+ const fieldValue = value[key];
323
+ const {
324
+ valid: fieldValid,
325
+ error: fieldError,
326
+ errorMap: fieldErrorMap
327
+ } = validateTypeInfoFieldValue(
328
+ fieldValue,
329
+ typeInfoField,
330
+ typeInfoMap,
331
+ false,
332
+ strict,
333
+ customValidators,
334
+ typeOperation,
335
+ relationshipValidationType,
336
+ itemIsPartial
337
+ );
338
+ results.valid = getValidityValue(results.valid, fieldValid);
339
+ results.errorMap[key] = [fieldError];
340
+ for (const fE in fieldErrorMap) {
341
+ results.errorMap[getPathString([key, fE])] = fieldErrorMap[fE];
342
+ }
343
+ }
344
+ }
345
+ }
346
+ if (!results.valid && !results.error) {
347
+ results.error = ERROR_MESSAGE_CONSTANTS.INVALID_TYPE;
348
+ }
349
+ }
350
+ return results;
351
+ };
352
+
353
+ export { DENIED_TYPE_OPERATIONS, ERROR_MESSAGE_CONSTANTS, INVALID_CUSTOM_TYPE, PRIMITIVE_ERROR_MESSAGE_CONSTANTS, RelationshipValidationType, TYPE_KEYWORD_VALIDATORS, getValidityValue, hasValue, validateArrayOfTypeInfoFieldValues, validateCustomType, validateKeywordType, validateTypeInfoFieldOperationAllowed, validateTypeInfoFieldValue, validateTypeInfoValue, validateTypeOperationAllowed, validateValueMatchesPattern };
@@ -0,0 +1 @@
1
+