@yamato-daiwa/es-extensions 1.9.0-alpha.4 → 1.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Distributable/cjs/AJAX/AJAX_Service.js +1 -1
- package/Distributable/cjs/Numbers/isStringifiedNonNegativeIntegerOfRegularNotation.js +1 -1
- package/Distributable/cjs/Objects/getObjectPropertySafely.js +26 -24
- package/Distributable/cjs/Objects/setObjectProperties.js +51 -0
- package/Distributable/cjs/RawObjectDataProcessor/RawObjectDataProcessor.js +174 -70
- package/Distributable/cjs/RawObjectDataProcessor/RawObjectDataProcessorLocalization.english.js +36 -51
- package/Distributable/cjs/index.js +7 -5
- package/Distributable/esm/AJAX/AJAX_Service.js +1 -1
- package/Distributable/esm/Numbers/isStringifiedNonNegativeIntegerOfRegularNotation.js +1 -1
- package/Distributable/esm/Objects/getObjectPropertySafely.d.ts +1 -1
- package/Distributable/esm/Objects/getObjectPropertySafely.js +26 -24
- package/Distributable/esm/Objects/setObjectProperties.d.ts +5 -0
- package/Distributable/esm/Objects/setObjectProperties.js +45 -0
- package/Distributable/esm/RawObjectDataProcessor/RawObjectDataProcessor.d.ts +6 -3
- package/Distributable/esm/RawObjectDataProcessor/RawObjectDataProcessor.js +174 -70
- package/Distributable/esm/RawObjectDataProcessor/RawObjectDataProcessorLocalization.english.js +36 -51
- package/Distributable/esm/index.d.ts +2 -1
- package/Distributable/esm/index.js +2 -1
- package/README.md +235 -364
- package/package.json +4 -4
|
@@ -139,7 +139,7 @@ class AJAX_Service {
|
|
|
139
139
|
Logger_1.default.throwErrorWithFormattedMessage({
|
|
140
140
|
errorInstance: new InvalidConfigError_1.default({
|
|
141
141
|
customMessage: "The \"alternatingURI_PathPart\" has been specified while the static field " +
|
|
142
|
-
"\"
|
|
142
|
+
"\"API_SERVER_URI_CONSTANT_PART__WITHOUT_TRAILING_SLASH\" has not been set."
|
|
143
143
|
}),
|
|
144
144
|
title: InvalidConfigError_1.default.localization.defaultTitle,
|
|
145
145
|
occurrenceLocation: "AJAX_Service.normalizeURI_UntilPath(URI_PathRawDefinition)"
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.default = isStringifiedNonNegativeIntegerOfRegularNotation;
|
|
4
4
|
function isStringifiedNonNegativeIntegerOfRegularNotation(value) {
|
|
5
|
-
return (/^[1-9]\d
|
|
5
|
+
return (/^(?:0|^[1-9]\d*)$/u).test(value);
|
|
6
6
|
}
|
|
@@ -9,44 +9,46 @@ const Logger_1 = __importDefault(require("../Logging/Logger"));
|
|
|
9
9
|
const InvalidParameterValueError_1 = __importDefault(require("../Errors/InvalidParameterValue/InvalidParameterValueError"));
|
|
10
10
|
const isNonEmptyString_1 = __importDefault(require("../TypeGuards/Strings/isNonEmptyString"));
|
|
11
11
|
const isArbitraryObject_1 = __importDefault(require("../TypeGuards/Objects/isArbitraryObject"));
|
|
12
|
+
const isNaturalNumberOrZero_1 = __importDefault(require("../TypeGuards/Numbers/isNaturalNumberOrZero"));
|
|
12
13
|
function getObjectPropertySafely(targetObject, dotSeparatedOrArrayedPathToTargetProperty) {
|
|
13
|
-
if (!(0, isNonEmptyString_1.default)(dotSeparatedOrArrayedPathToTargetProperty) &&
|
|
14
|
-
(!Array.isArray(dotSeparatedOrArrayedPathToTargetProperty) ||
|
|
15
|
-
dotSeparatedOrArrayedPathToTargetProperty.some((key) => !(0, isNonEmptyString_1.default)(key)))) {
|
|
16
|
-
Logger_1.default.logError({
|
|
17
|
-
errorType: InvalidParameterValueError_1.default.NAME,
|
|
18
|
-
title: InvalidParameterValueError_1.default.localization.defaultTitle,
|
|
19
|
-
description: InvalidParameterValueError_1.default.localization.generateDescription({
|
|
20
|
-
parameterNumber: 2,
|
|
21
|
-
parameterName: "dotSeparatedOrArrayedPathToTargetProperty",
|
|
22
|
-
messageSpecificPart: "This parameter must be either non-empty string or array of non-empty strings."
|
|
23
|
-
}),
|
|
24
|
-
occurrenceLocation: "getObjectPropertySafely(targetObject, dotSeparatedOrArrayedPathToTargetProperty)"
|
|
25
|
-
});
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
14
|
if (!(0, isArbitraryObject_1.default)(targetObject)) {
|
|
29
15
|
return;
|
|
30
16
|
}
|
|
31
17
|
let targetPropertyPathSegments;
|
|
32
|
-
if (Array.isArray(dotSeparatedOrArrayedPathToTargetProperty)
|
|
18
|
+
if (Array.isArray(dotSeparatedOrArrayedPathToTargetProperty) &&
|
|
19
|
+
dotSeparatedOrArrayedPathToTargetProperty.length > 0 &&
|
|
20
|
+
dotSeparatedOrArrayedPathToTargetProperty.
|
|
21
|
+
every((key) => (0, isNonEmptyString_1.default)(key) || (0, isNaturalNumberOrZero_1.default)(key))) {
|
|
33
22
|
targetPropertyPathSegments = dotSeparatedOrArrayedPathToTargetProperty;
|
|
34
23
|
}
|
|
35
|
-
else {
|
|
24
|
+
else if ((0, isNaturalNumberOrZero_1.default)(dotSeparatedOrArrayedPathToTargetProperty)) {
|
|
25
|
+
targetPropertyPathSegments = [String(dotSeparatedOrArrayedPathToTargetProperty)];
|
|
26
|
+
}
|
|
27
|
+
else if ((0, isNonEmptyString_1.default)(dotSeparatedOrArrayedPathToTargetProperty)) {
|
|
36
28
|
targetPropertyPathSegments = (0, splitString_1.default)(dotSeparatedOrArrayedPathToTargetProperty, ".");
|
|
37
29
|
}
|
|
38
|
-
|
|
30
|
+
else {
|
|
31
|
+
Logger_1.default.throwErrorWithFormattedMessage({
|
|
32
|
+
errorInstance: new InvalidParameterValueError_1.default({
|
|
33
|
+
parameterNumber: 2,
|
|
34
|
+
parameterName: "dotSeparatedOrArrayedPathToTargetProperty",
|
|
35
|
+
messageSpecificPart: "This parameter must be either a non-empty string, or a non-negative integer, or a non-empty array " +
|
|
36
|
+
"of strings and/or non-negative integers."
|
|
37
|
+
}),
|
|
38
|
+
title: InvalidParameterValueError_1.default.localization.defaultTitle,
|
|
39
|
+
occurrenceLocation: "getObjectPropertySafely(targetObject, dotSeparatedOrArrayedPathToTargetProperty)"
|
|
40
|
+
});
|
|
39
41
|
return;
|
|
40
42
|
}
|
|
41
43
|
let objectOfCurrentDepthLevel = targetObject;
|
|
42
|
-
for (let
|
|
43
|
-
const isLastDepthLevel =
|
|
44
|
-
const
|
|
44
|
+
for (let depthLevel__numerationFrom1 = 1; depthLevel__numerationFrom1 <= targetPropertyPathSegments.length; depthLevel__numerationFrom1++) {
|
|
45
|
+
const isLastDepthLevel = depthLevel__numerationFrom1 === targetPropertyPathSegments.length;
|
|
46
|
+
const valueOfCurrentDepthLevel = objectOfCurrentDepthLevel[targetPropertyPathSegments[depthLevel__numerationFrom1 - 1]];
|
|
45
47
|
if (isLastDepthLevel) {
|
|
46
|
-
return
|
|
48
|
+
return valueOfCurrentDepthLevel;
|
|
47
49
|
}
|
|
48
|
-
else if ((0, isArbitraryObject_1.default)(
|
|
49
|
-
objectOfCurrentDepthLevel =
|
|
50
|
+
else if ((0, isArbitraryObject_1.default)(valueOfCurrentDepthLevel)) {
|
|
51
|
+
objectOfCurrentDepthLevel = valueOfCurrentDepthLevel;
|
|
50
52
|
}
|
|
51
53
|
else {
|
|
52
54
|
return;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.default = setObjectProperties;
|
|
7
|
+
const splitString_1 = __importDefault(require("../Strings/splitString"));
|
|
8
|
+
const isNonNullObject_1 = __importDefault(require("../TypeGuards/Objects/isNonNullObject"));
|
|
9
|
+
const isUndefined_1 = __importDefault(require("../TypeGuards/EmptyTypes/isUndefined"));
|
|
10
|
+
const isStringifiedNonNegativeIntegerOfRegularNotation_1 = __importDefault(require("../Numbers/isStringifiedNonNegativeIntegerOfRegularNotation"));
|
|
11
|
+
function setObjectProperties(targetObject, order) {
|
|
12
|
+
for (const [fullyQualifiedName, propertyDescriptor] of Object.entries(order)) {
|
|
13
|
+
const targetPropertyPathSegments = (0, splitString_1.default)(fullyQualifiedName, ".");
|
|
14
|
+
let objectOfCurrentDepthLevel = targetObject;
|
|
15
|
+
for (let depthLevel__numerationFrom1 = 1; depthLevel__numerationFrom1 <= targetPropertyPathSegments.length; depthLevel__numerationFrom1++) {
|
|
16
|
+
const isLastDepthLevel = depthLevel__numerationFrom1 === targetPropertyPathSegments.length;
|
|
17
|
+
const propertyKeyForCurrentDepthLevel = targetPropertyPathSegments[depthLevel__numerationFrom1 - 1];
|
|
18
|
+
let valueOfNextDepthLevel = Reflect.get(objectOfCurrentDepthLevel, propertyKeyForCurrentDepthLevel);
|
|
19
|
+
if (isLastDepthLevel) {
|
|
20
|
+
if ((0, isNonNullObject_1.default)(objectOfCurrentDepthLevel)) {
|
|
21
|
+
Object.defineProperty(objectOfCurrentDepthLevel, propertyKeyForCurrentDepthLevel, {
|
|
22
|
+
value: propertyDescriptor.value,
|
|
23
|
+
enumerable: propertyDescriptor.enumerable ?? true,
|
|
24
|
+
configurable: propertyDescriptor.configurable ?? true,
|
|
25
|
+
writable: propertyDescriptor.writable ?? true
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
else if ((0, isNonNullObject_1.default)(valueOfNextDepthLevel)) {
|
|
33
|
+
objectOfCurrentDepthLevel = valueOfNextDepthLevel;
|
|
34
|
+
}
|
|
35
|
+
else if ((0, isUndefined_1.default)(valueOfNextDepthLevel) && propertyDescriptor.mustCreateParentsObjectsIfNotPresent === true) {
|
|
36
|
+
const propertyKeyForNextDepthLevel = targetPropertyPathSegments[depthLevel__numerationFrom1];
|
|
37
|
+
valueOfNextDepthLevel = (0, isStringifiedNonNegativeIntegerOfRegularNotation_1.default)(propertyKeyForNextDepthLevel) ? [] : {};
|
|
38
|
+
Object.defineProperty(objectOfCurrentDepthLevel, propertyKeyForCurrentDepthLevel, {
|
|
39
|
+
value: valueOfNextDepthLevel,
|
|
40
|
+
enumerable: true,
|
|
41
|
+
configurable: true,
|
|
42
|
+
writable: true
|
|
43
|
+
});
|
|
44
|
+
objectOfCurrentDepthLevel = valueOfNextDepthLevel;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -30,6 +30,8 @@ const isEitherUndefinedOrNull_1 = __importDefault(require("../TypeGuards/EmptyTy
|
|
|
30
30
|
const isNeitherUndefinedNorNull_1 = __importDefault(require("../TypeGuards/EmptyTypes/isNeitherUndefinedNorNull"));
|
|
31
31
|
const emptyStringToNull_1 = __importDefault(require("../ValueTransformers/emptyStringToNull"));
|
|
32
32
|
const getLastElementOfArray_1 = __importDefault(require("../Arrays/01-RetrievingOfElements/getLastElementOfArray"));
|
|
33
|
+
const ValuesDeepCopier_1 = __importDefault(require("../ValuesDeepCopier"));
|
|
34
|
+
const getObjectPropertySafely_1 = __importDefault(require("../Objects/getObjectPropertySafely"));
|
|
33
35
|
class RawObjectDataProcessor {
|
|
34
36
|
static defaultLocalization = RawObjectDataProcessorLocalization_english_1.default;
|
|
35
37
|
rawData;
|
|
@@ -37,8 +39,9 @@ class RawObjectDataProcessor {
|
|
|
37
39
|
localization;
|
|
38
40
|
errorHandlingStrategies;
|
|
39
41
|
validationErrorsMessages = [];
|
|
40
|
-
|
|
42
|
+
currentlyIteratedPropertyQualifiedInitialNameSegments = [];
|
|
41
43
|
currentlyIteratedPropertyNewNamesByDepthLevelsForLogging = [];
|
|
44
|
+
initialObjectSnapshot;
|
|
42
45
|
static process(rawData, validDataSpecification, options = {}) {
|
|
43
46
|
const localization = options.localization ?? RawObjectDataProcessor.defaultLocalization;
|
|
44
47
|
if (typeof rawData !== "object") {
|
|
@@ -155,6 +158,15 @@ class RawObjectDataProcessor {
|
|
|
155
158
|
onUnableToUpdatePropertyValue: errorHandlingStrategies.onUnableToUpdatePropertyValue ??
|
|
156
159
|
RawObjectDataProcessor.ErrorHandlingStrategies.throwingOfError
|
|
157
160
|
};
|
|
161
|
+
switch (this.processingApproach) {
|
|
162
|
+
case RawObjectDataProcessor.ProcessingApproaches.assemblingOfNewObject: {
|
|
163
|
+
this.initialObjectSnapshot = this.rawData;
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
166
|
+
case RawObjectDataProcessor.ProcessingApproaches.manipulationsWithSourceObject: {
|
|
167
|
+
this.initialObjectSnapshot = null;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
158
170
|
}
|
|
159
171
|
processFixedSchemaObjectTypeValue({ targetObjectTypeValueSpecification, parentObject, targetPropertyStringifiedValueBeforeFirstPreValidationModification, ...compoundParameter }) {
|
|
160
172
|
let targetObjectTypeSourceValue;
|
|
@@ -186,7 +198,7 @@ class RawObjectDataProcessor {
|
|
|
186
198
|
}
|
|
187
199
|
let processedValueWorkpiece = this.processingApproach === RawObjectDataProcessor.ProcessingApproaches.manipulationsWithSourceObject ?
|
|
188
200
|
targetObjectTypeSourceValue : {};
|
|
189
|
-
const currentObjectDepthLevel__countFromZero = this.
|
|
201
|
+
const currentObjectDepthLevel__countFromZero = this.currentlyIteratedPropertyQualifiedInitialNameSegments.length;
|
|
190
202
|
const initialNamesOfNotCheckedYetProperties = new Set(Object.keys(targetObjectTypeSourceValue));
|
|
191
203
|
let hasAtLeastOneInvalidPropertyBeenDetected = false;
|
|
192
204
|
let hasAllChildrenPropertiesValuesDefinitelyNotChanged = true;
|
|
@@ -199,7 +211,8 @@ class RawObjectDataProcessor {
|
|
|
199
211
|
if (possibleSchema.actualIf({
|
|
200
212
|
rawData__currentObjectDepth: targetObjectTypeSourceValue,
|
|
201
213
|
rawData__full: this.rawData,
|
|
202
|
-
targetPropertyDotSeparatedPath: this.currentObjectPropertyDotSeparatedQualifiedName
|
|
214
|
+
targetPropertyDotSeparatedPath: this.currentObjectPropertyDotSeparatedQualifiedName,
|
|
215
|
+
targetPropertyPathSegments: [...this.currentlyIteratedPropertyQualifiedInitialNameSegments]
|
|
203
216
|
})) {
|
|
204
217
|
propertiesSpecification = possibleSchema.properties;
|
|
205
218
|
break;
|
|
@@ -220,11 +233,13 @@ class RawObjectDataProcessor {
|
|
|
220
233
|
}
|
|
221
234
|
for (const [childPropertyInitialName, childPropertySpecification] of Object.entries(propertiesSpecification)) {
|
|
222
235
|
initialNamesOfNotCheckedYetProperties.delete(childPropertyInitialName);
|
|
223
|
-
this.
|
|
236
|
+
this.currentlyIteratedPropertyQualifiedInitialNameSegments[currentObjectDepthLevel__countFromZero] =
|
|
237
|
+
childPropertyInitialName;
|
|
224
238
|
let childPropertyFinalName;
|
|
225
239
|
if ((0, isUndefined_1.default)(childPropertySpecification.newName)) {
|
|
226
240
|
childPropertyFinalName = childPropertyInitialName;
|
|
227
241
|
this.currentlyIteratedPropertyNewNamesByDepthLevelsForLogging[currentObjectDepthLevel__countFromZero] = null;
|
|
242
|
+
this.createInitialObjectSnapshotIfNotCreatedYet();
|
|
228
243
|
}
|
|
229
244
|
else {
|
|
230
245
|
childPropertyFinalName = childPropertySpecification.newName;
|
|
@@ -257,6 +272,7 @@ class RawObjectDataProcessor {
|
|
|
257
272
|
(0, ArbitraryValueFormatter_1.stringifyAndFormatArbitraryValue)(childPropertyMutableValue);
|
|
258
273
|
hasChildPropertyValueDefinitelyNotChanged = false;
|
|
259
274
|
hasAllChildrenPropertiesValuesDefinitelyNotChanged = false;
|
|
275
|
+
this.createInitialObjectSnapshotIfNotCreatedYet();
|
|
260
276
|
}
|
|
261
277
|
for (const preValidationModification of preValidationModifications) {
|
|
262
278
|
try {
|
|
@@ -301,10 +317,25 @@ class RawObjectDataProcessor {
|
|
|
301
317
|
continue;
|
|
302
318
|
}
|
|
303
319
|
if ((0, isNotUndefined_1.default)(childPropertySpecification.undefinedForbiddenIf)) {
|
|
320
|
+
const rawData__full = this.createInitialObjectSnapshotIfNotCreatedYet();
|
|
321
|
+
let rawData__currentObjectDepth;
|
|
322
|
+
switch (this.processingApproach) {
|
|
323
|
+
case RawObjectDataProcessor.ProcessingApproaches.assemblingOfNewObject: {
|
|
324
|
+
rawData__currentObjectDepth = targetObjectTypeSourceValue;
|
|
325
|
+
break;
|
|
326
|
+
}
|
|
327
|
+
case RawObjectDataProcessor.ProcessingApproaches.manipulationsWithSourceObject: {
|
|
328
|
+
rawData__currentObjectDepth =
|
|
329
|
+
this.currentlyIteratedPropertyQualifiedInitialNameSegments.length > 1 ?
|
|
330
|
+
(0, getObjectPropertySafely_1.default)(rawData__full, this.currentlyIteratedPropertyQualifiedInitialNameSegments.slice(0, -1)) :
|
|
331
|
+
rawData__full;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
304
334
|
if (childPropertySpecification.undefinedForbiddenIf.predicate({
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
targetPropertyDotSeparatedPath: this.currentObjectPropertyDotSeparatedQualifiedName
|
|
335
|
+
rawData__full,
|
|
336
|
+
rawData__currentObjectDepth,
|
|
337
|
+
targetPropertyDotSeparatedPath: this.currentObjectPropertyDotSeparatedQualifiedName,
|
|
338
|
+
targetPropertyPathSegments: [...this.currentlyIteratedPropertyQualifiedInitialNameSegments]
|
|
308
339
|
})) {
|
|
309
340
|
hasAtLeastOneInvalidPropertyBeenDetected = true;
|
|
310
341
|
this.registerValidationError({
|
|
@@ -324,30 +355,47 @@ class RawObjectDataProcessor {
|
|
|
324
355
|
}
|
|
325
356
|
}
|
|
326
357
|
else if ((0, isNotUndefined_1.default)(childPropertySpecification.undefinedValueSubstitution)) {
|
|
358
|
+
this.createInitialObjectSnapshotIfNotCreatedYet();
|
|
327
359
|
childPropertyMutableValue = childPropertySpecification.undefinedValueSubstitution;
|
|
328
360
|
hasChildPropertyValueDefinitelyNotChanged = false;
|
|
329
361
|
hasAllChildrenPropertiesValuesDefinitelyNotChanged = false;
|
|
330
362
|
}
|
|
331
363
|
}
|
|
332
|
-
else if ("mustBeUndefinedIf" in childPropertySpecification
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
364
|
+
else if ("mustBeUndefinedIf" in childPropertySpecification) {
|
|
365
|
+
const rawData__full = this.createInitialObjectSnapshotIfNotCreatedYet();
|
|
366
|
+
let rawData__currentObjectDepth;
|
|
367
|
+
switch (this.processingApproach) {
|
|
368
|
+
case RawObjectDataProcessor.ProcessingApproaches.assemblingOfNewObject: {
|
|
369
|
+
rawData__currentObjectDepth = targetObjectTypeSourceValue;
|
|
370
|
+
break;
|
|
371
|
+
}
|
|
372
|
+
case RawObjectDataProcessor.ProcessingApproaches.manipulationsWithSourceObject: {
|
|
373
|
+
rawData__currentObjectDepth =
|
|
374
|
+
this.currentlyIteratedPropertyQualifiedInitialNameSegments.length > 1 ?
|
|
375
|
+
(0, getObjectPropertySafely_1.default)(rawData__full, this.currentlyIteratedPropertyQualifiedInitialNameSegments.slice(0, -1)) :
|
|
376
|
+
rawData__full;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
if (childPropertySpecification.mustBeUndefinedIf?.predicate({
|
|
380
|
+
rawData__currentObjectDepth,
|
|
381
|
+
rawData__full,
|
|
382
|
+
targetPropertyDotSeparatedPath: this.currentObjectPropertyDotSeparatedQualifiedName,
|
|
383
|
+
targetPropertyPathSegments: [...this.currentlyIteratedPropertyQualifiedInitialNameSegments]
|
|
337
384
|
}) === true) {
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
385
|
+
this.registerValidationError({
|
|
386
|
+
title: this.localization.validationErrors.conditionallyForbiddenNonUndefinedValue.title,
|
|
387
|
+
description: this.localization.validationErrors.conditionallyForbiddenNonUndefinedValue.generateDescription({
|
|
388
|
+
verbalConditionWhenMustBeUndefinedWithoutEndOfSentenceMark: childPropertySpecification.mustBeUndefinedIf.descriptionForLogging
|
|
389
|
+
}),
|
|
390
|
+
targetPropertyDotSeparatedQualifiedInitialName: this.currentObjectPropertyDotSeparatedQualifiedName,
|
|
391
|
+
targetPropertyNewName: childPropertySpecification.newName ?? null,
|
|
392
|
+
targetPropertyValue: childPropertyMutableValue,
|
|
393
|
+
targetPropertyValueSpecification: childPropertySpecification,
|
|
394
|
+
targetPropertyStringifiedValueBeforeFirstPreValidationModification: childPropertyStringifiedValueBeforeFirstPreValidationModification,
|
|
395
|
+
documentationPageAnchor: "VALIDATION_ERRORS_MESSAGES-CONDITIONALLY_FORBIDDEN_NON_UNDEFINED_VALUE"
|
|
396
|
+
});
|
|
397
|
+
continue;
|
|
398
|
+
}
|
|
351
399
|
}
|
|
352
400
|
if (!(0, isBoolean_1.default)(childPropertySpecification.isNullForbidden) &&
|
|
353
401
|
(0, isUndefined_1.default)(childPropertySpecification.nullForbiddenIf) &&
|
|
@@ -379,10 +427,25 @@ class RawObjectDataProcessor {
|
|
|
379
427
|
continue;
|
|
380
428
|
}
|
|
381
429
|
if ((0, isNotUndefined_1.default)(childPropertySpecification.nullForbiddenIf)) {
|
|
430
|
+
const rawData__full = this.createInitialObjectSnapshotIfNotCreatedYet();
|
|
431
|
+
let rawData__currentObjectDepth;
|
|
432
|
+
switch (this.processingApproach) {
|
|
433
|
+
case RawObjectDataProcessor.ProcessingApproaches.assemblingOfNewObject: {
|
|
434
|
+
rawData__currentObjectDepth = targetObjectTypeSourceValue;
|
|
435
|
+
break;
|
|
436
|
+
}
|
|
437
|
+
case RawObjectDataProcessor.ProcessingApproaches.manipulationsWithSourceObject: {
|
|
438
|
+
rawData__currentObjectDepth =
|
|
439
|
+
this.currentlyIteratedPropertyQualifiedInitialNameSegments.length > 1 ?
|
|
440
|
+
(0, getObjectPropertySafely_1.default)(rawData__full, this.currentlyIteratedPropertyQualifiedInitialNameSegments.slice(0, -1)) :
|
|
441
|
+
rawData__full;
|
|
442
|
+
}
|
|
443
|
+
}
|
|
382
444
|
if (childPropertySpecification.nullForbiddenIf.predicate({
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
targetPropertyDotSeparatedPath: this.currentObjectPropertyDotSeparatedQualifiedName
|
|
445
|
+
rawData__full,
|
|
446
|
+
rawData__currentObjectDepth,
|
|
447
|
+
targetPropertyDotSeparatedPath: this.currentObjectPropertyDotSeparatedQualifiedName,
|
|
448
|
+
targetPropertyPathSegments: [...this.currentlyIteratedPropertyQualifiedInitialNameSegments]
|
|
386
449
|
})) {
|
|
387
450
|
hasAtLeastOneInvalidPropertyBeenDetected = true;
|
|
388
451
|
this.registerValidationError({
|
|
@@ -402,30 +465,47 @@ class RawObjectDataProcessor {
|
|
|
402
465
|
}
|
|
403
466
|
}
|
|
404
467
|
else if ((0, isNotUndefined_1.default)(childPropertySpecification.nullValueSubstitution)) {
|
|
468
|
+
this.createInitialObjectSnapshotIfNotCreatedYet();
|
|
405
469
|
childPropertyMutableValue = childPropertySpecification.nullValueSubstitution;
|
|
406
470
|
hasChildPropertyValueDefinitelyNotChanged = false;
|
|
407
471
|
hasAllChildrenPropertiesValuesDefinitelyNotChanged = false;
|
|
408
472
|
}
|
|
409
473
|
}
|
|
410
|
-
else if ("mustBeNullIf" in childPropertySpecification
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
474
|
+
else if ("mustBeNullIf" in childPropertySpecification) {
|
|
475
|
+
const rawData__full = this.createInitialObjectSnapshotIfNotCreatedYet();
|
|
476
|
+
let rawData__currentObjectDepth;
|
|
477
|
+
switch (this.processingApproach) {
|
|
478
|
+
case RawObjectDataProcessor.ProcessingApproaches.assemblingOfNewObject: {
|
|
479
|
+
rawData__currentObjectDepth = targetObjectTypeSourceValue;
|
|
480
|
+
break;
|
|
481
|
+
}
|
|
482
|
+
case RawObjectDataProcessor.ProcessingApproaches.manipulationsWithSourceObject: {
|
|
483
|
+
rawData__currentObjectDepth =
|
|
484
|
+
this.currentlyIteratedPropertyQualifiedInitialNameSegments.length > 1 ?
|
|
485
|
+
(0, getObjectPropertySafely_1.default)(rawData__full, this.currentlyIteratedPropertyQualifiedInitialNameSegments.slice(0, -1).join(".")) :
|
|
486
|
+
rawData__full;
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
if (childPropertySpecification.mustBeNullIf?.predicate({
|
|
490
|
+
rawData__currentObjectDepth,
|
|
491
|
+
rawData__full,
|
|
492
|
+
targetPropertyDotSeparatedPath: this.currentObjectPropertyDotSeparatedQualifiedName,
|
|
493
|
+
targetPropertyPathSegments: [...this.currentlyIteratedPropertyQualifiedInitialNameSegments]
|
|
415
494
|
}) === true) {
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
495
|
+
this.registerValidationError({
|
|
496
|
+
title: this.localization.validationErrors.conditionallyForbiddenNonNullValue.title,
|
|
497
|
+
description: this.localization.validationErrors.conditionallyForbiddenNonNullValue.generateDescription({
|
|
498
|
+
verbalConditionWhenMustBeNullWithoutEndOfSentenceMark: childPropertySpecification.mustBeNullIf.descriptionForLogging
|
|
499
|
+
}),
|
|
500
|
+
targetPropertyDotSeparatedQualifiedInitialName: this.currentObjectPropertyDotSeparatedQualifiedName,
|
|
501
|
+
targetPropertyNewName: childPropertySpecification.newName ?? null,
|
|
502
|
+
targetPropertyValue: childPropertyMutableValue,
|
|
503
|
+
targetPropertyValueSpecification: childPropertySpecification,
|
|
504
|
+
targetPropertyStringifiedValueBeforeFirstPreValidationModification: childPropertyStringifiedValueBeforeFirstPreValidationModification,
|
|
505
|
+
documentationPageAnchor: "VALIDATION_ERRORS_MESSAGES-CONDITIONALLY_FORBIDDEN_NON_NULL_VALUE"
|
|
506
|
+
});
|
|
507
|
+
continue;
|
|
508
|
+
}
|
|
429
509
|
}
|
|
430
510
|
if ((0, isNeitherUndefinedNorNull_1.default)(childPropertyMutableValue)) {
|
|
431
511
|
const childPropertyValueProcessingResult = this.processSingleNeitherUndefinedNorNullValue({
|
|
@@ -608,7 +688,7 @@ class RawObjectDataProcessor {
|
|
|
608
688
|
}
|
|
609
689
|
}
|
|
610
690
|
}
|
|
611
|
-
this.
|
|
691
|
+
this.currentlyIteratedPropertyQualifiedInitialNameSegments.splice(-1, 1);
|
|
612
692
|
this.currentlyIteratedPropertyNewNamesByDepthLevelsForLogging.splice(-1, 1);
|
|
613
693
|
if (targetObjectTypeValueSpecification.mustExpectOnlySpecifiedProperties === true &&
|
|
614
694
|
initialNamesOfNotCheckedYetProperties.size > 0) {
|
|
@@ -654,8 +734,12 @@ class RawObjectDataProcessor {
|
|
|
654
734
|
else if (this.isValidationOnlyMode) {
|
|
655
735
|
return { thisOneIsValidButPostProcessingDisabledForPerformanceBecauseDataIsInvalidInLarge: true };
|
|
656
736
|
}
|
|
657
|
-
|
|
658
|
-
getNormalizedPostValidationModifications(targetObjectTypeValueSpecification.postValidationModifications)
|
|
737
|
+
const normalizedPostValidationModifications = RawObjectDataProcessor.
|
|
738
|
+
getNormalizedPostValidationModifications(targetObjectTypeValueSpecification.postValidationModifications);
|
|
739
|
+
if (normalizedPostValidationModifications.length > 0) {
|
|
740
|
+
this.createInitialObjectSnapshotIfNotCreatedYet();
|
|
741
|
+
}
|
|
742
|
+
for (const postValidationModification of normalizedPostValidationModifications) {
|
|
659
743
|
processedValueWorkpiece = postValidationModification(processedValueWorkpiece);
|
|
660
744
|
}
|
|
661
745
|
for (const keyOfPropertyWhichWillBeDeleted of targetObjectTypeValueSpecification.propertiesWillBeDeletedAfterPostValidationModifications ?? []) {
|
|
@@ -775,7 +859,7 @@ class RawObjectDataProcessor {
|
|
|
775
859
|
}
|
|
776
860
|
let processedValueWorkpiece = this.processingApproach === RawObjectDataProcessor.ProcessingApproaches.manipulationsWithSourceObject ?
|
|
777
861
|
targetObjectTypeSourceValue : {};
|
|
778
|
-
const currentObjectDepthLevel__countFromZero = this.
|
|
862
|
+
const currentObjectDepthLevel__countFromZero = this.currentlyIteratedPropertyQualifiedInitialNameSegments.length;
|
|
779
863
|
let hasAtLeastOneInvalidValueBeenDetected = false;
|
|
780
864
|
const forbiddenKeys = targetAssociativeArrayTypeValueSpecification.forbiddenKeys ?? [];
|
|
781
865
|
let allowedKeys;
|
|
@@ -800,8 +884,7 @@ class RawObjectDataProcessor {
|
|
|
800
884
|
let hasAllEntriesDefinitelyNotChanged = true;
|
|
801
885
|
const foundDisallowedKeys = [];
|
|
802
886
|
for (const [initialKey, rawValue] of Object.entries(targetObjectTypeSourceValue)) {
|
|
803
|
-
this.
|
|
804
|
-
initialKey;
|
|
887
|
+
this.currentlyIteratedPropertyQualifiedInitialNameSegments[currentObjectDepthLevel__countFromZero] = initialKey;
|
|
805
888
|
if (!allowedKeys.includes(initialKey)) {
|
|
806
889
|
foundDisallowedKeys.push(initialKey);
|
|
807
890
|
}
|
|
@@ -810,8 +893,9 @@ class RawObjectDataProcessor {
|
|
|
810
893
|
if ((0, isNotNull_1.default)(newNameOfKey)) {
|
|
811
894
|
this.currentlyIteratedPropertyNewNamesByDepthLevelsForLogging[currentObjectDepthLevel__countFromZero] =
|
|
812
895
|
newNameOfKey;
|
|
896
|
+
this.createInitialObjectSnapshotIfNotCreatedYet();
|
|
813
897
|
}
|
|
814
|
-
if (hasAllEntriesDefinitelyNotChanged &&
|
|
898
|
+
if (hasAllEntriesDefinitelyNotChanged && (0, isNotNull_1.default)(newNameOfKey)) {
|
|
815
899
|
hasAllEntriesDefinitelyNotChanged = false;
|
|
816
900
|
}
|
|
817
901
|
let hasValueDefinitelyNotChanged = true;
|
|
@@ -828,6 +912,7 @@ class RawObjectDataProcessor {
|
|
|
828
912
|
stringifiedValueBeforeFirstPreValidationModification = (0, ArbitraryValueFormatter_1.stringifyAndFormatArbitraryValue)(mutableValue);
|
|
829
913
|
hasValueDefinitelyNotChanged = false;
|
|
830
914
|
hasAllEntriesDefinitelyNotChanged = false;
|
|
915
|
+
this.createInitialObjectSnapshotIfNotCreatedYet();
|
|
831
916
|
}
|
|
832
917
|
for (const preValidationModification of preValidationModifications) {
|
|
833
918
|
try {
|
|
@@ -963,7 +1048,7 @@ class RawObjectDataProcessor {
|
|
|
963
1048
|
}
|
|
964
1049
|
}
|
|
965
1050
|
}
|
|
966
|
-
this.
|
|
1051
|
+
this.currentlyIteratedPropertyQualifiedInitialNameSegments.splice(-1, 1);
|
|
967
1052
|
this.currentlyIteratedPropertyNewNamesByDepthLevelsForLogging.splice(-1, 1);
|
|
968
1053
|
if (foundDisallowedKeys.length > 0) {
|
|
969
1054
|
hasTargetAssociativeArraySpecificEntryIndependentViolations = true;
|
|
@@ -1007,8 +1092,12 @@ class RawObjectDataProcessor {
|
|
|
1007
1092
|
else if (this.isValidationOnlyMode) {
|
|
1008
1093
|
return { thisOneIsValidButPostProcessingDisabledForPerformanceBecauseDataIsInvalidInLarge: true };
|
|
1009
1094
|
}
|
|
1010
|
-
|
|
1011
|
-
getNormalizedPostValidationModifications(targetAssociativeArrayTypeValueSpecification.postValidationModifications)
|
|
1095
|
+
const normalizedPostValidationModifications = RawObjectDataProcessor.
|
|
1096
|
+
getNormalizedPostValidationModifications(targetAssociativeArrayTypeValueSpecification.postValidationModifications);
|
|
1097
|
+
if (normalizedPostValidationModifications.length > 0) {
|
|
1098
|
+
this.createInitialObjectSnapshotIfNotCreatedYet();
|
|
1099
|
+
}
|
|
1100
|
+
for (const postValidationModification of normalizedPostValidationModifications) {
|
|
1012
1101
|
processedValueWorkpiece = postValidationModification(processedValueWorkpiece);
|
|
1013
1102
|
}
|
|
1014
1103
|
return {
|
|
@@ -1118,12 +1207,11 @@ class RawObjectDataProcessor {
|
|
|
1118
1207
|
}
|
|
1119
1208
|
let processedValueWorkpiece = this.processingApproach === RawObjectDataProcessor.ProcessingApproaches.manipulationsWithSourceObject ?
|
|
1120
1209
|
targetArrayedTypeSourceValue : [];
|
|
1121
|
-
const currentObjectDepthLevel__beginWithZero = this.
|
|
1210
|
+
const currentObjectDepthLevel__beginWithZero = this.currentlyIteratedPropertyQualifiedInitialNameSegments.length;
|
|
1122
1211
|
let hasAtLeastOneInvalidElementBeenDetected = false;
|
|
1123
1212
|
let hasAllElementsDefinitelyNotChanged = true;
|
|
1124
1213
|
for (const [index, rawElement] of targetArrayedTypeSourceValue.entries()) {
|
|
1125
|
-
this.
|
|
1126
|
-
index;
|
|
1214
|
+
this.currentlyIteratedPropertyQualifiedInitialNameSegments[currentObjectDepthLevel__beginWithZero] = index;
|
|
1127
1215
|
let hasElementDefinitelyNotChanged = true;
|
|
1128
1216
|
const preValidationModifications = RawObjectDataProcessor.
|
|
1129
1217
|
getNormalizedPreValidationModifications({
|
|
@@ -1138,6 +1226,7 @@ class RawObjectDataProcessor {
|
|
|
1138
1226
|
stringifiedElementBeforeFirstPreValidationModification = (0, ArbitraryValueFormatter_1.stringifyAndFormatArbitraryValue)(mutableElement);
|
|
1139
1227
|
hasElementDefinitelyNotChanged = false;
|
|
1140
1228
|
hasAllElementsDefinitelyNotChanged = false;
|
|
1229
|
+
this.createInitialObjectSnapshotIfNotCreatedYet();
|
|
1141
1230
|
}
|
|
1142
1231
|
for (const preValidationModification of preValidationModifications) {
|
|
1143
1232
|
try {
|
|
@@ -1217,7 +1306,7 @@ class RawObjectDataProcessor {
|
|
|
1217
1306
|
}
|
|
1218
1307
|
}
|
|
1219
1308
|
}
|
|
1220
|
-
this.
|
|
1309
|
+
this.currentlyIteratedPropertyQualifiedInitialNameSegments.splice(-1, 1);
|
|
1221
1310
|
for (const customValidator of RawObjectDataProcessor.getNormalizedCustomValidators(targetIndexedArrayTypeValueSpecification.customValidators)) {
|
|
1222
1311
|
if (!customValidator.validationFunction({
|
|
1223
1312
|
value: targetArrayedTypeSourceValue,
|
|
@@ -1246,8 +1335,12 @@ class RawObjectDataProcessor {
|
|
|
1246
1335
|
else if (this.isValidationOnlyMode) {
|
|
1247
1336
|
return { thisOneIsValidButPostProcessingDisabledForPerformanceBecauseDataIsInvalidInLarge: true };
|
|
1248
1337
|
}
|
|
1249
|
-
|
|
1250
|
-
getNormalizedPostValidationModifications(targetIndexedArrayTypeValueSpecification.postValidationModifications)
|
|
1338
|
+
const normalizedPostValidationModifications = RawObjectDataProcessor.
|
|
1339
|
+
getNormalizedPostValidationModifications(targetIndexedArrayTypeValueSpecification.postValidationModifications);
|
|
1340
|
+
if (normalizedPostValidationModifications.length > 0) {
|
|
1341
|
+
this.createInitialObjectSnapshotIfNotCreatedYet();
|
|
1342
|
+
}
|
|
1343
|
+
for (const postValidationModification of normalizedPostValidationModifications) {
|
|
1251
1344
|
processedValueWorkpiece = postValidationModification(processedValueWorkpiece);
|
|
1252
1345
|
}
|
|
1253
1346
|
return {
|
|
@@ -1322,13 +1415,12 @@ class RawObjectDataProcessor {
|
|
|
1322
1415
|
}
|
|
1323
1416
|
let processedValueWorkpiece = this.processingApproach === RawObjectDataProcessor.ProcessingApproaches.manipulationsWithSourceObject ?
|
|
1324
1417
|
targetArrayedTypeSourceValue : [];
|
|
1325
|
-
const currentObjectDepthLevel__beginWithZero = this.
|
|
1418
|
+
const currentObjectDepthLevel__beginWithZero = this.currentlyIteratedPropertyQualifiedInitialNameSegments.length;
|
|
1326
1419
|
let hasAtLeastOneInvalidElementBeenDetected = false;
|
|
1327
1420
|
let hasAllElementsDefinitelyNotChanged = true;
|
|
1328
1421
|
for (const [elementStringifiedIndex, elementSpecification] of Object.entries(targetTupleTypeValueSpecification.elements)) {
|
|
1329
1422
|
const elementIndex = Number.parseInt(elementStringifiedIndex, 10);
|
|
1330
|
-
this.
|
|
1331
|
-
elementIndex;
|
|
1423
|
+
this.currentlyIteratedPropertyQualifiedInitialNameSegments[currentObjectDepthLevel__beginWithZero] = elementIndex;
|
|
1332
1424
|
let hasElementDefinitelyNotChanged = true;
|
|
1333
1425
|
const preValidationModifications = RawObjectDataProcessor.
|
|
1334
1426
|
getNormalizedPreValidationModifications({
|
|
@@ -1342,6 +1434,7 @@ class RawObjectDataProcessor {
|
|
|
1342
1434
|
stringifiedElementBeforeFirstPreValidationModification = (0, ArbitraryValueFormatter_1.stringifyAndFormatArbitraryValue)(mutableElement);
|
|
1343
1435
|
hasElementDefinitelyNotChanged = false;
|
|
1344
1436
|
hasAllElementsDefinitelyNotChanged = false;
|
|
1437
|
+
this.createInitialObjectSnapshotIfNotCreatedYet();
|
|
1345
1438
|
}
|
|
1346
1439
|
for (const preValidationModification of preValidationModifications) {
|
|
1347
1440
|
try {
|
|
@@ -1546,7 +1639,7 @@ class RawObjectDataProcessor {
|
|
|
1546
1639
|
}
|
|
1547
1640
|
}
|
|
1548
1641
|
}
|
|
1549
|
-
this.
|
|
1642
|
+
this.currentlyIteratedPropertyQualifiedInitialNameSegments.splice(-1, 1);
|
|
1550
1643
|
for (const customValidator of RawObjectDataProcessor.getNormalizedCustomValidators(targetTupleTypeValueSpecification.customValidators)) {
|
|
1551
1644
|
if (!customValidator.validationFunction({
|
|
1552
1645
|
value: targetArrayedTypeSourceValue,
|
|
@@ -1575,8 +1668,12 @@ class RawObjectDataProcessor {
|
|
|
1575
1668
|
else if (this.isValidationOnlyMode) {
|
|
1576
1669
|
return { thisOneIsValidButPostProcessingDisabledForPerformanceBecauseDataIsInvalidInLarge: true };
|
|
1577
1670
|
}
|
|
1578
|
-
|
|
1579
|
-
getNormalizedPostValidationModifications(targetTupleTypeValueSpecification.postValidationModifications)
|
|
1671
|
+
const normalizedPostValidationModifications = RawObjectDataProcessor.
|
|
1672
|
+
getNormalizedPostValidationModifications(targetTupleTypeValueSpecification.postValidationModifications);
|
|
1673
|
+
if (normalizedPostValidationModifications.length > 0) {
|
|
1674
|
+
this.createInitialObjectSnapshotIfNotCreatedYet();
|
|
1675
|
+
}
|
|
1676
|
+
for (const postValidationModification of normalizedPostValidationModifications) {
|
|
1580
1677
|
processedValueWorkpiece = postValidationModification(processedValueWorkpiece);
|
|
1581
1678
|
}
|
|
1582
1679
|
return {
|
|
@@ -1961,7 +2058,7 @@ class RawObjectDataProcessor {
|
|
|
1961
2058
|
description: this.localization.validationErrors.valueTypeDoesNotMatchWithExpected.
|
|
1962
2059
|
generateDescription({
|
|
1963
2060
|
actualNativeType: typeof targetValue__expectedToBeString,
|
|
1964
|
-
expectedTypeID: RawObjectDataProcessor.ValuesTypesIDs.
|
|
2061
|
+
expectedTypeID: RawObjectDataProcessor.ValuesTypesIDs.string
|
|
1965
2062
|
}),
|
|
1966
2063
|
targetPropertyDotSeparatedQualifiedInitialName: this.currentObjectPropertyDotSeparatedQualifiedName,
|
|
1967
2064
|
targetPropertyNewName: (0, getLastElementOfArray_1.default)(this.currentlyIteratedPropertyNewNamesByDepthLevelsForLogging),
|
|
@@ -2292,11 +2389,18 @@ class RawObjectDataProcessor {
|
|
|
2292
2389
|
});
|
|
2293
2390
|
}
|
|
2294
2391
|
get currentObjectPropertyDotSeparatedQualifiedName() {
|
|
2295
|
-
return this.
|
|
2392
|
+
return this.currentlyIteratedPropertyQualifiedInitialNameSegments.join(".");
|
|
2296
2393
|
}
|
|
2297
2394
|
registerValidationError(payload) {
|
|
2298
2395
|
this.validationErrorsMessages.push(RawObjectDataProcessor.generateValidationErrorMessage(payload, this.localization));
|
|
2299
2396
|
}
|
|
2397
|
+
createInitialObjectSnapshotIfNotCreatedYet() {
|
|
2398
|
+
if (this.processingApproach === RawObjectDataProcessor.ProcessingApproaches.assemblingOfNewObject) {
|
|
2399
|
+
return this.rawData;
|
|
2400
|
+
}
|
|
2401
|
+
return this.initialObjectSnapshot ??
|
|
2402
|
+
(this.initialObjectSnapshot = ValuesDeepCopier_1.default.deeplyCloneObjectLikeValueAsPossible(this.rawData));
|
|
2403
|
+
}
|
|
2300
2404
|
handleFailedPreValidationModification({ error, propertyOrElementMutableValue, propertyOrElementValueSpecification, propertyOrElementStringifiedValueBeforeFirstPreValidationModification, occurrenceMethodName }) {
|
|
2301
2405
|
switch (this.errorHandlingStrategies.onPreValidationModificationFailed) {
|
|
2302
2406
|
case RawObjectDataProcessor.ErrorHandlingStrategies.throwingOfError: {
|