@openforis/arena-core 2.3.38 → 2.3.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth/authGroup.js.map +1 -1
- package/dist/auth/authGroups.d.ts +21 -11
- package/dist/auth/authGroups.js.map +1 -1
- package/dist/auth/authorizer.d.ts +64 -38
- package/dist/auth/authorizer.js.map +1 -1
- package/dist/auth/permission.js.map +1 -1
- package/dist/auth/user.js.map +1 -1
- package/dist/auth/users.d.ts +19 -9
- package/dist/auth/users.js +3 -2
- package/dist/auth/users.js.map +1 -1
- package/dist/category/categories.d.ts +7 -3
- package/dist/category/categories.js.map +1 -1
- package/dist/category/categoryImportSummary.js.map +1 -1
- package/dist/category/categoryItemGenerator.d.ts +6 -4
- package/dist/category/categoryItems.d.ts +9 -4
- package/dist/category/categoryItems.js +2 -1
- package/dist/category/categoryItems.js.map +1 -1
- package/dist/category/factory.js.map +1 -1
- package/dist/chain/chain.js.map +1 -1
- package/dist/common/index.js.map +1 -1
- package/dist/dataExport/FlatDataExportModel.js.map +1 -1
- package/dist/dataExport/FlatDataExportOptions.js.map +1 -1
- package/dist/dataExport/FlatDataFiles.d.ts +7 -5
- package/dist/dataExport/UniqueFileNamesGenerator.js.map +1 -1
- package/dist/dataQuery/dataQuery.js.map +1 -1
- package/dist/dataQuery/dataQuerySummaries.d.ts +28 -15
- package/dist/dataQuery/dataQuerySummaries.js +3 -3
- package/dist/dataQuery/dataQuerySummaries.js.map +1 -1
- package/dist/error/SystemError.js.map +1 -1
- package/dist/esm/auth/authGroups.js.map +1 -1
- package/dist/esm/auth/users.js +3 -2
- package/dist/esm/auth/users.js.map +1 -1
- package/dist/esm/category/categories.js.map +1 -1
- package/dist/esm/category/categoryItems.js +2 -1
- package/dist/esm/category/categoryItems.js.map +1 -1
- package/dist/esm/dataExport/FlatDataExportModel.js.map +1 -1
- package/dist/esm/dataQuery/dataQuerySummaries.js +3 -3
- package/dist/esm/dataQuery/dataQuerySummaries.js.map +1 -1
- package/dist/esm/expression/javascript/evaluator.js.map +1 -1
- package/dist/esm/extraProp/extraProps.js.map +1 -1
- package/dist/esm/geo/pointFactory.js.map +1 -1
- package/dist/esm/geo/points/bearing.js +1 -1
- package/dist/esm/geo/points/bearing.js.map +1 -1
- package/dist/esm/geo/points/distance.js +1 -1
- package/dist/esm/geo/points/distance.js.map +1 -1
- package/dist/esm/geo/points/isValid.js.map +1 -1
- package/dist/esm/geo/points/transform.js.map +1 -1
- package/dist/esm/job/JobBase.js +4 -3
- package/dist/esm/job/JobBase.js.map +1 -1
- package/dist/esm/message/messages.js +9 -8
- package/dist/esm/message/messages.js.map +1 -1
- package/dist/esm/node/factory.js +2 -1
- package/dist/esm/node/factory.js.map +1 -1
- package/dist/esm/node/nodeValueFormatter.js +2 -1
- package/dist/esm/node/nodeValueFormatter.js.map +1 -1
- package/dist/esm/node/nodeValues.js +3 -2
- package/dist/esm/node/nodeValues.js.map +1 -1
- package/dist/esm/node/nodes.js +4 -4
- package/dist/esm/node/nodes.js.map +1 -1
- package/dist/esm/nodeDef/nodeDefs.js +10 -10
- package/dist/esm/nodeDef/nodeDefs.js.map +1 -1
- package/dist/esm/nodeDefExpressionEvaluator/evaluator.js.map +1 -1
- package/dist/esm/nodeDefExpressionEvaluator/functions.js.map +1 -1
- package/dist/esm/nodeDefExpressionEvaluator/node/identifier.js +3 -2
- package/dist/esm/nodeDefExpressionEvaluator/node/identifier.js.map +1 -1
- package/dist/esm/nodeDefExpressionEvaluator/node/member.js.map +1 -1
- package/dist/esm/nodeDefExpressionEvaluator/validator.js.map +1 -1
- package/dist/esm/record/_records/nodeDefSelfReferences.js.map +1 -1
- package/dist/esm/record/_records/recordGetters.js.map +1 -1
- package/dist/esm/record/_records/recordNodesIndexReader.js +6 -4
- package/dist/esm/record/_records/recordNodesIndexReader.js.map +1 -1
- package/dist/esm/record/_records/recordNodesIndexUpdater.js +10 -7
- package/dist/esm/record/_records/recordNodesIndexUpdater.js.map +1 -1
- package/dist/esm/record/_records/recordPagesValidation.js.map +1 -1
- package/dist/esm/record/_records/recordUpdater.js.map +1 -1
- package/dist/esm/record/factory.js +2 -1
- package/dist/esm/record/factory.js.map +1 -1
- package/dist/esm/record/recordCloner.js +2 -1
- package/dist/esm/record/recordCloner.js.map +1 -1
- package/dist/esm/record/recordExpressionEvaluator/functions.js.map +1 -1
- package/dist/esm/record/recordExpressionEvaluator/node/identifier/identifier.js +3 -2
- package/dist/esm/record/recordExpressionEvaluator/node/identifier/identifier.js.map +1 -1
- package/dist/esm/record/recordExpressionEvaluator/recordExpressionEvaluator.js +4 -7
- package/dist/esm/record/recordExpressionEvaluator/recordExpressionEvaluator.js.map +1 -1
- package/dist/esm/record/recordNodesUpdater/recordNodeDependentsApplicableUpdater.js.map +1 -1
- package/dist/esm/record/recordNodesUpdater/recordNodeDependentsBooleanUpdater.js.map +1 -1
- package/dist/esm/record/recordNodesUpdater/recordNodeDependentsCountUpdater.js.map +1 -1
- package/dist/esm/record/recordNodesUpdater/recordNodesDeleter.js.map +1 -1
- package/dist/esm/record/recordNodesUpdater/recordNodesUpdater.js.map +1 -1
- package/dist/esm/record/recordNodesUpdater/recordUpdateResult.js.map +1 -1
- package/dist/esm/record/recordUpdater.js.map +1 -1
- package/dist/esm/record/recordValidator/attributeTypeValidator.js +2 -2
- package/dist/esm/record/recordValidator/attributeTypeValidator.js.map +1 -1
- package/dist/esm/record/recordValidator/attributeUniqueValidator.js.map +1 -1
- package/dist/esm/record/recordValidator/attributeValidator.js.map +1 -1
- package/dist/esm/record/recordValidator/recordValidator.js.map +1 -1
- package/dist/esm/survey/nodeDefsFixer.js.map +1 -1
- package/dist/esm/survey/refData/factory.js +3 -2
- package/dist/esm/survey/refData/factory.js.map +1 -1
- package/dist/esm/survey/surveyDocImageFactory.js.map +1 -1
- package/dist/esm/survey/surveyDocImages.js.map +1 -1
- package/dist/esm/survey/surveyFileFactory.js.map +1 -1
- package/dist/esm/survey/surveys/_nodeDefs/nodeDefsIndex.js.map +1 -1
- package/dist/esm/survey/surveys/_nodeDefs/nodeDefsReader.js.map +1 -1
- package/dist/esm/survey/surveys/dependencies.js +2 -1
- package/dist/esm/survey/surveys/dependencies.js.map +1 -1
- package/dist/esm/survey/surveys/nodeDefs.js +4 -2
- package/dist/esm/survey/surveys/nodeDefs.js.map +1 -1
- package/dist/esm/survey/surveys/refsData.js +2 -1
- package/dist/esm/survey/surveys/refsData.js.map +1 -1
- package/dist/esm/survey/surveys/surveyGettersSecurity.js +1 -4
- package/dist/esm/survey/surveys/surveyGettersSecurity.js.map +1 -1
- package/dist/esm/survey/surveys/surveysGetters.js +5 -7
- package/dist/esm/survey/surveys/surveysGetters.js.map +1 -1
- package/dist/esm/taxonomy/taxa.js.map +1 -1
- package/dist/esm/taxonomy/taxonomies.js.map +1 -1
- package/dist/esm/tests/builder/recordBuilder/attributeBuilder.js.map +1 -1
- package/dist/esm/tests/builder/recordBuilder/index.js.map +1 -1
- package/dist/esm/tests/builder/recordBuilder/nodeBuilder.js.map +1 -1
- package/dist/esm/tests/builder/surveyBuilder/categoryItemBuilder.js.map +1 -1
- package/dist/esm/tests/builder/surveyBuilder/nodeDefAttributeBuilder.js.map +1 -1
- package/dist/esm/tests/builder/surveyBuilder/nodeDefBuilder.js.map +1 -1
- package/dist/esm/utils/_objects/camelize.js.map +1 -1
- package/dist/esm/utils/arrays.js.map +1 -1
- package/dist/esm/utils/dates.js.map +1 -1
- package/dist/esm/utils/fileNames.js.map +1 -1
- package/dist/esm/utils/fileProcessor.js +2 -1
- package/dist/esm/utils/fileProcessor.js.map +1 -1
- package/dist/esm/utils/numbers.js.map +1 -1
- package/dist/esm/utils/queue.js.map +1 -1
- package/dist/esm/utils/versions.js.map +1 -1
- package/dist/esm/validation/factory.js.map +1 -1
- package/dist/esm/validation/fieldValidators/numeric.js.map +1 -1
- package/dist/esm/validation/fieldValidators/numericPositive.js.map +1 -1
- package/dist/esm/validation/validationResults.js +1 -1
- package/dist/esm/validation/validationResults.js.map +1 -1
- package/dist/esm/validation/validations.js +2 -2
- package/dist/esm/validation/validations.js.map +1 -1
- package/dist/esm/validation/validator.js.map +1 -1
- package/dist/expression/javascript/evaluator.js.map +1 -1
- package/dist/expression/javascript/global.js.map +1 -1
- package/dist/expression/javascript/node/array.js.map +1 -1
- package/dist/expression/javascript/node/binary.js.map +1 -1
- package/dist/expression/javascript/node/call.js.map +1 -1
- package/dist/expression/javascript/node/compound.js.map +1 -1
- package/dist/expression/javascript/node/conditional.js.map +1 -1
- package/dist/expression/javascript/node/identifier.js.map +1 -1
- package/dist/expression/javascript/node/literal.js.map +1 -1
- package/dist/expression/javascript/node/member.js.map +1 -1
- package/dist/expression/javascript/node/sequence.js.map +1 -1
- package/dist/expression/javascript/node/this.js.map +1 -1
- package/dist/expression/javascript/node/unary.js.map +1 -1
- package/dist/expression/javascript/parser/jsep.js.map +1 -1
- package/dist/expression/javascript/parser/parser.js.map +1 -1
- package/dist/expression/node.js.map +1 -1
- package/dist/expression/variable.js.map +1 -1
- package/dist/extraProp/extraProp.js.map +1 -1
- package/dist/extraProp/extraProps.d.ts +9 -6
- package/dist/extraProp/extraProps.js.map +1 -1
- package/dist/extraProp/extraPropsDataGenerator.d.ts +7 -5
- package/dist/geo/pointFactory.js.map +1 -1
- package/dist/geo/points/bearing.js +5 -2
- package/dist/geo/points/bearing.js.map +1 -1
- package/dist/geo/points/distance.js +5 -2
- package/dist/geo/points/distance.js.map +1 -1
- package/dist/geo/points/equals.js.map +1 -1
- package/dist/geo/points/getSrs.js.map +1 -1
- package/dist/geo/points/index.d.ts +18 -14
- package/dist/geo/points/isFilled.js.map +1 -1
- package/dist/geo/points/isValid.js.map +1 -1
- package/dist/geo/points/parse.js.map +1 -1
- package/dist/geo/points/pointAtDistance.js.map +1 -1
- package/dist/geo/points/toLatLong.js.map +1 -1
- package/dist/geo/points/toString.js.map +1 -1
- package/dist/geo/points/transform.js.map +1 -1
- package/dist/job/JobBase.js +4 -3
- package/dist/job/JobBase.js.map +1 -1
- package/dist/job/jobEvent.js.map +1 -1
- package/dist/job/status.js.map +1 -1
- package/dist/language/languageCode.js.map +1 -1
- package/dist/language/languages.js.map +1 -1
- package/dist/message/message.js.map +1 -1
- package/dist/message/messages.d.ts +54 -28
- package/dist/message/messages.js +9 -8
- package/dist/message/messages.js.map +1 -1
- package/dist/node/factory.js +2 -1
- package/dist/node/factory.js.map +1 -1
- package/dist/node/node.js.map +1 -1
- package/dist/node/nodeValueFormatter.d.ts +2 -1
- package/dist/node/nodeValueFormatter.js +2 -1
- package/dist/node/nodeValueFormatter.js.map +1 -1
- package/dist/node/nodeValueProps.js.map +1 -1
- package/dist/node/nodeValues.d.ts +62 -41
- package/dist/node/nodeValues.js +3 -2
- package/dist/node/nodeValues.js.map +1 -1
- package/dist/node/nodes.d.ts +112 -86
- package/dist/node/nodes.js +4 -4
- package/dist/node/nodes.js.map +1 -1
- package/dist/nodeDef/nodeDef.js.map +1 -1
- package/dist/nodeDef/nodeDefs.d.ts +173 -86
- package/dist/nodeDef/nodeDefs.js +10 -10
- package/dist/nodeDef/nodeDefs.js.map +1 -1
- package/dist/nodeDef/types/entity.js.map +1 -1
- package/dist/nodeDef/types/file.js.map +1 -1
- package/dist/nodeDef/types/formHeader.js.map +1 -1
- package/dist/nodeDef/types/text.js.map +1 -1
- package/dist/nodeDefExpressionEvaluator/evaluator.js.map +1 -1
- package/dist/nodeDefExpressionEvaluator/functions.js.map +1 -1
- package/dist/nodeDefExpressionEvaluator/node/identifier.js +3 -2
- package/dist/nodeDefExpressionEvaluator/node/identifier.js.map +1 -1
- package/dist/nodeDefExpressionEvaluator/node/member.js.map +1 -1
- package/dist/nodeDefExpressionEvaluator/node/nodeDefExpressionNativeProperties.d.ts +11 -8
- package/dist/nodeDefExpressionEvaluator/node/thisEvaluator.d.ts +1 -1
- package/dist/nodeDefExpressionEvaluator/node/thisEvaluator.js.map +1 -1
- package/dist/nodeDefExpressionEvaluator/validator.js.map +1 -1
- package/dist/record/_records/nodeDefSelfReferences.d.ts +12 -4
- package/dist/record/_records/nodeDefSelfReferences.js.map +1 -1
- package/dist/record/_records/recordCompletion.js.map +1 -1
- package/dist/record/_records/recordGetters.js.map +1 -1
- package/dist/record/_records/recordNodesIndexReader.d.ts +14 -8
- package/dist/record/_records/recordNodesIndexReader.js +6 -4
- package/dist/record/_records/recordNodesIndexReader.js.map +1 -1
- package/dist/record/_records/recordNodesIndexUpdater.d.ts +22 -12
- package/dist/record/_records/recordNodesIndexUpdater.js +10 -7
- package/dist/record/_records/recordNodesIndexUpdater.js.map +1 -1
- package/dist/record/_records/recordPagesValidation.js.map +1 -1
- package/dist/record/_records/recordUpdater.js.map +1 -1
- package/dist/record/_records/recordUtils.js.map +1 -1
- package/dist/record/factory.js +2 -1
- package/dist/record/factory.js.map +1 -1
- package/dist/record/nodePointers.d.ts +13 -10
- package/dist/record/recordCloner.d.ts +11 -10
- package/dist/record/recordCloner.js +2 -1
- package/dist/record/recordCloner.js.map +1 -1
- package/dist/record/recordExpressionEvaluator/functions.js.map +1 -1
- package/dist/record/recordExpressionEvaluator/node/identifier/identifier.js +3 -2
- package/dist/record/recordExpressionEvaluator/node/identifier/identifier.js.map +1 -1
- package/dist/record/recordExpressionEvaluator/node/identifier/nodesFinder.d.ts +8 -6
- package/dist/record/recordExpressionEvaluator/node/thisEvaluator.js.map +1 -1
- package/dist/record/recordExpressionEvaluator/nodeValueExtractor.d.ts +7 -5
- package/dist/record/recordExpressionEvaluator/recordExpressionEvaluator.js +4 -7
- package/dist/record/recordExpressionEvaluator/recordExpressionEvaluator.js.map +1 -1
- package/dist/record/recordFixer.d.ts +19 -10
- package/dist/record/recordNodesUpdater/index.d.ts +8 -7
- package/dist/record/recordNodesUpdater/recordEnumeratingItemsExpressionEvaluator.js.map +1 -1
- package/dist/record/recordNodesUpdater/recordExpressionValueConverter.d.ts +2 -1
- package/dist/record/recordNodesUpdater/recordNodeDependentsApplicableUpdater.js.map +1 -1
- package/dist/record/recordNodesUpdater/recordNodeDependentsBooleanUpdater.js.map +1 -1
- package/dist/record/recordNodesUpdater/recordNodeDependentsCodeAttributesUpdater.js.map +1 -1
- package/dist/record/recordNodesUpdater/recordNodeDependentsCountUpdater.js.map +1 -1
- package/dist/record/recordNodesUpdater/recordNodeDependentsDefaultValuesUpdater.js.map +1 -1
- package/dist/record/recordNodesUpdater/recordNodeDependentsEditableUpdater.js.map +1 -1
- package/dist/record/recordNodesUpdater/recordNodeDependentsEnumeratedEntitiesUpdater.js.map +1 -1
- package/dist/record/recordNodesUpdater/recordNodeDependentsEnumeratingItemsUpdater.js.map +1 -1
- package/dist/record/recordNodesUpdater/recordNodeDependentsFileNamesEvaluator.js.map +1 -1
- package/dist/record/recordNodesUpdater/recordNodeDependentsVisibleUpdater.js.map +1 -1
- package/dist/record/recordNodesUpdater/recordNodesCreator.js.map +1 -1
- package/dist/record/recordNodesUpdater/recordNodesDeleter.js.map +1 -1
- package/dist/record/recordNodesUpdater/recordNodesDependentsUpdaterCommons.js.map +1 -1
- package/dist/record/recordNodesUpdater/recordNodesUpdater.js.map +1 -1
- package/dist/record/recordNodesUpdater/recordUpdateResult.js.map +1 -1
- package/dist/record/recordPrettyPrinter.d.ts +18 -15
- package/dist/record/recordPrettyPrinter.js.map +1 -1
- package/dist/record/recordStep.d.ts +5 -2
- package/dist/record/recordStep.js.map +1 -1
- package/dist/record/recordUpdater.d.ts +22 -15
- package/dist/record/recordUpdater.js.map +1 -1
- package/dist/record/recordValidations.d.ts +21 -14
- package/dist/record/recordValidator/attributeKeyValidator.d.ts +8 -6
- package/dist/record/recordValidator/attributeKeyValidator.js.map +1 -1
- package/dist/record/recordValidator/attributeTypeValidator.d.ts +2 -1
- package/dist/record/recordValidator/attributeTypeValidator.js +2 -2
- package/dist/record/recordValidator/attributeTypeValidator.js.map +1 -1
- package/dist/record/recordValidator/attributeUniqueValidator.d.ts +1 -5
- package/dist/record/recordValidator/attributeUniqueValidator.js.map +1 -1
- package/dist/record/recordValidator/attributeValidator.d.ts +3 -1
- package/dist/record/recordValidator/attributeValidator.js.map +1 -1
- package/dist/record/recordValidator/countVaildator.d.ts +21 -17
- package/dist/record/recordValidator/index.d.ts +4 -3
- package/dist/record/recordValidator/recordValidator.js.map +1 -1
- package/dist/record/records.d.ts +62 -220
- package/dist/registry/serviceRegistry.js.map +1 -1
- package/dist/registry/serviceType.js.map +1 -1
- package/dist/srs/srs.js.map +1 -1
- package/dist/survey/nodeDefsFixer.d.ts +5 -4
- package/dist/survey/nodeDefsFixer.js.map +1 -1
- package/dist/survey/refData/factory.js +3 -2
- package/dist/survey/refData/factory.js.map +1 -1
- package/dist/survey/survey.d.ts +2 -2
- package/dist/survey/survey.js.map +1 -1
- package/dist/survey/surveyDocImageFactory.js.map +1 -1
- package/dist/survey/surveyDocImages.d.ts +11 -5
- package/dist/survey/surveyDocImages.js.map +1 -1
- package/dist/survey/surveyFileFactory.js.map +1 -1
- package/dist/survey/surveys/_nodeDefs/nodeDefsIndex.js.map +1 -1
- package/dist/survey/surveys/_nodeDefs/nodeDefsReader.js.map +1 -1
- package/dist/survey/surveys/dependencies.js +2 -1
- package/dist/survey/surveys/dependencies.js.map +1 -1
- package/dist/survey/surveys/index.d.ts +82 -255
- package/dist/survey/surveys/nodeDefs.d.ts +4 -6
- package/dist/survey/surveys/nodeDefs.js +4 -2
- package/dist/survey/surveys/nodeDefs.js.map +1 -1
- package/dist/survey/surveys/refsData.js +2 -1
- package/dist/survey/surveys/refsData.js.map +1 -1
- package/dist/survey/surveys/surveyGettersSecurity.js +1 -4
- package/dist/survey/surveys/surveyGettersSecurity.js.map +1 -1
- package/dist/survey/surveys/surveysGetters.js +5 -7
- package/dist/survey/surveys/surveysGetters.js.map +1 -1
- package/dist/survey/surveys/surveysUtils.js.map +1 -1
- package/dist/taxonomy/taxa.d.ts +17 -11
- package/dist/taxonomy/taxa.js.map +1 -1
- package/dist/taxonomy/taxonGenerator.d.ts +6 -4
- package/dist/taxonomy/taxonomies.d.ts +7 -3
- package/dist/taxonomy/taxonomies.js.map +1 -1
- package/dist/tests/builder/recordBuilder/attributeBuilder.js.map +1 -1
- package/dist/tests/builder/recordBuilder/entityBuilder.js.map +1 -1
- package/dist/tests/builder/recordBuilder/index.d.ts +4 -2
- package/dist/tests/builder/recordBuilder/index.js.map +1 -1
- package/dist/tests/builder/recordBuilder/nodeBuilder.js.map +1 -1
- package/dist/tests/builder/recordBuilder/recordBuilder.js.map +1 -1
- package/dist/tests/builder/surveyBuilder/categoryBuilder.js.map +1 -1
- package/dist/tests/builder/surveyBuilder/categoryItemBuilder.js.map +1 -1
- package/dist/tests/builder/surveyBuilder/index.d.ts +30 -15
- package/dist/tests/builder/surveyBuilder/nodeDefAttributeBuilder.js.map +1 -1
- package/dist/tests/builder/surveyBuilder/nodeDefBuilder.js.map +1 -1
- package/dist/tests/builder/surveyBuilder/nodeDefCodeBuilder.js.map +1 -1
- package/dist/tests/builder/surveyBuilder/nodeDefEntityBuilder.js.map +1 -1
- package/dist/tests/builder/surveyBuilder/nodeDefTaxonBuilder.js.map +1 -1
- package/dist/tests/builder/surveyBuilder/surveyBuilder.js.map +1 -1
- package/dist/tests/builder/surveyBuilder/taxonBuilder.js.map +1 -1
- package/dist/tests/builder/surveyBuilder/taxonomyBuilder.js.map +1 -1
- package/dist/utils/_objects/assoc.js.map +1 -1
- package/dist/utils/_objects/assocPath.js.map +1 -1
- package/dist/utils/_objects/camelize.js.map +1 -1
- package/dist/utils/_objects/deepMerge.js.map +1 -1
- package/dist/utils/_objects/deleteEmptyProps.js.map +1 -1
- package/dist/utils/_objects/difference.js.map +1 -1
- package/dist/utils/_objects/dissoc.js.map +1 -1
- package/dist/utils/_objects/dissocPath.js.map +1 -1
- package/dist/utils/_objects/dissocPathIfEmpty.js.map +1 -1
- package/dist/utils/_objects/index.d.ts +34 -48
- package/dist/utils/_objects/isEmpty.js.map +1 -1
- package/dist/utils/_objects/isNil.js.map +1 -1
- package/dist/utils/_objects/isNotEmpty.js.map +1 -1
- package/dist/utils/_objects/parse.js.map +1 -1
- package/dist/utils/_objects/path.js.map +1 -1
- package/dist/utils/_objects/propertyOf.js.map +1 -1
- package/dist/utils/_objects/setInPath.js.map +1 -1
- package/dist/utils/_objects/stringify.js.map +1 -1
- package/dist/utils/arrays.d.ts +25 -15
- package/dist/utils/arrays.js.map +1 -1
- package/dist/utils/dates.d.ts +101 -48
- package/dist/utils/dates.js.map +1 -1
- package/dist/utils/fileNames.d.ts +7 -3
- package/dist/utils/fileNames.js.map +1 -1
- package/dist/utils/fileProcessor.js +2 -1
- package/dist/utils/fileProcessor.js.map +1 -1
- package/dist/utils/numbers.d.ts +42 -13
- package/dist/utils/numbers.js.map +1 -1
- package/dist/utils/promises.d.ts +12 -1
- package/dist/utils/queue.js.map +1 -1
- package/dist/utils/retryProcessor.js.map +1 -1
- package/dist/utils/strings.d.ts +22 -11
- package/dist/utils/uuids.d.ts +3 -1
- package/dist/utils/versions.d.ts +19 -7
- package/dist/utils/versions.js.map +1 -1
- package/dist/validation/factory.js.map +1 -1
- package/dist/validation/fieldValidators/email.js.map +1 -1
- package/dist/validation/fieldValidators/index.d.ts +12 -6
- package/dist/validation/fieldValidators/name.js.map +1 -1
- package/dist/validation/fieldValidators/notKeyword.js.map +1 -1
- package/dist/validation/fieldValidators/numeric.js.map +1 -1
- package/dist/validation/fieldValidators/numericPositive.js.map +1 -1
- package/dist/validation/fieldValidators/required.js.map +1 -1
- package/dist/validation/validation.js.map +1 -1
- package/dist/validation/validationResults.d.ts +17 -9
- package/dist/validation/validationResults.js +1 -1
- package/dist/validation/validationResults.js.map +1 -1
- package/dist/validation/validations.d.ts +71 -35
- package/dist/validation/validations.js +2 -2
- package/dist/validation/validations.js.map +1 -1
- package/dist/validation/validator.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/validation/factory.ts"],"names":[],"mappings":";;;AAEA,oCAAkC;AAClC,6CAA+E;AASlE,QAAA,iBAAiB,GAAiD;IAC7E,cAAc,EAAE,CAAC,MAAgC,EAAc,EAAE;QAC/D,MAAM,aAAa,GAAG;YACpB,KAAK,EAAE,IAAI;SACZ,CAAA;QACD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,mCACpC,aAAa,GACb,MAAM,CACV,CAAA;QACD,MAAM,MAAM,GAAe,EAAE,KAAK,EAAE,CAAA;QACpC,IAAI,eAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;QACxB,CAAC;QACD,IAAI,eAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;QACxB,CAAC;QACD,IAAI,eAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAA;QAC5B,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;CACF,CAAA;AAUY,QAAA,uBAAuB,GAA6D;IAC/F,cAAc,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/validation/factory.ts"],"names":[],"mappings":";;;AAEA,oCAAkC;AAClC,6CAA+E;AASlE,QAAA,iBAAiB,GAAiD;IAC7E,cAAc,EAAE,CAAC,MAAgC,EAAc,EAAE;QAC/D,MAAM,aAAa,GAAG;YACpB,KAAK,EAAE,IAAI;SACZ,CAAA;QACD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,mCACpC,aAAa,GACb,MAAM,CACV,CAAA;QACD,MAAM,MAAM,GAAe,EAAE,KAAK,EAAE,CAAA;QACpC,IAAI,eAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;QACxB,CAAC;QACD,IAAI,eAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;QACxB,CAAC;QACD,IAAI,eAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAA;QAC5B,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;CACF,CAAA;AAUY,QAAA,uBAAuB,GAA6D;IAC/F,cAAc,EAAE,CAAC,MAAM,GAAkC,EAAE,EAAoB,EAAE;QAC/E,MAAM,aAAa,GAAG;YACpB,KAAK,EAAE,IAAI;SACZ,CAAA;QACD,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,mCAAQ,aAAa,GAAK,MAAM,CAAE,CAAA;QAC1G,MAAM,QAAQ,GAAG,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,+BAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAA;QACpF,OAAO;YACL,QAAQ;YACR,GAAG;YACH,MAAM,EAAE,OAAO;YACf,QAAQ;YACR,KAAK;SACN,CAAA;IACH,CAAC;CACF,CAAA","sourcesContent":["import { Dictionary, Factory } from '../common'\nimport { Labels } from '../language'\nimport { Objects } from '../utils'\nimport { Validation, ValidationResult, ValidationSeverity } from './validation'\n\ntype ValidationFactoryParams = {\n errors?: ValidationResult[]\n fields?: Dictionary<Validation>\n valid?: boolean\n warnings?: ValidationResult[]\n}\n\nexport const ValidationFactory: Factory<Validation, ValidationFactoryParams> = {\n createInstance: (params?: ValidationFactoryParams): Validation => {\n const defaultParams = {\n valid: true,\n }\n const { errors, fields, valid, warnings } = {\n ...defaultParams,\n ...params,\n }\n const result: Validation = { valid }\n if (Objects.isNotEmpty(errors)) {\n result.errors = errors\n }\n if (Objects.isNotEmpty(fields)) {\n result.fields = fields\n }\n if (Objects.isNotEmpty(warnings)) {\n result.warnings = warnings\n }\n return result\n },\n}\n\ntype ValidationResultFactoryParams = {\n messages?: Labels\n key?: string\n params?: Dictionary<any>\n severity?: ValidationSeverity\n valid?: boolean\n}\n\nexport const ValidationResultFactory: Factory<ValidationResult, ValidationResultFactoryParams> = {\n createInstance: (params: ValidationResultFactoryParams = {}): ValidationResult => {\n const defaultParams = {\n valid: true,\n }\n const { severity: severityParam, key, params: _params, messages, valid } = { ...defaultParams, ...params }\n const severity = !severityParam && !valid ? ValidationSeverity.error : severityParam\n return {\n severity,\n key,\n params: _params,\n messages,\n valid,\n }\n },\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.js","sourceRoot":"","sources":["../../../src/validation/fieldValidators/email.ts"],"names":[],"mappings":";;;AAAA,uCAAqC;AACrC,wCAAoD;AACpD,8CAAoE;AAEpE;;GAEG;AACH,MAAM,UAAU,GACd,0IAA0I,CAAA;AAErI,MAAM,KAAK,GAChB,CAAC,UAAkB,EAAE,EAAE,CACvB,CAAC,KAAa,EAAE,GAAQ,EAA6B,EAAE;IACrD,MAAM,KAAK,GAAG,eAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,eAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAE9D,OAAO,OAAO,CAAC,OAAO,CACpB,iCAAuB,CAAC,cAAc,CAAC;QACrC,KAAK;QACL,GAAG,EAAE,UAAU;QACf,QAAQ,EAAE,+BAAkB,CAAC,KAAK;KACnC,CAAC,CACH,CAAA;AACH,CAAC,CAAA;AAbU,QAAA,KAAK,
|
|
1
|
+
{"version":3,"file":"email.js","sourceRoot":"","sources":["../../../src/validation/fieldValidators/email.ts"],"names":[],"mappings":";;;AAAA,uCAAqC;AACrC,wCAAoD;AACpD,8CAAoE;AAEpE;;GAEG;AACH,MAAM,UAAU,GACd,0IAA0I,CAAA;AAErI,MAAM,KAAK,GAChB,CAAC,UAAkB,EAAE,EAAE,CACvB,CAAC,KAAa,EAAE,GAAQ,EAA6B,EAAE;IACrD,MAAM,KAAK,GAAG,eAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,eAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAE9D,OAAO,OAAO,CAAC,OAAO,CACpB,iCAAuB,CAAC,cAAc,CAAC;QACrC,KAAK;QACL,GAAG,EAAE,UAAU;QACf,QAAQ,EAAE,+BAAkB,CAAC,KAAK;KACnC,CAAC,CACH,CAAA;AACH,CAAC,CAAA;AAbU,QAAA,KAAK,GAAL,KAAK,CAaf","sourcesContent":["import { Objects } from '../../utils'\nimport { ValidationResultFactory } from '../factory'\nimport { ValidationResult, ValidationSeverity } from '../validation'\n\n/**\n * Email regular expression\n */\nconst emailRegex =\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n\nexport const email =\n (messageKey: string) =>\n (field: string, obj: any): Promise<ValidationResult> => {\n const value = Objects.path(field)(obj)\n const valid = Objects.isEmpty(value) || emailRegex.test(value)\n\n return Promise.resolve(\n ValidationResultFactory.createInstance({\n valid,\n key: messageKey,\n severity: ValidationSeverity.error,\n })\n )\n }\n"]}
|
|
@@ -1,8 +1,14 @@
|
|
|
1
|
+
import { email } from './email';
|
|
2
|
+
import { name } from './name';
|
|
3
|
+
import { notKeyword } from './notKeyword';
|
|
4
|
+
import { numeric } from './numeric';
|
|
5
|
+
import { numericPositive } from './numericPositive';
|
|
6
|
+
import { required } from './required';
|
|
1
7
|
export declare const FieldValidators: {
|
|
2
|
-
email:
|
|
3
|
-
name:
|
|
4
|
-
notKeyword:
|
|
5
|
-
numeric:
|
|
6
|
-
numericPositive:
|
|
7
|
-
required:
|
|
8
|
+
email: typeof email;
|
|
9
|
+
name: typeof name;
|
|
10
|
+
notKeyword: typeof notKeyword;
|
|
11
|
+
numeric: typeof numeric;
|
|
12
|
+
numericPositive: typeof numericPositive;
|
|
13
|
+
required: typeof required;
|
|
8
14
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"name.js","sourceRoot":"","sources":["../../../src/validation/fieldValidators/name.ts"],"names":[],"mappings":";;;AAAA,uCAAqC;AACrC,wCAAoD;AACpD,8CAAoE;AAEpE;;;GAGG;AACH,MAAM,SAAS,GAAG,wBAAwB,CAAA;AAEnC,MAAM,IAAI,GACf,CAAC,UAAkB,EAAE,EAAE,CACvB,CAAC,KAAa,EAAE,GAAQ,EAA6B,EAAE;IACrD,MAAM,KAAK,GAAG,eAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,eAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC7D,OAAO,OAAO,CAAC,OAAO,CACpB,iCAAuB,CAAC,cAAc,CAAC;QACrC,KAAK;QACL,GAAG,EAAE,UAAU;QACf,QAAQ,EAAE,+BAAkB,CAAC,KAAK;KACnC,CAAC,CACH,CAAA;AACH,CAAC,CAAA;AAZU,QAAA,IAAI,
|
|
1
|
+
{"version":3,"file":"name.js","sourceRoot":"","sources":["../../../src/validation/fieldValidators/name.ts"],"names":[],"mappings":";;;AAAA,uCAAqC;AACrC,wCAAoD;AACpD,8CAAoE;AAEpE;;;GAGG;AACH,MAAM,SAAS,GAAG,wBAAwB,CAAA;AAEnC,MAAM,IAAI,GACf,CAAC,UAAkB,EAAE,EAAE,CACvB,CAAC,KAAa,EAAE,GAAQ,EAA6B,EAAE;IACrD,MAAM,KAAK,GAAG,eAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,eAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC7D,OAAO,OAAO,CAAC,OAAO,CACpB,iCAAuB,CAAC,cAAc,CAAC;QACrC,KAAK;QACL,GAAG,EAAE,UAAU;QACf,QAAQ,EAAE,+BAAkB,CAAC,KAAK;KACnC,CAAC,CACH,CAAA;AACH,CAAC,CAAA;AAZU,QAAA,IAAI,GAAJ,IAAI,CAYd","sourcesContent":["import { Objects } from '../../utils'\nimport { ValidationResultFactory } from '../factory'\nimport { ValidationResult, ValidationSeverity } from '../validation'\n\n/**\n * Internal name regular expression: it must contain only lowercase letters, numbers and underscores starting with a letter,\n * and it must be at most 40 characters long\n */\nconst nameRegex = /^[a-z][a-z0-9_]{0,39}$/\n\nexport const name =\n (messageKey: string) =>\n (field: string, obj: any): Promise<ValidationResult> => {\n const value = Objects.path(field)(obj)\n const valid = Objects.isEmpty(value) || nameRegex.test(value)\n return Promise.resolve(\n ValidationResultFactory.createInstance({\n valid,\n key: messageKey,\n severity: ValidationSeverity.error,\n })\n )\n }\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notKeyword.js","sourceRoot":"","sources":["../../../src/validation/fieldValidators/notKeyword.ts"],"names":[],"mappings":";;;AAAA,uCAAqC;AACrC,wCAAoD;AACpD,8CAAoE;AAEpE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC;IACvB,KAAK;IACL,cAAc;IACd,eAAe;IACf,MAAM;IACN,MAAM;IACN,IAAI;IACJ,QAAQ;IACR,eAAe;IACf,YAAY;IACZ,WAAW;IACX,aAAa;IACb,OAAO;IACP,aAAa;IACb,gBAAgB;IAChB,aAAa;IACb,MAAM;IACN,MAAM;IACN,OAAO;CACR,CAAC,CAAA;AAEK,MAAM,UAAU,GACrB,CAAC,UAAkB,EAAE,EAAE,CACvB,CAAC,KAAa,EAAE,GAAQ,EAA6B,EAAE;IACrD,MAAM,KAAK,GAAG,eAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,eAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAE5D,OAAO,OAAO,CAAC,OAAO,CACpB,iCAAuB,CAAC,cAAc,CAAC;QACrC,KAAK;QACL,GAAG,EAAE,UAAU;QACf,QAAQ,EAAE,+BAAkB,CAAC,KAAK;KACnC,CAAC,CACH,CAAA;AACH,CAAC,CAAA;AAbU,QAAA,UAAU,
|
|
1
|
+
{"version":3,"file":"notKeyword.js","sourceRoot":"","sources":["../../../src/validation/fieldValidators/notKeyword.ts"],"names":[],"mappings":";;;AAAA,uCAAqC;AACrC,wCAAoD;AACpD,8CAAoE;AAEpE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC;IACvB,KAAK;IACL,cAAc;IACd,eAAe;IACf,MAAM;IACN,MAAM;IACN,IAAI;IACJ,QAAQ;IACR,eAAe;IACf,YAAY;IACZ,WAAW;IACX,aAAa;IACb,OAAO;IACP,aAAa;IACb,gBAAgB;IAChB,aAAa;IACb,MAAM;IACN,MAAM;IACN,OAAO;CACR,CAAC,CAAA;AAEK,MAAM,UAAU,GACrB,CAAC,UAAkB,EAAE,EAAE,CACvB,CAAC,KAAa,EAAE,GAAQ,EAA6B,EAAE;IACrD,MAAM,KAAK,GAAG,eAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,eAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAE5D,OAAO,OAAO,CAAC,OAAO,CACpB,iCAAuB,CAAC,cAAc,CAAC;QACrC,KAAK;QACL,GAAG,EAAE,UAAU;QACf,QAAQ,EAAE,+BAAkB,CAAC,KAAK;KACnC,CAAC,CACH,CAAA;AACH,CAAC,CAAA;AAbU,QAAA,UAAU,GAAV,UAAU,CAapB","sourcesContent":["import { Objects } from '../../utils'\nimport { ValidationResultFactory } from '../factory'\nimport { ValidationResult, ValidationSeverity } from '../validation'\n\nconst keywords = new Set([\n 'asc',\n 'date_created',\n 'date_modified',\n 'desc',\n 'file',\n 'id',\n 'length',\n 'node_def_uuid',\n 'owner_uuid',\n 'parent_id',\n 'parent_uuid',\n 'props',\n 'props_draft',\n 'props_advanced',\n 'record_uuid',\n 'step',\n 'uuid',\n 'value',\n])\n\nexport const notKeyword =\n (messageKey: string) =>\n (field: string, obj: any): Promise<ValidationResult> => {\n const value = Objects.path(field)(obj)\n const valid = Objects.isEmpty(value) || !keywords.has(value)\n\n return Promise.resolve(\n ValidationResultFactory.createInstance({\n valid,\n key: messageKey,\n severity: ValidationSeverity.error,\n })\n )\n }\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"numeric.js","sourceRoot":"","sources":["../../../src/validation/fieldValidators/numeric.ts"],"names":[],"mappings":";;;AAAA,uCAAqC;AACrC,wCAAoD;AACpD,8CAAoE;AAE7D,MAAM,OAAO,GAClB,CAAC,UAAU,GAAG,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"numeric.js","sourceRoot":"","sources":["../../../src/validation/fieldValidators/numeric.ts"],"names":[],"mappings":";;;AAAA,uCAAqC;AACrC,wCAAoD;AACpD,8CAAoE;AAE7D,MAAM,OAAO,GAClB,CAAC,UAAU,GAAG,gBAAgB,EAAE,aAAa,GAAQ,EAAE,EAAE,EAAE,CAC3D,CAAC,KAAa,EAAE,GAAQ,EAA6B,EAAE;IACrD,MAAM,KAAK,GAAG,eAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,eAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IAEpE,OAAO,OAAO,CAAC,OAAO,CACpB,iCAAuB,CAAC,cAAc,CAAC;QACrC,KAAK;QACL,GAAG,EAAE,UAAU;QACf,MAAM,EAAE,aAAa;QACrB,QAAQ,EAAE,+BAAkB,CAAC,KAAK;KACnC,CAAC,CACH,CAAA;AACH,CAAC,CAAA;AAdU,QAAA,OAAO,GAAP,OAAO,CAcjB","sourcesContent":["import { Objects } from '../../utils'\nimport { ValidationResultFactory } from '../factory'\nimport { ValidationResult, ValidationSeverity } from '../validation'\n\nexport const numeric =\n (messageKey = 'invalid_number', messageParams: any = {}) =>\n (field: string, obj: any): Promise<ValidationResult> => {\n const value = Objects.path(field)(obj)\n const valid = Objects.isEmpty(value) || !Number.isNaN(Number(value))\n\n return Promise.resolve(\n ValidationResultFactory.createInstance({\n valid,\n key: messageKey,\n params: messageParams,\n severity: ValidationSeverity.error,\n })\n )\n }\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"numericPositive.js","sourceRoot":"","sources":["../../../src/validation/fieldValidators/numericPositive.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uCAAqC;AACrC,wCAAoD;AACpD,8CAAoE;AACpE,uCAAmC;AAE5B,MAAM,eAAe,GAC1B,CAAC,UAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"numericPositive.js","sourceRoot":"","sources":["../../../src/validation/fieldValidators/numericPositive.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uCAAqC;AACrC,wCAAoD;AACpD,8CAAoE;AACpE,uCAAmC;AAE5B,MAAM,eAAe,GAC1B,CAAC,UAAkB,EAAE,aAAa,GAAQ,EAAE,EAAE,EAAE,CAChD,CAAO,KAAa,EAAE,GAAQ,EAA6B,EAAE;IAC3D,MAAM,oBAAoB,GAAG,MAAM,IAAA,iBAAO,EAAC,UAAU,EAAE,aAAa,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IACjF,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;QAChC,OAAO,oBAAoB,CAAA;IAC7B,CAAC;IACD,MAAM,KAAK,GAAG,eAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,eAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;IAElD,OAAO,iCAAuB,CAAC,cAAc,CAAC;QAC5C,KAAK;QACL,GAAG,EAAE,UAAU;QACf,MAAM,EAAE,aAAa;QACrB,QAAQ,EAAE,+BAAkB,CAAC,KAAK;KACnC,CAAC,CAAA;AACJ,CAAC,CAAA,CAAA;AAhBU,QAAA,eAAe,GAAf,eAAe,CAgBzB","sourcesContent":["import { Objects } from '../../utils'\nimport { ValidationResultFactory } from '../factory'\nimport { ValidationResult, ValidationSeverity } from '../validation'\nimport { numeric } from './numeric'\n\nexport const numericPositive =\n (messageKey: string, messageParams: any = {}) =>\n async (field: string, obj: any): Promise<ValidationResult> => {\n const validateNumberResult = await numeric(messageKey, messageParams)(field, obj)\n if (!validateNumberResult.valid) {\n return validateNumberResult\n }\n const value = Objects.path(field)(obj)\n const valid = Objects.isEmpty(value) || value >= 0\n\n return ValidationResultFactory.createInstance({\n valid,\n key: messageKey,\n params: messageParams,\n severity: ValidationSeverity.error,\n })\n }\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"required.js","sourceRoot":"","sources":["../../../src/validation/fieldValidators/required.ts"],"names":[],"mappings":";;;AAAA,uCAAqC;AAErC,wCAAoD;AACpD,8CAAoE;AAE7D,MAAM,QAAQ,GACnB,CAAC,UAAkB,EAAE,EAAE,CACvB,CAAC,KAAa,EAAE,GAAQ,EAA6B,EAAE;IACrD,MAAM,KAAK,GAAG,eAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,CAAC,eAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACrC,OAAO,OAAO,CAAC,OAAO,CACpB,iCAAuB,CAAC,cAAc,CAAC;QACrC,KAAK;QACL,GAAG,EAAE,UAAU;QACf,QAAQ,EAAE,+BAAkB,CAAC,KAAK;KACnC,CAAC,CACH,CAAA;AACH,CAAC,CAAA;AAZU,QAAA,QAAQ,
|
|
1
|
+
{"version":3,"file":"required.js","sourceRoot":"","sources":["../../../src/validation/fieldValidators/required.ts"],"names":[],"mappings":";;;AAAA,uCAAqC;AAErC,wCAAoD;AACpD,8CAAoE;AAE7D,MAAM,QAAQ,GACnB,CAAC,UAAkB,EAAE,EAAE,CACvB,CAAC,KAAa,EAAE,GAAQ,EAA6B,EAAE;IACrD,MAAM,KAAK,GAAG,eAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,CAAC,eAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACrC,OAAO,OAAO,CAAC,OAAO,CACpB,iCAAuB,CAAC,cAAc,CAAC;QACrC,KAAK;QACL,GAAG,EAAE,UAAU;QACf,QAAQ,EAAE,+BAAkB,CAAC,KAAK;KACnC,CAAC,CACH,CAAA;AACH,CAAC,CAAA;AAZU,QAAA,QAAQ,GAAR,QAAQ,CAYlB","sourcesContent":["import { Objects } from '../../utils'\n\nimport { ValidationResultFactory } from '../factory'\nimport { ValidationResult, ValidationSeverity } from '../validation'\n\nexport const required =\n (messageKey: string) =>\n (field: string, obj: any): Promise<ValidationResult> => {\n const value = Objects.path(field)(obj)\n const valid = !Objects.isEmpty(value)\n return Promise.resolve(\n ValidationResultFactory.createInstance({\n valid,\n key: messageKey,\n severity: ValidationSeverity.error,\n })\n )\n }\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/validation/validation.ts"],"names":[],"mappings":";;;AAEA,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC5B,qCAAe,CAAA;IACf,yCAAmB,CAAA;AACrB,CAAC,EAHW,kBAAkB,
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/validation/validation.ts"],"names":[],"mappings":";;;AAEA,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC5B,qCAAe,CAAA;IACf,yCAAmB,CAAA;AACrB,CAAC,EAHW,kBAAkB,aAAlB,kBAAkB,GAAlB,kBAAkB,QAG7B","sourcesContent":["import { Labels } from '../language'\n\nexport enum ValidationSeverity {\n error = 'error',\n warning = 'warning',\n}\n\nexport interface ValidationResult {\n severity?: ValidationSeverity\n key?: string\n params?: { [key: string]: any }\n messages?: Labels\n valid: boolean\n}\n\nexport interface ValidationCounts {\n errors: number\n warnings: number\n}\n\nexport interface ValidationFields {\n [key: string]: Validation\n}\n\nexport interface Validation {\n errors?: ValidationResult[]\n fields?: ValidationFields\n valid: boolean\n warnings?: ValidationResult[]\n counts?: ValidationCounts\n}\n"]}
|
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
import { Labels, LanguageCode } from '../language';
|
|
2
2
|
import { ValidationResult, ValidationSeverity } from './validation';
|
|
3
|
+
declare const getKey: (result: ValidationResult) => string | undefined;
|
|
4
|
+
declare const getParams: (result: ValidationResult) => {
|
|
5
|
+
[key: string]: any;
|
|
6
|
+
} | undefined;
|
|
7
|
+
declare const getSeverity: (result: ValidationResult) => ValidationSeverity;
|
|
8
|
+
declare const getMessages: (result: ValidationResult) => Labels | undefined;
|
|
9
|
+
declare const getMessage: (lang: LanguageCode) => (result: ValidationResult) => string | undefined;
|
|
10
|
+
declare const hasMessages: (result: ValidationResult) => boolean;
|
|
11
|
+
declare const isError: (result: ValidationResult) => boolean;
|
|
3
12
|
export declare const ValidationResults: {
|
|
4
|
-
getKey:
|
|
5
|
-
getParams:
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
hasMessages: (result: ValidationResult) => boolean;
|
|
12
|
-
isError: (result: ValidationResult) => boolean;
|
|
13
|
+
getKey: typeof getKey;
|
|
14
|
+
getParams: typeof getParams;
|
|
15
|
+
getSeverity: typeof getSeverity;
|
|
16
|
+
getMessages: typeof getMessages;
|
|
17
|
+
getMessage: typeof getMessage;
|
|
18
|
+
hasMessages: typeof hasMessages;
|
|
19
|
+
isError: typeof isError;
|
|
13
20
|
};
|
|
21
|
+
export {};
|
|
@@ -6,7 +6,7 @@ const getKey = (result) => result === null || result === void 0 ? void 0 : resul
|
|
|
6
6
|
const getParams = (result) => result === null || result === void 0 ? void 0 : result.params;
|
|
7
7
|
const getSeverity = (result) => { var _a; return (_a = result === null || result === void 0 ? void 0 : result.severity) !== null && _a !== void 0 ? _a : validation_1.ValidationSeverity.error; };
|
|
8
8
|
const getMessages = (result) => result === null || result === void 0 ? void 0 : result.messages;
|
|
9
|
-
const getMessage = (lang) => (result) => { var _a
|
|
9
|
+
const getMessage = (lang) => (result) => { var _a; var _b, _c; return (_b = (_a = result === null || result === void 0 ? void 0 : result.messages) === null || _a === void 0 ? void 0 : _a[lang]) !== null && _b !== void 0 ? _b : Object.values((_c = result === null || result === void 0 ? void 0 : result.messages) !== null && _c !== void 0 ? _c : {})[0]; }; // fallback to first message if the requested language is not available
|
|
10
10
|
const hasMessages = (result) => (result === null || result === void 0 ? void 0 : result.messages) != null && Object.keys(result.messages).length > 0;
|
|
11
11
|
const isError = (result) => getSeverity(result) === validation_1.ValidationSeverity.error;
|
|
12
12
|
exports.ValidationResults = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validationResults.js","sourceRoot":"","sources":["../../src/validation/validationResults.ts"],"names":[],"mappings":";;;AACA,6CAAmE;AAEnE,MAAM,MAAM,GAAG,CAAC,MAAwB,EAAsB,EAAE,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,GAAG,CAAA;AAE5E,MAAM,SAAS,GAAG,CAAC,MAAwB,EAAsC,EAAE,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAA;AAElG,MAAM,WAAW,GAAG,CAAC,MAAwB,EAAsB,EAAE,
|
|
1
|
+
{"version":3,"file":"validationResults.js","sourceRoot":"","sources":["../../src/validation/validationResults.ts"],"names":[],"mappings":";;;AACA,6CAAmE;AAEnE,MAAM,MAAM,GAAG,CAAC,MAAwB,EAAsB,EAAE,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,GAAG,CAAA;AAE5E,MAAM,SAAS,GAAG,CAAC,MAAwB,EAAsC,EAAE,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAA;AAElG,MAAM,WAAW,GAAG,CAAC,MAAwB,EAAsB,EAAE,wBAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,mCAAI,+BAAkB,CAAC,KAAK,GAAA,CAAA;AAElH,MAAM,WAAW,GAAG,CAAC,MAAwB,EAAsB,EAAE,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,CAAA;AAEtF,MAAM,UAAU,GACd,CAAC,IAAkB,EAAE,EAAE,CACvB,CAAC,MAAwB,EAAsB,EAAE,oCAC/C,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,0CAAG,IAAI,CAAC,mCAAI,MAAM,CAAC,MAAM,OAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,mCAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAA,CAAA,CAAC,uEAAuE;AAEhJ,MAAM,WAAW,GAAG,CAAC,MAAwB,EAAW,EAAE,CACxD,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,KAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;AAErE,MAAM,OAAO,GAAG,CAAC,MAAwB,EAAW,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,+BAAkB,CAAC,KAAK,CAAA;AAE1F,QAAA,iBAAiB,GAAG;IAC/B,MAAM;IACN,SAAS;IACT,WAAW;IACX,WAAW;IACX,UAAU;IACV,WAAW;IACX,OAAO;CACR,CAAA","sourcesContent":["import { Labels, LanguageCode } from '../language'\nimport { ValidationResult, ValidationSeverity } from './validation'\n\nconst getKey = (result: ValidationResult): string | undefined => result?.key\n\nconst getParams = (result: ValidationResult): { [key: string]: any } | undefined => result?.params\n\nconst getSeverity = (result: ValidationResult): ValidationSeverity => result?.severity ?? ValidationSeverity.error\n\nconst getMessages = (result: ValidationResult): Labels | undefined => result?.messages\n\nconst getMessage =\n (lang: LanguageCode) =>\n (result: ValidationResult): string | undefined =>\n result?.messages?.[lang] ?? Object.values(result?.messages ?? {})[0] // fallback to first message if the requested language is not available\n\nconst hasMessages = (result: ValidationResult): boolean =>\n result?.messages != null && Object.keys(result.messages).length > 0\n\nconst isError = (result: ValidationResult): boolean => getSeverity(result) === ValidationSeverity.error\n\nexport const ValidationResults = {\n getKey,\n getParams,\n getSeverity,\n getMessages,\n getMessage,\n hasMessages,\n isError,\n}\n"]}
|
|
@@ -1,4 +1,39 @@
|
|
|
1
1
|
import { Validation, ValidationCounts, ValidationFields, ValidationResult } from './validation';
|
|
2
|
+
declare const hasValidation: (obj: any) => boolean;
|
|
3
|
+
declare const getValidation: (obj: any) => Validation;
|
|
4
|
+
declare const getFieldValidations: (validation: Validation) => ValidationFields;
|
|
5
|
+
declare const getFieldValidation: (field: string | number, defaultValue?: Validation) => (validation: Validation) => Validation;
|
|
6
|
+
declare const getFieldValidationsByFields: (fields: (string | number)[]) => (validation: Validation) => ValidationFields;
|
|
7
|
+
declare const getErrors: (validation: Validation) => ValidationResult[];
|
|
8
|
+
declare const getWarnings: (validation: Validation) => ValidationResult[];
|
|
9
|
+
declare const hasErrors: (validation: Validation) => boolean;
|
|
10
|
+
declare const hasWarnings: (validation: Validation) => boolean;
|
|
11
|
+
declare const isValid: (validation: Validation) => boolean;
|
|
12
|
+
declare const isNotValid: (validation: Validation) => boolean;
|
|
13
|
+
declare const isObjValid: (obj: Record<string, unknown>) => boolean;
|
|
14
|
+
declare const getCounts: (validation: Validation) => ValidationCounts | undefined;
|
|
15
|
+
declare const getErrorsCount: (validation: Validation) => number;
|
|
16
|
+
declare const getWarningsCount: (validation: Validation) => number;
|
|
17
|
+
declare const recalculateValidity: (validation: Validation) => Validation;
|
|
18
|
+
declare const traverse: (visitor: (visitedItem: Validation) => void) => (validation: Validation) => void;
|
|
19
|
+
declare const calculateCounts: (validation: Validation) => ValidationCounts;
|
|
20
|
+
declare const updateCounts: (validation: Validation) => Validation;
|
|
21
|
+
declare const calculateHasNestedErrors: (validation: Validation) => boolean;
|
|
22
|
+
declare const calculateHasNestedWarnings: (validation: Validation) => boolean;
|
|
23
|
+
declare const cleanup: (validation: Validation) => Validation;
|
|
24
|
+
declare const mergeValidations: (validationNext: Validation, doCleanup?: boolean) => (validationPrev: Validation) => Validation;
|
|
25
|
+
declare const dissocFieldValidation: (fieldKey: string, sideEffect?: boolean, doCleanup?: boolean) => (validation: Validation) => Validation;
|
|
26
|
+
declare const dissocFieldValidationsStartingWith: (fieldStartsWith: string, sideEffect?: boolean, doCleanup?: boolean) => (validation: Validation) => Validation;
|
|
27
|
+
declare const mergeValidation: (validationNext: Validation, doCleanup?: boolean) => (validationPrev: Validation) => Validation;
|
|
28
|
+
declare const mergeFieldValidations: (fieldValidationsNext: ValidationFields, fieldValidationsPrev: ValidationFields) => ValidationFields;
|
|
29
|
+
declare const setValid: (valid: boolean) => (obj: object) => any;
|
|
30
|
+
declare const setErrors: (errors: ValidationResult[]) => (obj: object) => any;
|
|
31
|
+
declare const setWarnings: (warnings: ValidationResult[]) => (obj: object) => any;
|
|
32
|
+
declare const setFieldValidations: (fieldValidations: ValidationFields) => (obj: object) => any;
|
|
33
|
+
declare const setFieldValidation: (field: string, fieldValidation: Validation) => (obj: object) => any;
|
|
34
|
+
declare const assocFieldValidation: (field: string, fieldValidation: Validation) => (validation: Validation) => Validation;
|
|
35
|
+
declare const assocValidation: (v: Validation) => (obj: Record<string, unknown>) => any;
|
|
36
|
+
declare const dissocValidation: (obj: Record<string, unknown>) => any;
|
|
2
37
|
export declare const Validations: {
|
|
3
38
|
keys: {
|
|
4
39
|
counts: string;
|
|
@@ -8,39 +43,40 @@ export declare const Validations: {
|
|
|
8
43
|
validation: string;
|
|
9
44
|
warnings: string;
|
|
10
45
|
};
|
|
11
|
-
hasValidation:
|
|
12
|
-
getValidation:
|
|
13
|
-
getFieldValidation:
|
|
14
|
-
getFieldValidations:
|
|
15
|
-
getFieldValidationsByFields:
|
|
16
|
-
getErrors:
|
|
17
|
-
getWarnings:
|
|
18
|
-
hasErrors:
|
|
19
|
-
hasWarnings:
|
|
20
|
-
isValid:
|
|
21
|
-
isNotValid:
|
|
22
|
-
isObjValid:
|
|
23
|
-
getCounts:
|
|
24
|
-
getErrorsCount:
|
|
25
|
-
getWarningsCount:
|
|
26
|
-
recalculateValidity:
|
|
27
|
-
traverse:
|
|
28
|
-
calculateCounts:
|
|
29
|
-
calculateHasNestedErrors:
|
|
30
|
-
calculateHasNestedWarnings:
|
|
31
|
-
updateCounts:
|
|
32
|
-
cleanup:
|
|
33
|
-
mergeValidations:
|
|
34
|
-
dissocFieldValidation:
|
|
35
|
-
dissocFieldValidationsStartingWith:
|
|
36
|
-
mergeValidation:
|
|
37
|
-
mergeFieldValidations:
|
|
38
|
-
setValid:
|
|
39
|
-
setErrors:
|
|
40
|
-
setWarnings:
|
|
41
|
-
setFieldValidations:
|
|
42
|
-
assocFieldValidation:
|
|
43
|
-
setFieldValidation:
|
|
44
|
-
assocValidation:
|
|
45
|
-
dissocValidation:
|
|
46
|
+
hasValidation: typeof hasValidation;
|
|
47
|
+
getValidation: typeof getValidation;
|
|
48
|
+
getFieldValidation: typeof getFieldValidation;
|
|
49
|
+
getFieldValidations: typeof getFieldValidations;
|
|
50
|
+
getFieldValidationsByFields: typeof getFieldValidationsByFields;
|
|
51
|
+
getErrors: typeof getErrors;
|
|
52
|
+
getWarnings: typeof getWarnings;
|
|
53
|
+
hasErrors: typeof hasErrors;
|
|
54
|
+
hasWarnings: typeof hasWarnings;
|
|
55
|
+
isValid: typeof isValid;
|
|
56
|
+
isNotValid: typeof isNotValid;
|
|
57
|
+
isObjValid: typeof isObjValid;
|
|
58
|
+
getCounts: typeof getCounts;
|
|
59
|
+
getErrorsCount: typeof getErrorsCount;
|
|
60
|
+
getWarningsCount: typeof getWarningsCount;
|
|
61
|
+
recalculateValidity: typeof recalculateValidity;
|
|
62
|
+
traverse: typeof traverse;
|
|
63
|
+
calculateCounts: typeof calculateCounts;
|
|
64
|
+
calculateHasNestedErrors: typeof calculateHasNestedErrors;
|
|
65
|
+
calculateHasNestedWarnings: typeof calculateHasNestedWarnings;
|
|
66
|
+
updateCounts: typeof updateCounts;
|
|
67
|
+
cleanup: typeof cleanup;
|
|
68
|
+
mergeValidations: typeof mergeValidations;
|
|
69
|
+
dissocFieldValidation: typeof dissocFieldValidation;
|
|
70
|
+
dissocFieldValidationsStartingWith: typeof dissocFieldValidationsStartingWith;
|
|
71
|
+
mergeValidation: typeof mergeValidation;
|
|
72
|
+
mergeFieldValidations: typeof mergeFieldValidations;
|
|
73
|
+
setValid: typeof setValid;
|
|
74
|
+
setErrors: typeof setErrors;
|
|
75
|
+
setWarnings: typeof setWarnings;
|
|
76
|
+
setFieldValidations: typeof setFieldValidations;
|
|
77
|
+
assocFieldValidation: typeof assocFieldValidation;
|
|
78
|
+
setFieldValidation: typeof setFieldValidation;
|
|
79
|
+
assocValidation: typeof assocValidation;
|
|
80
|
+
dissocValidation: typeof dissocValidation;
|
|
46
81
|
};
|
|
82
|
+
export {};
|
|
@@ -53,8 +53,8 @@ const isValid = (validation) => utils_1.Objects.isEmpty(validation) || validatio
|
|
|
53
53
|
const isNotValid = (validation) => !isValid(validation);
|
|
54
54
|
const isObjValid = (obj) => isValid(getValidation(obj));
|
|
55
55
|
const getCounts = (validation) => validation === null || validation === void 0 ? void 0 : validation.counts;
|
|
56
|
-
const getErrorsCount = (validation) => { var _a
|
|
57
|
-
const getWarningsCount = (validation) => { var _a
|
|
56
|
+
const getErrorsCount = (validation) => { var _a; var _b; return (_b = (_a = getCounts(validation)) === null || _a === void 0 ? void 0 : _a.errors) !== null && _b !== void 0 ? _b : 0; };
|
|
57
|
+
const getWarningsCount = (validation) => { var _a; var _b; return (_b = (_a = getCounts(validation)) === null || _a === void 0 ? void 0 : _a.warnings) !== null && _b !== void 0 ? _b : 0; };
|
|
58
58
|
/**
|
|
59
59
|
* Creates a validation object like ValidationFactory.createInstance does, but without checking again
|
|
60
60
|
* if fields is empty (checking it is O(N) for objects with many properties).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validations.js","sourceRoot":"","sources":["../../src/validation/validations.ts"],"names":[],"mappings":"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","sourcesContent":["import { Objects } from '../utils'\nimport { ValidationFactory } from './factory'\nimport { Validation, ValidationCounts, ValidationFields, ValidationResult } from './validation'\n\nconst keys = {\n counts: 'counts',\n errors: 'errors',\n fields: 'fields',\n valid: 'valid',\n validation: 'validation',\n warnings: 'warnings',\n}\n\nconst hasValidation = (obj: any): boolean => !!obj?.validation\n\nconst getValidation = (obj: any): Validation => obj?.validation || ValidationFactory.createInstance()\n\nconst getFieldValidations = (validation: Validation): ValidationFields => validation?.fields ?? {}\n\nconst getFieldValidationUnsafe =\n (field: string | number) =>\n (validation: Validation): Validation | undefined => {\n if (typeof field === 'string') {\n let validationCurrent: Validation | undefined = validation\n const parts = field.split('.')\n parts.some((part) => {\n validationCurrent = getFieldValidations(validationCurrent!)[part]\n return !validationCurrent // breaks the loop if there is no field validation\n })\n return validationCurrent\n } else {\n return getFieldValidations(validation)[field]\n }\n }\n\nconst getFieldValidation =\n (field: string | number, defaultValue: Validation = ValidationFactory.createInstance()) =>\n (validation: Validation): Validation =>\n getFieldValidationUnsafe(field)(validation) ?? defaultValue\n\nconst getFieldValidationsByFields =\n (fields: (string | number)[]) =>\n (validation: Validation): ValidationFields => {\n const result: ValidationFields = {}\n for (const field of fields) {\n const fieldValidation = getFieldValidationUnsafe(field)(validation)\n if (fieldValidation) {\n result[String(field)] = fieldValidation\n }\n }\n return result\n }\n\nconst getErrors = (validation: Validation): ValidationResult[] => validation?.errors ?? []\n\nconst getWarnings = (validation: Validation): ValidationResult[] => validation?.warnings ?? []\n\nconst hasErrors = (validation: Validation): boolean => {\n const errors = getErrors(validation)\n return !Objects.isEmpty(errors) || Object.values(getFieldValidations(validation)).some(hasErrors)\n}\n\nconst hasWarnings = (validation: Validation): boolean => {\n const warnings = getWarnings(validation)\n return !Objects.isEmpty(warnings) || Object.values(getFieldValidations(validation)).some(hasWarnings)\n}\n\nconst isValid = (validation: Validation): boolean => Objects.isEmpty(validation) || validation.valid\nconst isNotValid = (validation: Validation): boolean => !isValid(validation)\nconst isObjValid = (obj: Record<string, unknown>): boolean => isValid(getValidation(obj))\n\nconst getCounts = (validation: Validation): ValidationCounts | undefined => validation?.counts\nconst getErrorsCount = (validation: Validation): number => getCounts(validation)?.errors ?? 0\nconst getWarningsCount = (validation: Validation): number => getCounts(validation)?.warnings ?? 0\n\n/**\n * Creates a validation object like ValidationFactory.createInstance does, but without checking again\n * if fields is empty (checking it is O(N) for objects with many properties).\n */\nconst _createValidation = (params: {\n valid: boolean\n fields: ValidationFields\n hasFields: boolean\n errors: ValidationResult[]\n warnings: ValidationResult[]\n}): Validation => {\n const { valid, fields, hasFields, errors, warnings } = params\n const result: Validation = { valid }\n if (errors.length > 0) result.errors = errors\n if (hasFields) result.fields = fields\n if (warnings.length > 0) result.warnings = warnings\n return result\n}\n\nconst recalculateValidity = (validation: Validation): Validation => {\n let allFieldsValid = true\n let hasFields = false\n\n const fieldsWithValidationRecalculated: ValidationFields = {}\n\n for (const [fieldKey, fieldValidation] of Object.entries(getFieldValidations(validation))) {\n const fieldValidationUpdated = recalculateValidity(fieldValidation)\n fieldsWithValidationRecalculated[fieldKey] = fieldValidationUpdated\n hasFields = true\n if (!fieldValidationUpdated.valid) {\n allFieldsValid = false\n }\n }\n const errors = getErrors(validation)\n const warnings = getWarnings(validation)\n // nested errors and warnings already make the recalculated field validations not valid:\n // checking only own errors and warnings is enough (hasErrors/hasWarnings would visit the whole subtree again)\n const valid = allFieldsValid && errors.length === 0 && warnings.length === 0\n\n return _createValidation({ valid, fields: fieldsWithValidationRecalculated, hasFields, errors, warnings })\n}\n\nconst traverse = (visitor: (visitedItem: Validation) => void) => (validation: Validation) => {\n const stack: Validation[] = []\n stack.push(validation)\n\n while (stack.length) {\n const validationCurrent = stack.pop()!\n visitor(validationCurrent)\n // Add field validations to stack\n const validationFields = getFieldValidations(validationCurrent)\n stack.push(...Object.values(validationFields))\n }\n}\n\nconst calculateCounts = (validation: Validation): ValidationCounts => {\n let errors = 0\n let warnings = 0\n\n traverse((validationCurrent) => {\n errors += getErrors(validationCurrent).length\n warnings += getWarnings(validationCurrent).length\n })(validation)\n\n return {\n errors,\n warnings,\n }\n}\n\nconst updateCounts = (validation: Validation): Validation => ({\n ...validation,\n counts: calculateCounts(validation),\n})\n\nconst calculateHasNestedErrors = (validation: Validation): boolean => calculateCounts(validation).errors > 0\nconst calculateHasNestedWarnings = (validation: Validation): boolean => calculateCounts(validation).warnings > 0\n\nconst cleanup = (validation: Validation): Validation => {\n // only not valid field validations are kept\n let hasFields = false\n const fieldsCleaned: ValidationFields = {}\n for (const [field, fieldValidation] of Object.entries(getFieldValidations(validation))) {\n const fieldValidationCleaned = cleanup(fieldValidation)\n if (!fieldValidationCleaned.valid) {\n fieldsCleaned[field] = fieldValidationCleaned\n hasFields = true\n }\n }\n const errors = getErrors(validation)\n const warnings = getWarnings(validation)\n // nested errors and warnings already make the cleaned field validations not valid:\n // checking only own errors and warnings is enough (hasErrors/hasWarnings would visit the whole subtree again)\n const valid = !hasFields && errors.length === 0 && warnings.length === 0\n\n return _createValidation({ valid, fields: fieldsCleaned, hasFields, errors, warnings })\n}\n\nconst mergeValidations =\n (validationNext: Validation, doCleanup = true) =>\n (validationPrev: Validation): Validation => {\n const validationFieldsResult = { ...getFieldValidations(validationPrev) }\n const validationFieldsNext = getFieldValidations(validationNext)\n\n // iterate over new field validations: remove valid ones, merge invalid ones with previous ones\n for (const [fieldKey, validationFieldNext] of Object.entries(validationFieldsNext)) {\n if (isValid(validationFieldNext)) {\n if (doCleanup) {\n // field validation valid: remove it from resulting validation\n delete validationFieldsResult[fieldKey]\n } else {\n validationFieldsResult[fieldKey] = ValidationFactory.createInstance()\n }\n } else {\n // field validation not valid: deep merge it with the previous one\n const validationFieldPrev = validationFieldsResult[fieldKey]\n const validationFieldMerged = validationFieldPrev\n ? mergeValidation(validationFieldNext, false)(validationFieldPrev)\n : validationFieldNext\n validationFieldsResult[fieldKey] = validationFieldMerged\n }\n }\n const validationResult: Validation = { ...validationPrev, [keys.fields]: validationFieldsResult }\n validationResult.errors = getErrors(validationNext)\n validationResult.warnings = getWarnings(validationNext)\n return doCleanup ? cleanup(validationResult) : recalculateValidity(validationResult)\n }\n\nconst dissocFieldValidation =\n (fieldKey: string, sideEffect = false, doCleanup = true) =>\n (validation: Validation): Validation => {\n const validationUpdated = Objects.dissocPath({ obj: validation, path: ['fields', fieldKey], sideEffect })\n return doCleanup ? cleanup(validationUpdated) : validationUpdated\n }\n\nconst dissocFieldValidationsStartingWith =\n (fieldStartsWith: string, sideEffect = false, doCleanup = true) =>\n (validation: Validation): Validation => {\n if (!validation?.fields) return validation\n\n const fieldsUpdated = sideEffect ? validation.fields : { ...validation.fields }\n for (const fieldKey of Object.keys(fieldsUpdated)) {\n if (fieldKey.startsWith(fieldStartsWith)) {\n delete fieldsUpdated[fieldKey]\n }\n }\n if (sideEffect) {\n validation.fields = fieldsUpdated\n return validation\n }\n const validationUpdated = { ...validation, fields: fieldsUpdated }\n return doCleanup ? cleanup(validationUpdated) : validationUpdated\n }\n\nconst mergeValidation =\n (validationNext: Validation, doCleanup = true) =>\n (validationPrev: Validation): Validation => {\n const validationFieldsResult: ValidationFields = {\n ...getFieldValidations(validationPrev),\n }\n const validationFieldsNext = getFieldValidations(validationNext)\n\n // iterate over new field validations: remove valid ones, merge invalid ones with previous ones\n for (const [fieldKey, validationFieldNext] of Object.entries(validationFieldsNext)) {\n if (isValid(validationFieldNext)) {\n if (doCleanup) {\n // field validation valid: remove it from resulting validation\n delete validationFieldsResult[fieldKey]\n } else {\n validationFieldsResult[fieldKey] = ValidationFactory.createInstance()\n }\n } else {\n // field validation not valid: deep merge it with the previous one\n const validationFieldPrev = validationFieldsResult[fieldKey]\n const validationFieldMerged = validationFieldPrev\n ? mergeValidation(validationFieldNext, false)(validationFieldPrev)\n : validationFieldNext\n validationFieldsResult[fieldKey] = validationFieldMerged\n }\n }\n\n const validationResult: Validation = { ...validationPrev, fields: validationFieldsResult }\n validationResult.errors = getErrors(validationNext)\n validationResult.warnings = getWarnings(validationNext)\n\n return doCleanup ? cleanup(validationResult) : recalculateValidity(validationResult)\n }\n\nconst mergeFieldValidations = (\n fieldValidationsNext: ValidationFields,\n fieldValidationsPrev: ValidationFields\n): ValidationFields => {\n const result: ValidationFields = { ...fieldValidationsPrev }\n for (const [fieldKey, fieldValidationNext] of Object.entries(fieldValidationsNext)) {\n const fieldValidationPrev = fieldValidationsPrev[fieldKey]\n result[fieldKey] = fieldValidationPrev\n ? mergeValidation(fieldValidationNext, false)(fieldValidationPrev)\n : fieldValidationNext\n }\n return result\n}\n\nconst setValid = (valid: boolean) => (obj: object) => Objects.setInPath({ obj, path: [keys.valid], value: valid })\n\nconst setErrors = (errors: ValidationResult[]) => (obj: object) =>\n Objects.setInPath({ obj, path: [keys.errors], value: errors })\n\nconst setWarnings = (warnings: ValidationResult[]) => (obj: object) =>\n Objects.setInPath({ obj, path: [keys.warnings], value: warnings })\n\nconst setFieldValidations = (fieldValidations: ValidationFields) => (obj: object) =>\n Objects.setInPath({ obj, path: [keys.fields], value: fieldValidations })\n\nconst setFieldValidation = (field: string, fieldValidation: Validation) => (obj: object) =>\n Objects.setInPath({ obj, path: [keys.fields, field], value: fieldValidation })\n\nconst assocFieldValidation = (field: string, fieldValidation: Validation) => (validation: Validation) =>\n cleanup(Objects.assocPath({ obj: validation, path: [keys.fields, field], value: fieldValidation }))\n\nconst assocValidation = (v: Validation) => (obj: Record<string, unknown>) =>\n Objects.assoc({ obj, prop: 'validation', value: v })\n\nconst dissocValidation = (obj: Record<string, unknown>) => Objects.dissoc({ obj, prop: 'validation' })\n\nexport const Validations = {\n keys,\n hasValidation,\n getValidation,\n getFieldValidation,\n getFieldValidations,\n getFieldValidationsByFields,\n getErrors,\n getWarnings,\n hasErrors,\n hasWarnings,\n isValid,\n isNotValid,\n isObjValid,\n getCounts,\n getErrorsCount,\n getWarningsCount,\n recalculateValidity,\n traverse,\n calculateCounts,\n calculateHasNestedErrors,\n calculateHasNestedWarnings,\n updateCounts,\n cleanup,\n mergeValidations,\n dissocFieldValidation,\n dissocFieldValidationsStartingWith,\n mergeValidation,\n mergeFieldValidations,\n setValid,\n setErrors,\n setWarnings,\n setFieldValidations,\n assocFieldValidation,\n setFieldValidation,\n assocValidation,\n dissocValidation,\n}\n"]}
|
|
1
|
+
{"version":3,"file":"validations.js","sourceRoot":"","sources":["../../src/validation/validations.ts"],"names":[],"mappings":"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","sourcesContent":["import { Objects } from '../utils'\nimport { ValidationFactory } from './factory'\nimport { Validation, ValidationCounts, ValidationFields, ValidationResult } from './validation'\n\nconst keys = {\n counts: 'counts',\n errors: 'errors',\n fields: 'fields',\n valid: 'valid',\n validation: 'validation',\n warnings: 'warnings',\n}\n\nconst hasValidation = (obj: any): boolean => !!obj?.validation\n\nconst getValidation = (obj: any): Validation => obj?.validation || ValidationFactory.createInstance()\n\nconst getFieldValidations = (validation: Validation): ValidationFields => validation?.fields ?? {}\n\nconst getFieldValidationUnsafe =\n (field: string | number) =>\n (validation: Validation): Validation | undefined => {\n if (typeof field === 'string') {\n let validationCurrent: Validation | undefined = validation\n const parts = field.split('.')\n parts.some((part) => {\n validationCurrent = getFieldValidations(validationCurrent!)[part]\n return !validationCurrent // breaks the loop if there is no field validation\n })\n return validationCurrent\n } else {\n return getFieldValidations(validation)[field]\n }\n }\n\nconst getFieldValidation =\n (field: string | number, defaultValue: Validation = ValidationFactory.createInstance()) =>\n (validation: Validation): Validation =>\n getFieldValidationUnsafe(field)(validation) ?? defaultValue\n\nconst getFieldValidationsByFields =\n (fields: (string | number)[]) =>\n (validation: Validation): ValidationFields => {\n const result: ValidationFields = {}\n for (const field of fields) {\n const fieldValidation = getFieldValidationUnsafe(field)(validation)\n if (fieldValidation) {\n result[String(field)] = fieldValidation\n }\n }\n return result\n }\n\nconst getErrors = (validation: Validation): ValidationResult[] => validation?.errors ?? []\n\nconst getWarnings = (validation: Validation): ValidationResult[] => validation?.warnings ?? []\n\nconst hasErrors = (validation: Validation): boolean => {\n const errors = getErrors(validation)\n return !Objects.isEmpty(errors) || Object.values(getFieldValidations(validation)).some(hasErrors)\n}\n\nconst hasWarnings = (validation: Validation): boolean => {\n const warnings = getWarnings(validation)\n return !Objects.isEmpty(warnings) || Object.values(getFieldValidations(validation)).some(hasWarnings)\n}\n\nconst isValid = (validation: Validation): boolean => Objects.isEmpty(validation) || validation.valid\nconst isNotValid = (validation: Validation): boolean => !isValid(validation)\nconst isObjValid = (obj: Record<string, unknown>): boolean => isValid(getValidation(obj))\n\nconst getCounts = (validation: Validation): ValidationCounts | undefined => validation?.counts\nconst getErrorsCount = (validation: Validation): number => getCounts(validation)?.errors ?? 0\nconst getWarningsCount = (validation: Validation): number => getCounts(validation)?.warnings ?? 0\n\n/**\n * Creates a validation object like ValidationFactory.createInstance does, but without checking again\n * if fields is empty (checking it is O(N) for objects with many properties).\n */\nconst _createValidation = (params: {\n valid: boolean\n fields: ValidationFields\n hasFields: boolean\n errors: ValidationResult[]\n warnings: ValidationResult[]\n}): Validation => {\n const { valid, fields, hasFields, errors, warnings } = params\n const result: Validation = { valid }\n if (errors.length > 0) result.errors = errors\n if (hasFields) result.fields = fields\n if (warnings.length > 0) result.warnings = warnings\n return result\n}\n\nconst recalculateValidity = (validation: Validation): Validation => {\n let allFieldsValid = true\n let hasFields = false\n\n const fieldsWithValidationRecalculated: ValidationFields = {}\n\n for (const [fieldKey, fieldValidation] of Object.entries(getFieldValidations(validation))) {\n const fieldValidationUpdated = recalculateValidity(fieldValidation)\n fieldsWithValidationRecalculated[fieldKey] = fieldValidationUpdated\n hasFields = true\n if (!fieldValidationUpdated.valid) {\n allFieldsValid = false\n }\n }\n const errors = getErrors(validation)\n const warnings = getWarnings(validation)\n // nested errors and warnings already make the recalculated field validations not valid:\n // checking only own errors and warnings is enough (hasErrors/hasWarnings would visit the whole subtree again)\n const valid = allFieldsValid && errors.length === 0 && warnings.length === 0\n\n return _createValidation({ valid, fields: fieldsWithValidationRecalculated, hasFields, errors, warnings })\n}\n\nconst traverse = (visitor: (visitedItem: Validation) => void) => (validation: Validation) => {\n const stack: Validation[] = []\n stack.push(validation)\n\n while (stack.length) {\n const validationCurrent = stack.pop()!\n visitor(validationCurrent)\n // Add field validations to stack\n const validationFields = getFieldValidations(validationCurrent)\n stack.push(...Object.values(validationFields))\n }\n}\n\nconst calculateCounts = (validation: Validation): ValidationCounts => {\n let errors = 0\n let warnings = 0\n\n traverse((validationCurrent) => {\n errors += getErrors(validationCurrent).length\n warnings += getWarnings(validationCurrent).length\n })(validation)\n\n return {\n errors,\n warnings,\n }\n}\n\nconst updateCounts = (validation: Validation): Validation => ({\n ...validation,\n counts: calculateCounts(validation),\n})\n\nconst calculateHasNestedErrors = (validation: Validation): boolean => calculateCounts(validation).errors > 0\nconst calculateHasNestedWarnings = (validation: Validation): boolean => calculateCounts(validation).warnings > 0\n\nconst cleanup = (validation: Validation): Validation => {\n // only not valid field validations are kept\n let hasFields = false\n const fieldsCleaned: ValidationFields = {}\n for (const [field, fieldValidation] of Object.entries(getFieldValidations(validation))) {\n const fieldValidationCleaned = cleanup(fieldValidation)\n if (!fieldValidationCleaned.valid) {\n fieldsCleaned[field] = fieldValidationCleaned\n hasFields = true\n }\n }\n const errors = getErrors(validation)\n const warnings = getWarnings(validation)\n // nested errors and warnings already make the cleaned field validations not valid:\n // checking only own errors and warnings is enough (hasErrors/hasWarnings would visit the whole subtree again)\n const valid = !hasFields && errors.length === 0 && warnings.length === 0\n\n return _createValidation({ valid, fields: fieldsCleaned, hasFields, errors, warnings })\n}\n\nconst mergeValidations =\n (validationNext: Validation, doCleanup = true) =>\n (validationPrev: Validation): Validation => {\n const validationFieldsResult = { ...getFieldValidations(validationPrev) }\n const validationFieldsNext = getFieldValidations(validationNext)\n\n // iterate over new field validations: remove valid ones, merge invalid ones with previous ones\n for (const [fieldKey, validationFieldNext] of Object.entries(validationFieldsNext)) {\n if (isValid(validationFieldNext)) {\n if (doCleanup) {\n // field validation valid: remove it from resulting validation\n delete validationFieldsResult[fieldKey]\n } else {\n validationFieldsResult[fieldKey] = ValidationFactory.createInstance()\n }\n } else {\n // field validation not valid: deep merge it with the previous one\n const validationFieldPrev = validationFieldsResult[fieldKey]\n const validationFieldMerged = validationFieldPrev\n ? mergeValidation(validationFieldNext, false)(validationFieldPrev)\n : validationFieldNext\n validationFieldsResult[fieldKey] = validationFieldMerged\n }\n }\n const validationResult: Validation = { ...validationPrev, [keys.fields]: validationFieldsResult }\n validationResult.errors = getErrors(validationNext)\n validationResult.warnings = getWarnings(validationNext)\n return doCleanup ? cleanup(validationResult) : recalculateValidity(validationResult)\n }\n\nconst dissocFieldValidation =\n (fieldKey: string, sideEffect = false, doCleanup = true) =>\n (validation: Validation): Validation => {\n const validationUpdated = Objects.dissocPath({ obj: validation, path: ['fields', fieldKey], sideEffect })\n return doCleanup ? cleanup(validationUpdated) : validationUpdated\n }\n\nconst dissocFieldValidationsStartingWith =\n (fieldStartsWith: string, sideEffect = false, doCleanup = true) =>\n (validation: Validation): Validation => {\n if (!validation?.fields) return validation\n\n const fieldsUpdated = sideEffect ? validation.fields : { ...validation.fields }\n for (const fieldKey of Object.keys(fieldsUpdated)) {\n if (fieldKey.startsWith(fieldStartsWith)) {\n delete fieldsUpdated[fieldKey]\n }\n }\n if (sideEffect) {\n validation.fields = fieldsUpdated\n return validation\n }\n const validationUpdated = { ...validation, fields: fieldsUpdated }\n return doCleanup ? cleanup(validationUpdated) : validationUpdated\n }\n\nconst mergeValidation =\n (validationNext: Validation, doCleanup = true) =>\n (validationPrev: Validation): Validation => {\n const validationFieldsResult: ValidationFields = {\n ...getFieldValidations(validationPrev),\n }\n const validationFieldsNext = getFieldValidations(validationNext)\n\n // iterate over new field validations: remove valid ones, merge invalid ones with previous ones\n for (const [fieldKey, validationFieldNext] of Object.entries(validationFieldsNext)) {\n if (isValid(validationFieldNext)) {\n if (doCleanup) {\n // field validation valid: remove it from resulting validation\n delete validationFieldsResult[fieldKey]\n } else {\n validationFieldsResult[fieldKey] = ValidationFactory.createInstance()\n }\n } else {\n // field validation not valid: deep merge it with the previous one\n const validationFieldPrev = validationFieldsResult[fieldKey]\n const validationFieldMerged = validationFieldPrev\n ? mergeValidation(validationFieldNext, false)(validationFieldPrev)\n : validationFieldNext\n validationFieldsResult[fieldKey] = validationFieldMerged\n }\n }\n\n const validationResult: Validation = { ...validationPrev, fields: validationFieldsResult }\n validationResult.errors = getErrors(validationNext)\n validationResult.warnings = getWarnings(validationNext)\n\n return doCleanup ? cleanup(validationResult) : recalculateValidity(validationResult)\n }\n\nconst mergeFieldValidations = (\n fieldValidationsNext: ValidationFields,\n fieldValidationsPrev: ValidationFields\n): ValidationFields => {\n const result: ValidationFields = { ...fieldValidationsPrev }\n for (const [fieldKey, fieldValidationNext] of Object.entries(fieldValidationsNext)) {\n const fieldValidationPrev = fieldValidationsPrev[fieldKey]\n result[fieldKey] = fieldValidationPrev\n ? mergeValidation(fieldValidationNext, false)(fieldValidationPrev)\n : fieldValidationNext\n }\n return result\n}\n\nconst setValid = (valid: boolean) => (obj: object) => Objects.setInPath({ obj, path: [keys.valid], value: valid })\n\nconst setErrors = (errors: ValidationResult[]) => (obj: object) =>\n Objects.setInPath({ obj, path: [keys.errors], value: errors })\n\nconst setWarnings = (warnings: ValidationResult[]) => (obj: object) =>\n Objects.setInPath({ obj, path: [keys.warnings], value: warnings })\n\nconst setFieldValidations = (fieldValidations: ValidationFields) => (obj: object) =>\n Objects.setInPath({ obj, path: [keys.fields], value: fieldValidations })\n\nconst setFieldValidation = (field: string, fieldValidation: Validation) => (obj: object) =>\n Objects.setInPath({ obj, path: [keys.fields, field], value: fieldValidation })\n\nconst assocFieldValidation = (field: string, fieldValidation: Validation) => (validation: Validation) =>\n cleanup(Objects.assocPath({ obj: validation, path: [keys.fields, field], value: fieldValidation }))\n\nconst assocValidation = (v: Validation) => (obj: Record<string, unknown>) =>\n Objects.assoc({ obj, prop: 'validation', value: v })\n\nconst dissocValidation = (obj: Record<string, unknown>) => Objects.dissoc({ obj, prop: 'validation' })\n\nexport const Validations = {\n keys,\n hasValidation,\n getValidation,\n getFieldValidation,\n getFieldValidations,\n getFieldValidationsByFields,\n getErrors,\n getWarnings,\n hasErrors,\n hasWarnings,\n isValid,\n isNotValid,\n isObjValid,\n getCounts,\n getErrorsCount,\n getWarningsCount,\n recalculateValidity,\n traverse,\n calculateCounts,\n calculateHasNestedErrors,\n calculateHasNestedWarnings,\n updateCounts,\n cleanup,\n mergeValidations,\n dissocFieldValidation,\n dissocFieldValidationsStartingWith,\n mergeValidation,\n mergeFieldValidations,\n setValid,\n setErrors,\n setWarnings,\n setFieldValidations,\n assocFieldValidation,\n setFieldValidation,\n assocValidation,\n dissocValidation,\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/validation/validator.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uCAA6C;AAE7C,6CAAiG;AAMjG,MAAM,sBAAsB,GAAoB,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;AAErE
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/validation/validator.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uCAA6C;AAE7C,6CAAiG;AAMjG,MAAM,sBAAsB,GAAoB,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;AAErE;IACgB,aAAa,CAAC,GAAQ,EAAE,KAAa,EAAE,eAAsC;;YACzF,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;YAC1G,MAAM,MAAM,GAA4B,EAAE,CAAA;YAC1C,MAAM,QAAQ,GAA4B,EAAE,CAAA;YAC5C,WAAW,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,EAAE;gBACvC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;oBAC5B,MAAM,GAAG,GAAG,gBAAgB,CAAC,QAAQ,KAAK,+BAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAA;oBACtF,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;gBAC5B,CAAC;YACH,CAAC,CAAC,CAAA;YACF,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAA;YAC1D,OAAO,2BAAiB,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;QACtE,CAAC;KAAA;IAEK,QAAQ;6DACZ,GAAQ,EACR,gBAA4D,EAC5D,OAAO,GAAoB,sBAAsB;YAEjD,MAAM,qBAAqB,GAAsB,MAAM,OAAO,CAAC,GAAG,CAChE,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,KAAiC,EAAE,0CAA5B,CAAC,KAAK,EAAE,eAAe,CAAC,IAClE,OAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,eAAe,CAAC,CAAA,CACjD,CAAC,CADgD,CAChD,CACF,CAAA;YACD,MAAM,MAAM,GAAqB,EAAE,CAAA;YACnC,IAAI,KAAK,GAAG,IAAI,CAAA;YAChB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBACrD,MAAM,eAAe,GAAe,qBAAqB,CAAC,KAAK,CAAC,CAAA;gBAChE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;oBAC3B,KAAK,GAAG,KAAK,CAAA;gBACf,CAAC;gBACD,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;oBACnD,MAAM,CAAC,KAAK,CAAC,GAAG,eAAe,CAAA;gBACjC,CAAC;YACH,CAAC,CAAC,CAAA;YACF,OAAO,2BAAiB,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;QAC5D,CAAC;KAAA;CACF","sourcesContent":["import { ValidationFactory } from './factory'\nimport { FieldValidator } from './fieldValidator'\nimport { ValidationSeverity, Validation, ValidationResult, ValidationFields } from './validation'\n\ninterface ValidateOptions {\n removeValid: boolean\n}\n\nconst defaultValidateOptions: ValidateOptions = { removeValid: true }\n\nexport class Validator {\n private async validateField(obj: any, field: string, fieldValidators: Array<FieldValidator>): Promise<Validation> {\n const validations = await Promise.all(fieldValidators.map((fieldValidator) => fieldValidator(field, obj)))\n const errors: Array<ValidationResult> = []\n const warnings: Array<ValidationResult> = []\n validations.forEach((validationResult) => {\n if (!validationResult.valid) {\n const arr = validationResult.severity === ValidationSeverity.error ? errors : warnings\n arr.push(validationResult)\n }\n })\n const valid = errors.length === 0 && warnings.length === 0\n return ValidationFactory.createInstance({ valid, errors, warnings })\n }\n\n async validate(\n obj: any,\n fieldsValidators: { [field: string]: Array<FieldValidator> },\n options: ValidateOptions = defaultValidateOptions\n ): Promise<Validation> {\n const fieldsValidationArray: Array<Validation> = await Promise.all(\n Object.entries(fieldsValidators).map(async ([field, fieldValidators]) =>\n this.validateField(obj, field, fieldValidators)\n )\n )\n const fields: ValidationFields = {}\n let valid = true\n Object.keys(fieldsValidators).forEach((field, index) => {\n const fieldValidation: Validation = fieldsValidationArray[index]\n if (!fieldValidation.valid) {\n valid = false\n }\n if (!options.removeValid || !fieldValidation.valid) {\n fields[field] = fieldValidation\n }\n })\n return ValidationFactory.createInstance({ valid, fields })\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"name": "OpenForis",
|
|
5
5
|
"email": "openforis.arena@gmail.com"
|
|
6
6
|
},
|
|
7
|
-
"version": "2.3.
|
|
7
|
+
"version": "2.3.39",
|
|
8
8
|
"description": "Arena core module",
|
|
9
9
|
"repository": {
|
|
10
10
|
"type": "git",
|
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
"@types/proj4": "^2.19.0",
|
|
32
32
|
"@typescript-eslint/eslint-plugin": "^8",
|
|
33
33
|
"@typescript-eslint/parser": "^8",
|
|
34
|
+
"@typescript/native": "npm:typescript@7.0.2",
|
|
34
35
|
"eslint": "^10.11.0",
|
|
35
36
|
"eslint-plugin-no-explicit-type-exports": "^0.12.1",
|
|
36
37
|
"husky": "^9.1.7",
|
|
@@ -39,8 +40,7 @@
|
|
|
39
40
|
"pinst": "^3.0.0",
|
|
40
41
|
"prettier": "^3.9.9",
|
|
41
42
|
"ts-jest": "^29.4.14",
|
|
42
|
-
"
|
|
43
|
-
"typescript": "6.0.3",
|
|
43
|
+
"typescript": "npm:@typescript/typescript6@6.0.2",
|
|
44
44
|
"typescript-eslint": "^8"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|