@archbase/core 3.0.0
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/README.md +42 -0
- package/dist/archbase-core-3.0.0.tgz +0 -0
- package/dist/context/ArchbaseAppContext.d.ts +43 -0
- package/dist/context/ArchbaseGlobalProvider.d.ts +33 -0
- package/dist/context/ArchbaseSimpleAppContext.d.ts +34 -0
- package/dist/context/index.d.ts +5 -0
- package/dist/error/ArchbaseError.d.ts +14 -0
- package/dist/error/index.d.ts +11 -0
- package/dist/errorboundary/ArchbaseErrorBoundary.d.ts +21 -0
- package/dist/errorboundary/ArchbaseErrorBoundaryContext.d.ts +6 -0
- package/dist/errorboundary/ArchbaseErrorFallback.d.ts +7 -0
- package/dist/errorboundary/assertArchbaseErrorBoundaryContext.d.ts +2 -0
- package/dist/errorboundary/index.d.ts +6 -0
- package/dist/errorboundary/types.d.ts +39 -0
- package/dist/errorboundary/useArchbaseErrorBoundary.d.ts +5 -0
- package/dist/errorboundary/withArchbaseErrorBoundary.d.ts +3 -0
- package/dist/exceptions/ApiError.d.ts +27 -0
- package/dist/exceptions/ArchbaseErrorHelper.d.ts +2 -0
- package/dist/exceptions/ArchbaseException.d.ts +9 -0
- package/dist/exceptions/index.d.ts +3 -0
- package/dist/fallback/ArchbaseSafeMigrationWrapper.d.ts +57 -0
- package/dist/helper/ArchbaseClickOutside.d.ts +9 -0
- package/dist/helper/ArchbaseObjectHelper.d.ts +9 -0
- package/dist/helper/index.d.ts +2 -0
- package/dist/hooks/ArchbaseDepencyManager.d.ts +70 -0
- package/dist/hooks/index.d.ts +15 -0
- package/dist/hooks/lifecycle/index.d.ts +54 -0
- package/dist/hooks/useArchbaseAsyncFunction.d.ts +1 -0
- package/dist/hooks/useArchbaseBool.d.ts +6 -0
- package/dist/hooks/useArchbaseForceRenderer.d.ts +1 -0
- package/dist/hooks/useArchbaseLatest.d.ts +3 -0
- package/dist/hooks/useArchbasePassiveLayoutEffect.d.ts +3 -0
- package/dist/hooks/useArchbasePasswordRemember.d.ts +11 -0
- package/dist/hooks/useArchbaseReducer.d.ts +21 -0
- package/dist/hooks/useArchbaseResizeObserver.d.ts +11 -0
- package/dist/hooks/useArchbaseSize.d.ts +12 -0
- package/dist/hooks/useArchbaseStateWithCallback.d.ts +2 -0
- package/dist/hooks/useArchbaseTextSelection.d.ts +14 -0
- package/dist/hooks/useArchbaseTheme.d.ts +6 -0
- package/dist/hooks/useArchbaseValidator.d.ts +2 -0
- package/dist/index.css +108 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.js +9728 -0
- package/dist/index.js.map +1 -0
- package/dist/ioc/ArchbaseIOCHelper.d.ts +56 -0
- package/dist/ioc/ArchbaseIOCTypes.d.ts +11 -0
- package/dist/ioc/index.d.ts +2 -0
- package/dist/json/ArchbaseJacksonParser.d.ts +15 -0
- package/dist/json/index.d.ts +1 -0
- package/dist/locales/config.d.ts +1781 -0
- package/dist/locales/index.d.ts +1 -0
- package/dist/rsql/ast/ComparisonOperator.d.ts +24 -0
- package/dist/rsql/ast/LogicOperator.d.ts +13 -0
- package/dist/rsql/ast/Node.d.ts +41 -0
- package/dist/rsql/ast/ReservedChars.d.ts +4 -0
- package/dist/rsql/ast/index.d.ts +4 -0
- package/dist/rsql/builder/index.d.ts +20 -0
- package/dist/rsql/emitter/index.d.ts +19 -0
- package/dist/rsql/index.d.ts +7 -0
- package/dist/rsql/parser/Error.d.ts +7 -0
- package/dist/rsql/parser/ParserContext.d.ts +15 -0
- package/dist/rsql/parser/ParserOperation.d.ts +43 -0
- package/dist/rsql/parser/ParserProduction.d.ts +14 -0
- package/dist/rsql/parser/index.d.ts +3 -0
- package/dist/rsql/parser/lexer/LexerContext.d.ts +8 -0
- package/dist/rsql/parser/lexer/LexerProcessor.d.ts +8 -0
- package/dist/rsql/parser/lexer/Token.d.ts +38 -0
- package/dist/rsql/parser/lexer/lex.d.ts +3 -0
- package/dist/rsql/parser/lexer/processors/scanNonReservedSymbol.d.ts +3 -0
- package/dist/rsql/parser/lexer/processors/scanSymbol.d.ts +3 -0
- package/dist/rsql/parser/lexer/processors/seekAnyToken.d.ts +4 -0
- package/dist/rsql/parser/lexer/processors/seekComparisonCustomOperatorToken.d.ts +4 -0
- package/dist/rsql/parser/lexer/processors/seekComparisonOperatorToken.d.ts +4 -0
- package/dist/rsql/parser/lexer/processors/seekLogicCanonicalOperatorToken.d.ts +4 -0
- package/dist/rsql/parser/lexer/processors/seekLogicVerboseOperatorToken.d.ts +4 -0
- package/dist/rsql/parser/lexer/processors/seekParenthesisToken.d.ts +4 -0
- package/dist/rsql/parser/lexer/processors/seekQuotedToken.d.ts +4 -0
- package/dist/rsql/parser/lexer/processors/seekUnquotedToken.d.ts +4 -0
- package/dist/rsql/parser/lexer/processors/skipWhitespace.d.ts +3 -0
- package/dist/types/OptionsResult.d.ts +8 -0
- package/dist/types/filter.d.ts +56 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/querybuilder.d.ts +85 -0
- package/dist/types/token.d.ts +50 -0
- package/dist/types/types.d.ts +5 -0
- package/dist/utils/archbaseLogo.d.ts +3 -0
- package/dist/utils/array.d.ts +1 -0
- package/dist/utils/convertImageToBase64.d.ts +1 -0
- package/dist/utils/deepFilter.d.ts +2 -0
- package/dist/utils/deepFind.d.ts +2 -0
- package/dist/utils/deepForEach.d.ts +2 -0
- package/dist/utils/deepMap.d.ts +2 -0
- package/dist/utils/dom.d.ts +2 -0
- package/dist/utils/enum-utils.d.ts +1 -0
- package/dist/utils/filter.d.ts +2 -0
- package/dist/utils/getElementName.d.ts +2 -0
- package/dist/utils/groupByType.d.ts +2 -0
- package/dist/utils/hasChildren.d.ts +4 -0
- package/dist/utils/hasComplexChildren.d.ts +4 -0
- package/dist/utils/index.d.ts +24 -0
- package/dist/utils/isBase64.d.ts +1 -0
- package/dist/utils/isEmail.d.ts +1 -0
- package/dist/utils/masker.d.ts +27 -0
- package/dist/utils/nestedObject.d.ts +7 -0
- package/dist/utils/object.d.ts +10 -0
- package/dist/utils/objectPrototype.d.ts +2 -0
- package/dist/utils/onlyText.d.ts +3 -0
- package/dist/utils/onlyValid.d.ts +2 -0
- package/dist/utils/propertyUtils.d.ts +1 -0
- package/dist/utils/string-utils.d.ts +138 -0
- package/dist/utils/string.d.ts +11 -0
- package/dist/validation/ValidationErrorsContext.d.ts +25 -0
- package/dist/validator/ArchbaseValidator.d.ts +21 -0
- package/dist/validator/container.d.ts +25 -0
- package/dist/validator/decorator/ValidationOptions.d.ts +25 -0
- package/dist/validator/decorator/array/ArrayContains.d.ts +12 -0
- package/dist/validator/decorator/array/ArrayMaxSize.d.ts +12 -0
- package/dist/validator/decorator/array/ArrayMinSize.d.ts +12 -0
- package/dist/validator/decorator/array/ArrayNotContains.d.ts +12 -0
- package/dist/validator/decorator/array/ArrayNotEmpty.d.ts +12 -0
- package/dist/validator/decorator/array/ArrayUnique.d.ts +13 -0
- package/dist/validator/decorator/common/Allow.d.ts +5 -0
- package/dist/validator/decorator/common/Equals.d.ts +10 -0
- package/dist/validator/decorator/common/IsDefined.d.ts +10 -0
- package/dist/validator/decorator/common/IsEmpty.d.ts +10 -0
- package/dist/validator/decorator/common/IsIn.d.ts +10 -0
- package/dist/validator/decorator/common/IsLatLong.d.ts +10 -0
- package/dist/validator/decorator/common/IsLatitude.d.ts +10 -0
- package/dist/validator/decorator/common/IsLongitude.d.ts +10 -0
- package/dist/validator/decorator/common/IsNotEmpty.d.ts +10 -0
- package/dist/validator/decorator/common/IsNotIn.d.ts +10 -0
- package/dist/validator/decorator/common/IsOptional.d.ts +5 -0
- package/dist/validator/decorator/common/NotEquals.d.ts +10 -0
- package/dist/validator/decorator/common/Validate.d.ts +14 -0
- package/dist/validator/decorator/common/ValidateBy.d.ts +11 -0
- package/dist/validator/decorator/common/ValidateIf.d.ts +5 -0
- package/dist/validator/decorator/common/ValidateNested.d.ts +5 -0
- package/dist/validator/decorator/common/ValidatePromise.d.ts +5 -0
- package/dist/validator/decorator/date/MaxDate.d.ts +10 -0
- package/dist/validator/decorator/date/MinDate.d.ts +10 -0
- package/dist/validator/decorator/decorators.d.ts +111 -0
- package/dist/validator/decorator/number/IsDivisibleBy.d.ts +10 -0
- package/dist/validator/decorator/number/IsNegative.d.ts +10 -0
- package/dist/validator/decorator/number/IsPositive.d.ts +10 -0
- package/dist/validator/decorator/number/Max.d.ts +10 -0
- package/dist/validator/decorator/number/Min.d.ts +10 -0
- package/dist/validator/decorator/object/IsInstance.d.ts +10 -0
- package/dist/validator/decorator/object/IsNotEmptyObject.d.ts +16 -0
- package/dist/validator/decorator/string/Contains.d.ts +12 -0
- package/dist/validator/decorator/string/IsAlpha.d.ts +12 -0
- package/dist/validator/decorator/string/IsAlphanumeric.d.ts +12 -0
- package/dist/validator/decorator/string/IsAscii.d.ts +12 -0
- package/dist/validator/decorator/string/IsBIC.d.ts +12 -0
- package/dist/validator/decorator/string/IsBase32.d.ts +12 -0
- package/dist/validator/decorator/string/IsBase58.d.ts +12 -0
- package/dist/validator/decorator/string/IsBase64.d.ts +12 -0
- package/dist/validator/decorator/string/IsBooleanString.d.ts +12 -0
- package/dist/validator/decorator/string/IsBtcAddress.d.ts +12 -0
- package/dist/validator/decorator/string/IsByteLength.d.ts +12 -0
- package/dist/validator/decorator/string/IsCreditCard.d.ts +12 -0
- package/dist/validator/decorator/string/IsCurrency.d.ts +12 -0
- package/dist/validator/decorator/string/IsDataURI.d.ts +12 -0
- package/dist/validator/decorator/string/IsDateString.d.ts +10 -0
- package/dist/validator/decorator/string/IsDecimal.d.ts +12 -0
- package/dist/validator/decorator/string/IsEAN.d.ts +12 -0
- package/dist/validator/decorator/string/IsEmail.d.ts +12 -0
- package/dist/validator/decorator/string/IsEthereumAddress.d.ts +12 -0
- package/dist/validator/decorator/string/IsFQDN.d.ts +12 -0
- package/dist/validator/decorator/string/IsFirebasePushId.d.ts +12 -0
- package/dist/validator/decorator/string/IsFullWidth.d.ts +12 -0
- package/dist/validator/decorator/string/IsHSL.d.ts +14 -0
- package/dist/validator/decorator/string/IsHalfWidth.d.ts +12 -0
- package/dist/validator/decorator/string/IsHash.d.ts +14 -0
- package/dist/validator/decorator/string/IsHexColor.d.ts +12 -0
- package/dist/validator/decorator/string/IsHexadecimal.d.ts +12 -0
- package/dist/validator/decorator/string/IsIBAN.d.ts +12 -0
- package/dist/validator/decorator/string/IsIP.d.ts +13 -0
- package/dist/validator/decorator/string/IsISBN.d.ts +13 -0
- package/dist/validator/decorator/string/IsISIN.d.ts +12 -0
- package/dist/validator/decorator/string/IsISO31661Alpha2.d.ts +10 -0
- package/dist/validator/decorator/string/IsISO31661Alpha3.d.ts +10 -0
- package/dist/validator/decorator/string/IsISO8601.d.ts +14 -0
- package/dist/validator/decorator/string/IsISRC.d.ts +12 -0
- package/dist/validator/decorator/string/IsISSN.d.ts +12 -0
- package/dist/validator/decorator/string/IsIdentityCard.d.ts +16 -0
- package/dist/validator/decorator/string/IsJSON.d.ts +12 -0
- package/dist/validator/decorator/string/IsJWT.d.ts +12 -0
- package/dist/validator/decorator/string/IsLocale.d.ts +12 -0
- package/dist/validator/decorator/string/IsLowercase.d.ts +12 -0
- package/dist/validator/decorator/string/IsMacAddress.d.ts +13 -0
- package/dist/validator/decorator/string/IsMagnetURI.d.ts +12 -0
- package/dist/validator/decorator/string/IsMilitaryTime.d.ts +12 -0
- package/dist/validator/decorator/string/IsMimeType.d.ts +12 -0
- package/dist/validator/decorator/string/IsMobilePhone.d.ts +28 -0
- package/dist/validator/decorator/string/IsMongoId.d.ts +12 -0
- package/dist/validator/decorator/string/IsMultibyte.d.ts +12 -0
- package/dist/validator/decorator/string/IsNumberString.d.ts +12 -0
- package/dist/validator/decorator/string/IsOctal.d.ts +12 -0
- package/dist/validator/decorator/string/IsPassportNumber.d.ts +12 -0
- package/dist/validator/decorator/string/IsPhoneNumber.d.ts +19 -0
- package/dist/validator/decorator/string/IsPort.d.ts +10 -0
- package/dist/validator/decorator/string/IsPostalCode.d.ts +12 -0
- package/dist/validator/decorator/string/IsRFC3339.d.ts +12 -0
- package/dist/validator/decorator/string/IsRgbColor.d.ts +14 -0
- package/dist/validator/decorator/string/IsSemVer.d.ts +12 -0
- package/dist/validator/decorator/string/IsStrongPassword.d.ts +16 -0
- package/dist/validator/decorator/string/IsSurrogatePair.d.ts +12 -0
- package/dist/validator/decorator/string/IsTimeZone.d.ts +12 -0
- package/dist/validator/decorator/string/IsUUID.d.ts +12 -0
- package/dist/validator/decorator/string/IsUppercase.d.ts +12 -0
- package/dist/validator/decorator/string/IsUrl.d.ts +12 -0
- package/dist/validator/decorator/string/IsVariableWidth.d.ts +12 -0
- package/dist/validator/decorator/string/Length.d.ts +12 -0
- package/dist/validator/decorator/string/Matches.d.ts +14 -0
- package/dist/validator/decorator/string/MaxLength.d.ts +12 -0
- package/dist/validator/decorator/string/MinLength.d.ts +12 -0
- package/dist/validator/decorator/string/NotContains.d.ts +12 -0
- package/dist/validator/decorator/string/is-iso4217-currency-code.d.ts +10 -0
- package/dist/validator/decorator/string/is-tax-id.d.ts +20 -0
- package/dist/validator/decorator/typechecker/IsArray.d.ts +10 -0
- package/dist/validator/decorator/typechecker/IsBoolean.d.ts +10 -0
- package/dist/validator/decorator/typechecker/IsDate.d.ts +10 -0
- package/dist/validator/decorator/typechecker/IsEnum.d.ts +10 -0
- package/dist/validator/decorator/typechecker/IsInt.d.ts +10 -0
- package/dist/validator/decorator/typechecker/IsNumber.d.ts +18 -0
- package/dist/validator/decorator/typechecker/IsObject.d.ts +12 -0
- package/dist/validator/decorator/typechecker/IsString.d.ts +10 -0
- package/dist/validator/index.d.ts +49 -0
- package/dist/validator/metadata/ConstraintMetadata.d.ts +23 -0
- package/dist/validator/metadata/MetadataStorage.d.ts +42 -0
- package/dist/validator/metadata/ValidationMetadata.d.ts +53 -0
- package/dist/validator/metadata/ValidationMetadataArgs.d.ts +38 -0
- package/dist/validator/register-decorator.d.ts +36 -0
- package/dist/validator/utils/convert-to-array.util.d.ts +4 -0
- package/dist/validator/utils/get-global.util.d.ts +7 -0
- package/dist/validator/utils/index.d.ts +3 -0
- package/dist/validator/utils/is-promise.util.d.ts +1 -0
- package/dist/validator/validation/ValidationArguments.d.ts +26 -0
- package/dist/validator/validation/ValidationError.d.ts +42 -0
- package/dist/validator/validation/ValidationExecutor.d.ts +28 -0
- package/dist/validator/validation/ValidationTypes.d.ts +15 -0
- package/dist/validator/validation/ValidationUtils.d.ts +8 -0
- package/dist/validator/validation/Validator.d.ts +37 -0
- package/dist/validator/validation/ValidatorConstraintInterface.d.ts +14 -0
- package/dist/validator/validation/ValidatorOptions.d.ts +75 -0
- package/dist/validator/validation-schema/ValidationSchema.d.ts +57 -0
- package/dist/validator/validation-schema/ValidationSchemaToMetadataTransformer.d.ts +8 -0
- package/package.json +88 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/context/ArchbaseSimpleAppContext.tsx","../src/context/ArchbaseAppContext.tsx","../src/locales/config.ts","../src/context/ArchbaseGlobalProvider.tsx","../src/exceptions/ArchbaseErrorHelper.ts","../src/exceptions/ArchbaseException.ts","../src/exceptions/ApiError.ts","../src/helper/ArchbaseObjectHelper.ts","../src/helper/ArchbaseClickOutside.tsx","../src/hooks/useArchbaseTheme.ts","../src/hooks/useArchbaseLatest.ts","../src/hooks/useArchbasePassiveLayoutEffect.ts","../src/hooks/useArchbaseResizeObserver.ts","../src/hooks/useArchbaseSize.ts","../src/hooks/useArchbaseBool.ts","../src/hooks/useArchbasePasswordRemember.ts","../src/validator/metadata/ValidationMetadata.ts","../src/validator/validation-schema/ValidationSchemaToMetadataTransformer.ts","../src/validator/utils/convert-to-array.util.ts","../src/validator/utils/get-global.util.ts","../src/validator/utils/is-promise.util.ts","../src/validator/metadata/MetadataStorage.ts","../src/validator/validation/ValidationError.ts","../src/validator/validation/ValidationTypes.ts","../src/validator/validation/ValidationUtils.ts","../src/validator/validation/ValidationExecutor.ts","../src/validator/validation/Validator.ts","../src/validator/container.ts","../src/validator/decorator/common/Allow.ts","../src/validator/metadata/ConstraintMetadata.ts","../src/validator/register-decorator.ts","../src/validator/decorator/common/ValidateBy.ts","../src/validator/decorator/common/IsDefined.ts","../src/validator/decorator/common/IsOptional.ts","../src/validator/decorator/common/Validate.ts","../src/validator/decorator/common/ValidateIf.ts","../src/validator/decorator/common/ValidateNested.ts","../src/validator/decorator/common/ValidatePromise.ts","../src/validator/decorator/common/IsLatLong.ts","../src/validator/decorator/common/IsLatitude.ts","../src/validator/decorator/common/IsLongitude.ts","../src/validator/decorator/common/Equals.ts","../src/validator/decorator/common/NotEquals.ts","../src/validator/decorator/common/IsEmpty.ts","../src/validator/decorator/common/IsNotEmpty.ts","../src/validator/decorator/common/IsIn.ts","../src/validator/decorator/common/IsNotIn.ts","../src/validator/decorator/number/IsDivisibleBy.ts","../src/validator/decorator/number/IsPositive.ts","../src/validator/decorator/number/IsNegative.ts","../src/validator/decorator/number/Max.ts","../src/validator/decorator/number/Min.ts","../src/validator/decorator/date/MinDate.ts","../src/validator/decorator/date/MaxDate.ts","../src/validator/decorator/string/Contains.ts","../src/validator/decorator/string/NotContains.ts","../src/validator/decorator/string/IsAlpha.ts","../src/validator/decorator/string/IsAlphanumeric.ts","../src/validator/decorator/string/IsDecimal.ts","../src/validator/decorator/string/IsAscii.ts","../src/validator/decorator/string/IsBase64.ts","../src/validator/decorator/string/IsByteLength.ts","../src/validator/decorator/string/IsCreditCard.ts","../src/validator/decorator/string/IsCurrency.ts","../src/validator/decorator/string/IsEmail.ts","../src/validator/decorator/string/IsFQDN.ts","../src/validator/decorator/string/IsFullWidth.ts","../src/validator/decorator/string/IsHalfWidth.ts","../src/validator/decorator/string/IsVariableWidth.ts","../src/validator/decorator/string/IsHexColor.ts","../src/validator/decorator/string/IsHexadecimal.ts","../src/validator/decorator/ValidationOptions.ts","../src/validator/decorator/string/IsMacAddress.ts","../src/validator/decorator/string/IsIP.ts","../src/validator/decorator/string/IsPort.ts","../src/validator/decorator/string/IsISBN.ts","../src/validator/decorator/string/IsISIN.ts","../src/validator/decorator/string/IsISO8601.ts","../src/validator/decorator/string/IsJSON.ts","../src/validator/decorator/string/IsJWT.ts","../src/validator/decorator/string/IsLowercase.ts","../src/validator/decorator/string/IsMobilePhone.ts","../src/validator/decorator/string/IsISO31661Alpha2.ts","../src/validator/decorator/string/IsISO31661Alpha3.ts","../src/validator/decorator/string/IsMongoId.ts","../src/validator/decorator/string/IsMultibyte.ts","../src/validator/decorator/string/IsSurrogatePair.ts","../src/validator/decorator/string/IsUrl.ts","../src/validator/decorator/string/IsUUID.ts","../src/validator/decorator/string/IsFirebasePushId.ts","../src/validator/decorator/string/IsUppercase.ts","../src/validator/decorator/string/Length.ts","../src/validator/decorator/string/MaxLength.ts","../src/validator/decorator/string/MinLength.ts","../src/validator/decorator/string/Matches.ts","../src/validator/decorator/string/IsPhoneNumber.ts","../src/validator/decorator/string/IsMilitaryTime.ts","../src/validator/decorator/string/IsHash.ts","../src/validator/decorator/string/IsISSN.ts","../src/validator/decorator/string/IsDateString.ts","../src/validator/decorator/string/IsBooleanString.ts","../src/validator/decorator/string/IsNumberString.ts","../src/validator/decorator/string/IsBase32.ts","../src/validator/decorator/string/IsBIC.ts","../src/validator/decorator/string/IsBtcAddress.ts","../src/validator/decorator/string/IsDataURI.ts","../src/validator/decorator/string/IsEAN.ts","../src/validator/decorator/string/IsEthereumAddress.ts","../src/validator/decorator/string/IsHSL.ts","../src/validator/decorator/string/IsIBAN.ts","../src/validator/decorator/string/IsIdentityCard.ts","../src/validator/decorator/string/IsISRC.ts","../src/validator/decorator/string/IsLocale.ts","../src/validator/decorator/string/IsMagnetURI.ts","../src/validator/decorator/string/IsMimeType.ts","../src/validator/decorator/string/IsOctal.ts","../src/validator/decorator/string/IsPassportNumber.ts","../src/validator/decorator/string/IsPostalCode.ts","../src/validator/decorator/string/IsRFC3339.ts","../src/validator/decorator/string/IsRgbColor.ts","../src/validator/decorator/string/IsSemVer.ts","../src/validator/decorator/string/IsStrongPassword.ts","../src/validator/decorator/string/IsTimeZone.ts","../src/validator/decorator/string/IsBase58.ts","../src/validator/decorator/string/is-tax-id.ts","../src/validator/decorator/string/is-iso4217-currency-code.ts","../src/validator/decorator/typechecker/IsBoolean.ts","../src/validator/decorator/typechecker/IsDate.ts","../src/validator/decorator/typechecker/IsNumber.ts","../src/validator/decorator/typechecker/IsEnum.ts","../src/validator/decorator/typechecker/IsInt.ts","../src/validator/decorator/typechecker/IsString.ts","../src/validator/decorator/typechecker/IsArray.ts","../src/validator/decorator/typechecker/IsObject.ts","../src/validator/decorator/array/ArrayContains.ts","../src/validator/decorator/array/ArrayNotContains.ts","../src/validator/decorator/array/ArrayNotEmpty.ts","../src/validator/decorator/array/ArrayMinSize.ts","../src/validator/decorator/array/ArrayMaxSize.ts","../src/validator/decorator/array/ArrayUnique.ts","../src/validator/decorator/object/IsNotEmptyObject.ts","../src/validator/decorator/object/IsInstance.ts","../src/validator/index.ts","../src/validator/ArchbaseValidator.ts","../src/hooks/useArchbaseValidator.ts","../src/hooks/useArchbaseAsyncFunction.ts","../src/hooks/useArchbaseForceRenderer.ts","../src/hooks/useArchbaseReducer.tsx","../src/hooks/useArchbaseStateWithCallback.ts","../src/hooks/useArchbaseTextSelection.ts","../src/hooks/ArchbaseDepencyManager.tsx","../src/hooks/lifecycle/index.ts","../src/ioc/ArchbaseIOCHelper.ts","../src/ioc/ArchbaseIOCTypes.ts","../src/json/ArchbaseJacksonParser.ts","../src/rsql/ast/ComparisonOperator.ts","../src/rsql/ast/LogicOperator.ts","../src/rsql/ast/ReservedChars.ts","../src/rsql/ast/Node.ts","../src/rsql/builder/index.ts","../src/rsql/emitter/index.ts","../src/rsql/parser/lexer/Token.ts","../src/rsql/parser/Error.ts","../src/rsql/parser/lexer/LexerContext.ts","../src/rsql/parser/lexer/processors/seekComparisonCustomOperatorToken.ts","../src/rsql/parser/lexer/processors/scanSymbol.ts","../src/rsql/parser/lexer/processors/seekComparisonOperatorToken.ts","../src/rsql/parser/lexer/processors/seekLogicCanonicalOperatorToken.ts","../src/rsql/parser/lexer/processors/scanNonReservedSymbol.ts","../src/rsql/parser/lexer/processors/seekLogicVerboseOperatorToken.ts","../src/rsql/parser/lexer/processors/seekParenthesisToken.ts","../src/rsql/parser/lexer/processors/seekQuotedToken.ts","../src/rsql/parser/lexer/processors/seekUnquotedToken.ts","../src/rsql/parser/lexer/processors/skipWhitespace.ts","../src/rsql/parser/lexer/processors/seekAnyToken.ts","../src/rsql/parser/lexer/lex.ts","../src/rsql/parser/ParserContext.ts","../src/rsql/parser/ParserOperation.ts","../src/rsql/parser/ParserProduction.ts","../src/rsql/parser/index.ts","../src/utils/isBase64.ts","../src/utils/isEmail.ts","../src/utils/getElementName.ts","../src/utils/archbaseLogo.ts","../src/utils/convertImageToBase64.ts","../src/utils/filter.ts","../src/utils/hasChildren.ts","../src/utils/hasComplexChildren.ts","../src/utils/propertyUtils.tsx","../src/utils/deepFilter.ts","../src/utils/onlyValid.ts","../src/utils/onlyText.ts","../src/utils/groupByType.ts","../src/utils/dom.ts","../src/utils/deepMap.ts","../src/utils/deepForEach.ts","../src/utils/deepFind.ts","../src/utils/array.ts","../src/utils/nestedObject.ts","../src/utils/string-utils.ts","../src/utils/enum-utils.ts","../src/utils/ArchbaseFilterDSL.js","../src/types/filter.ts","../src/types/querybuilder.ts","../src/errorboundary/ArchbaseErrorBoundaryContext.ts","../src/errorboundary/ArchbaseErrorBoundary.tsx","../src/errorboundary/assertArchbaseErrorBoundaryContext.ts","../src/errorboundary/useArchbaseErrorBoundary.ts","../src/errorboundary/withArchbaseErrorBoundary.ts","../src/errorboundary/ArchbaseErrorFallback.tsx","../src/utils/masker.ts","../src/fallback/ArchbaseSafeMigrationWrapper.tsx","../src/validation/ValidationErrorsContext.tsx","../src/index.ts"],"sourcesContent":["import React, { createContext, ReactNode, useContext, useState, useCallback } from 'react';\n\nexport interface ArchbaseAppConfig {\n /** URL base da API */\n apiUrl?: string;\n /** Locale padrão da aplicação */\n locale?: string;\n /** Tema da aplicação */\n theme?: 'light' | 'dark' | 'auto';\n /** Features flags */\n features?: Record<string, boolean>;\n /** Configurações de debug */\n debug?: boolean;\n /** Formato de data */\n dateFormat?: string;\n /** Formato de data e hora */\n dateTimeFormat?: string;\n /** Formato de hora */\n timeFormat?: string;\n /** Configurações customizadas */\n custom?: Record<string, unknown>;\n}\n\nexport interface ArchbaseAppContextValue {\n config: ArchbaseAppConfig;\n updateConfig: (updates: Partial<ArchbaseAppConfig>) => void;\n}\n\nconst ArchbaseAppContext = createContext<ArchbaseAppContextValue | undefined>(undefined);\n\nexport interface ArchbaseAppProviderProps {\n children: ReactNode;\n config: ArchbaseAppConfig;\n onConfigChange?: (config: ArchbaseAppConfig) => void;\n}\n\nexport function ArchbaseAppProvider({ \n children, \n config: initialConfig,\n onConfigChange \n}: ArchbaseAppProviderProps) {\n const [config, setConfig] = useState<ArchbaseAppConfig>(initialConfig);\n\n const updateConfig = useCallback((updates: Partial<ArchbaseAppConfig>) => {\n const newConfig = { ...config, ...updates };\n setConfig(newConfig);\n onConfigChange?.(newConfig);\n }, [config, onConfigChange]);\n\n const contextValue = React.useMemo(() => ({\n config,\n updateConfig,\n }), [config, updateConfig]);\n\n return (\n <ArchbaseAppContext.Provider value={contextValue}>\n {children}\n </ArchbaseAppContext.Provider>\n );\n}\n\nexport function useArchbaseApp(): ArchbaseAppContextValue {\n const context = useContext(ArchbaseAppContext);\n if (!context) {\n throw new Error('useArchbaseApp must be used within ArchbaseAppProvider');\n }\n return context;\n}\n\nexport { ArchbaseAppContext };\n","import React, { createContext, ReactNode, useContext, useState, useCallback, useEffect, useRef } from 'react';\nimport { Container } from 'inversify';\nimport {\n MantineTheme,\n MantineColorScheme,\n MantineThemeOverride,\n useMantineTheme,\n useMantineColorScheme\n} from '@mantine/core';\nimport { ModalsProvider } from '@mantine/modals';\nimport { useLocalStorage } from '@mantine/hooks';\nimport { BrowserRouter } from 'react-router-dom';\nimport { QueryParamProvider } from 'use-query-params';\nimport { ReactRouter6Adapter } from 'use-query-params/adapters/react-router-6';\nimport { ProSidebarProvider } from 'react-pro-sidebar';\nimport queryString from 'query-string';\nimport { ArchbaseUser } from '../types';\n\n// Mock components for missing dependencies\nconst CustomShowErrorModal = (props: any) => <div>{props.innerProps?.children}</div>;\n\n// Default navigation provider that does nothing (will be replaced by actual provider)\nconst DefaultNavigationProvider = ({ children }: { children: React.ReactNode }) => <>{children}</>;\n\nexport type ArchbaseLanguage = {\n\tlang: string;\n\tname: string;\n};\n\ninterface ArchbaseAppContextValues {\n\tuser: ArchbaseUser | null;\n\towner: string | null;\n\tselectedCompany: any | null;\n\ttheme: MantineTheme | null;\n\tcolorScheme: MantineColorScheme | null;\n\tiocContainer: Container | null;\n\tdateFormat: string;\n\tdateTimeFormat: string;\n\ttimeFormat: string;\n\tvariant?: string;\n\tlanguages?: ArchbaseLanguage[];\n\tsetCustomTheme?: (dark: MantineThemeOverride, light: MantineThemeOverride) => void;\n}\n\nconst ArchbaseAppContext = createContext<ArchbaseAppContextValues>({\n\tuser: null,\n\towner: null,\n\tselectedCompany: null,\n\ttheme: null,\n\tcolorScheme: null,\n\tiocContainer: null,\n\tdateFormat: 'dd/MM/yyyy',\n\tdateTimeFormat: 'dd/MM/yyyy HH:mm:ss',\n\ttimeFormat: 'HH:mm:ss',\n\tvariant: 'filled',\n\tsetCustomTheme: undefined,\n});\n\ninterface ArchbaseAppProviderProps {\n\tchildren?: ReactNode;\n\tuser: any | null;\n\towner: string | null;\n\tselectedCompany: any | null;\n\tiocContainer?: any;\n\tdateFormat?: string;\n\tdateTimeFormat?: string;\n\ttimeFormat?: string;\n\tvariant?: string;\n\tlanguages?: ArchbaseLanguage[];\n\tsetCustomTheme?: (dark: MantineThemeOverride, light: MantineThemeOverride) => void;\n\tnavigationProvider?: React.ComponentType<{ children: React.ReactNode }>;\n}\n\nconst ArchbaseAppProvider: React.FC<ArchbaseAppProviderProps> = ({\n\tuser,\n\towner,\n\tselectedCompany,\n\tchildren,\n\tiocContainer,\n\tdateFormat = 'dd/MM/yyyy',\n\tdateTimeFormat = 'dd/MM/yyyy HH:mm:ss',\n\ttimeFormat = 'HH:mm:ss',\n\tvariant = 'filled',\n\tlanguages = [\n\t\t{ lang: 'en', name: 'English' },\n\t\t{ lang: 'pt-BR', name: 'Português' },\n\t\t{ lang: 'es', name: 'Español' },\n\t],\n\tsetCustomTheme,\n\tnavigationProvider,\n}) => {\n\t// Determina qual NavigationProvider usar\n\tconst FinalNavigationProvider = navigationProvider || DefaultNavigationProvider;\n\t\n\t// Log para debug\n\tconsole.log('[ArchbaseAppProvider] NavigationProvider escolhido:', {\n\t\tprovidedByUser: !!navigationProvider,\n\t\tusingDefault: FinalNavigationProvider === DefaultNavigationProvider,\n\t\tproviderName: FinalNavigationProvider.name || 'AnonymousProvider'\n\t});\n\t\n\tconst theme = useMantineTheme();\n\tconst currentColorScheme = useRef('');\n\tconst { colorScheme, setColorScheme } = useMantineColorScheme();\n\tconst [colorSchemeLocalStorage, setColorSchemeLocalStorage] = useLocalStorage<'dark' | 'light'>({\n\t\tkey: 'mantine-color-scheme',\n\t\tdefaultValue: 'light',\n\t\tgetInitialValueInEffect: false,\n\t});\n\n\tuseEffect(() => {\n\t\tif (currentColorScheme.current !== colorSchemeLocalStorage) {\n\t\t\tsetColorScheme(colorSchemeLocalStorage);\n\t\t\tcurrentColorScheme.current = colorSchemeLocalStorage;\n\t\t}\n\t}, [colorSchemeLocalStorage, setColorScheme]);\n\n\treturn (\n\t\t<ArchbaseAppContext.Provider\n\t\t\tvalue={{\n\t\t\t\tuser,\n\t\t\t\towner,\n\t\t\t\tselectedCompany,\n\t\t\t\ttheme,\n\t\t\t\tcolorScheme,\n\t\t\t\tiocContainer,\n\t\t\t\tdateFormat,\n\t\t\t\tdateTimeFormat,\n\t\t\t\ttimeFormat,\n\t\t\t\tvariant,\n\t\t\t\tlanguages,\n\t\t\t\tsetCustomTheme,\n\t\t\t}}\n\t\t>\n\t\t\t<ModalsProvider\n\t\t\t\tmodals={{ archbaseShowError: CustomShowErrorModal }}\n\t\t\t\tmodalProps={{\n\t\t\t\t\tsize: 'lg',\n\t\t\t\t\toverlayProps: {\n\t\t\t\t\t\tcolor: colorScheme === 'dark' ? theme.colors.dark[7] : theme.colors.gray[6],\n\t\t\t\t\t\topacity: 0.25,\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<ProSidebarProvider>\n\t\t\t\t\t<FinalNavigationProvider>\n\t\t\t\t\t\t<BrowserRouter>\n\t\t\t\t\t\t\t<QueryParamProvider\n\t\t\t\t\t\t\t\tadapter={ReactRouter6Adapter}\n\t\t\t\t\t\t\t\toptions={{\n\t\t\t\t\t\t\t\t\tsearchStringToObject: queryString.parse,\n\t\t\t\t\t\t\t\t\tobjectToSearchString: queryString.stringify,\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{children as any}\n\t\t\t\t\t\t\t</QueryParamProvider>\n\t\t\t\t\t\t</BrowserRouter>\n\t\t\t\t\t</FinalNavigationProvider>\n\t\t\t\t</ProSidebarProvider>\n\t\t\t</ModalsProvider>\n\t\t</ArchbaseAppContext.Provider>\n\t);\n};\n\nconst useArchbaseAppContext = () => {\n\tconst context = useContext(ArchbaseAppContext);\n\tif (!context) {\n\t\tthrow new Error('useArchbaseAppContext deve ser usado dentro de um ArchbaseAppProvider');\n\t}\n\treturn context;\n};\n\nexport { ArchbaseAppContext, ArchbaseAppProvider, useArchbaseAppContext };\nexport type { ArchbaseAppContextValues };\n","import { ptBR } from 'date-fns/locale';\nimport setDefaultOptions from 'date-fns/setDefaultOptions';\nimport 'dayjs/locale/en';\nimport 'dayjs/locale/es';\nimport 'dayjs/locale/pt-br';\nimport translation from './en/translation.json';\nimport translation_es from './es/translation.json';\nimport translation_ptbr from './pt-BR/translation.json';\n\nsetDefaultOptions({ locale: ptBR });\n\nexport const archbaseTranslationResources = {\n\ten: {\n\t\tarchbase: translation,\n\t},\n\t'pt-BR': {\n\t\tarchbase: translation_ptbr,\n\t},\n\tes: {\n\t\tarchbase: translation_es,\n\t},\n};\n","import { localStorageColorSchemeManager, MantineProvider, MantineThemeOverride } from '@mantine/core';\nimport { DatesProvider } from '@mantine/dates';\nimport { Notifications } from '@mantine/notifications';\nimport { enUS, es, ptBR } from 'date-fns/locale';\nimport setDefaultOptions from 'date-fns/setDefaultOptions';\nimport dayjs from 'dayjs';\nimport i18next, { i18n, ResourceLanguage } from 'i18next';\nimport { Resource, t } from 'i18next';\nimport LanguageDetector from 'i18next-browser-languagedetector';\nimport { Provider as IOCProvider } from 'inversify-react';\nimport React, { Suspense, useLayoutEffect, useState } from 'react';\nimport { initReactI18next } from 'react-i18next';\nimport '../locales/config';\nimport { archbaseTranslationResources } from '../locales/config';\n\ntype ArchbaseThemeOverride = MantineThemeOverride;\n\ninterface ArchbaseTranslationResource {\n\t[language: string]: ResourceLanguage;\n}\n\ninterface ArchbaseAppProviderProps {\n\tchildren?: React.ReactNode;\n\tcolorScheme: 'dark' | 'light';\n\tcontainerIOC: any | undefined;\n\tthemeDark?: ArchbaseThemeOverride;\n\tthemeLight?: ArchbaseThemeOverride;\n\twithCssVariables?: boolean;\n\tnotificationAutoClose?: number;\n\ttranslationName?: string | string[];\n\ttranslationResource?: ArchbaseTranslationResource;\n\tnotificationPosition?: 'top-left' | 'top-right' | 'top-center' | 'bottom-left' | 'bottom-right' | 'bottom-center';\n}\n\nconst buildResources = (resource, translationName, translationResource) => {\n\tconst result = { ...resource };\n\n\tif (translationResource) {\n\t\tconst names = Array.isArray(translationName) ? translationName : [translationName || 'app'];\n\n\t\tObject.keys(translationResource).forEach((language) => {\n\t\t\tif (!result[language]) {\n\t\t\t\tresult[language] = {};\n\t\t\t}\n\n\t\t\tnames.forEach((name) => {\n\t\t\t\t// Verificar se estamos lidando com uma única namespace ou múltiplas\n\t\t\t\tif (Array.isArray(translationName)) {\n\t\t\t\t\t// Caso seja múltiplos namespaces, esperamos que translationResource[language][name] exista\n\t\t\t\t\tif (translationResource[language][name]) {\n\t\t\t\t\t\tresult[language][name] = {\n\t\t\t\t\t\t\t...result[language][name],\n\t\t\t\t\t\t\t...translationResource[language][name],\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Caso seja uma única namespace, adicionamos diretamente a translationResource\n\t\t\t\t\tresult[language][name] = {\n\t\t\t\t\t\t...result[language][name],\n\t\t\t\t\t\t...translationResource[language],\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\treturn result;\n};\n\n// Função para inicialização precoce do i18next (chamada no main.tsx da aplicação)\nexport const initArchbaseI18nEarly = (translationName: string | string[], translationResource: any): void => {\n\tconst namespaces = Array.isArray(translationName) ? ['archbase', ...translationName] : ['archbase', translationName].filter(Boolean);\n\n\t// Inicialização síncrona no main.tsx\n\ti18next\n\t\t.use(initReactI18next)\n\t\t.use(LanguageDetector)\n\t\t.init({\n\t\t\tdebug: false,\n\t\t\tresources: buildResources(archbaseTranslationResources, translationName, translationResource),\n\t\t\tkeySeparator: '.',\n\t\t\tns: namespaces,\n\t\t\tdefaultNS: Array.isArray(translationName) ? translationName[0] : translationName,\n\t\t\tfallbackLng: 'pt-BR',\n\t\t\tdetection: {\n\t\t\t\torder: ['localStorage', 'navigator'],\n\t\t\t\tcaches: ['localStorage'],\n\t\t\t},\n\t\t\treact: {\n\t\t\t\tuseSuspense: false\n\t\t\t}\n\t\t});\n\n\t// Configurar listeners de mudança de idioma\n\ti18next.on('languageChanged', (lng: string) => {\n\t\tif (lng === 'en') {\n\t\t\tsetDefaultOptions({ locale: enUS });\n\t\t\tdayjs.locale('en');\n\t\t} else if (lng === 'es') {\n\t\t\tsetDefaultOptions({ locale: es });\n\t\t\tdayjs.locale('es');\n\t\t} else if (lng === 'pt-BR') {\n\t\t\tsetDefaultOptions({ locale: ptBR });\n\t\t\tdayjs.locale('pt-BR');\n\t\t}\n\t});\n};\n\nexport const initArchbaseTranslation = (translationName, translationResource): Promise<any> => {\n\tconst namespaces = Array.isArray(translationName) ? ['archbase', ...translationName] : ['archbase', translationName].filter(Boolean);\n\n\t// Se já está inicializado, retorna uma promise resolvida\n\tif (i18next.isInitialized) {\n\t\treturn Promise.resolve(i18next);\n\t}\n\n\t// Cria a promise de inicialização\n\treturn i18next\n\t\t.use(initReactI18next)\n\t\t.use(LanguageDetector)\n\t\t.init({\n\t\t\tdebug: false,\n\t\t\tresources: buildResources(archbaseTranslationResources, translationName, translationResource),\n\t\t\tkeySeparator: '.',\n\t\t\tns: namespaces,\n\t\t\tdefaultNS: Array.isArray(translationName) ? translationName[0] : translationName,\n\t\t\tfallbackLng: 'pt-BR',\n\t\t\tdetection: {\n\t\t\t\torder: ['localStorage', 'navigator'],\n\t\t\t\tcaches: ['localStorage'],\n\t\t\t},\n\t\t\treact: {\n\t\t\t\tuseSuspense: false\n\t\t\t}\n\t\t})\n\t\t.then(() => {\n\t\t\ti18next.on('languageChanged', (lng: string) => {\n\t\t\t\tif (lng === 'en') {\n\t\t\t\t\tsetDefaultOptions({ locale: enUS });\n\t\t\t\t\tdayjs.locale('en');\n\t\t\t\t} else if (lng === 'es') {\n\t\t\t\t\tsetDefaultOptions({ locale: es });\n\t\t\t\t\tdayjs.locale('es');\n\t\t\t\t} else if (lng === 'pt-BR') {\n\t\t\t\t\tsetDefaultOptions({ locale: ptBR });\n\t\t\t\t\tdayjs.locale('pt-BR');\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn i18next;\n\t\t});\n};\n\n// Função para obter a instância global do i18next\nexport const getI18nextInstance = () => i18next;\n\n// Variável que aponta para a instância global do i18next\nexport const archbaseI18next = i18next;\n\n// Hook personalizado que sempre usa a instância global do i18next\nexport const useArchbaseTranslation = (namespace?: string) => {\n\tconst i18nextInstance = getI18nextInstance();\n\n\tconst t = (key: string, options?: any) => {\n\t\tif (!i18nextInstance.isInitialized) {\n\t\t\treturn key;\n\t\t}\n\n\t\t// Se um namespace foi especificado, usar ele\n\t\tif (namespace) {\n\t\t\tconst namespacedKey = key.includes(':') ? key : `${namespace}:${key}`;\n\t\t\treturn i18nextInstance.t(namespacedKey, options);\n\t\t}\n\n\t\t// Senão, usar a chave como está (pode ter namespace ou usar o default)\n\t\treturn i18nextInstance.t(key, options);\n\t};\n\n\treturn {\n\t\tt,\n\t\ti18n: i18nextInstance,\n\t\tready: i18nextInstance.isInitialized\n\t};\n};\n\n// Função síncrona para tradução segura (baseada no artigo da Locize)\nexport const syncSafeTranslate = (key: string): string => {\n\ttry {\n\t\t// Verifica se está inicializado e tem recursos\n\t\tif (i18next.isInitialized && typeof i18next.t === 'function') {\n\t\t\tconst translation = t(key);\n\t\t\t// Se a tradução retornar a própria chave, usa fallback\n\t\t\tif (translation === key) {\n\t\t\t\treturn key.split(':')[1] || key;\n\t\t\t}\n\t\t\treturn translation;\n\t\t}\n\n\t\t// Fallback se não estiver inicializado\n\t\treturn key.split(':')[1] || key;\n\t} catch (error) {\n\t\treturn key.split(':')[1] || key;\n\t}\n};\n\nconst colorSchemeManager = localStorageColorSchemeManager({\n\tkey: 'mantine-color-scheme',\n});\n\nfunction ArchbaseGlobalProvider({\n\tchildren,\n\tcolorScheme = 'light',\n\tcontainerIOC,\n\tthemeDark,\n\tthemeLight,\n\twithCssVariables,\n\tnotificationAutoClose = 5000,\n\tnotificationPosition = 'top-right',\n\ttranslationName,\n\ttranslationResource,\n}: ArchbaseAppProviderProps) {\n\tconst [language, setLanguage] = useState(i18next.language);\n\t// Inicialização síncrona: se i18next já está pronto, não precisamos aguardar\n\tconst [isI18nInitialized, setIsI18nInitialized] = useState(i18next.isInitialized);\n\t\n\tuseLayoutEffect(() => {\n\t\tconst initI18n = async () => {\n\t\t\t// Se o i18next já foi inicializado no main.tsx, só configura o state se necessário\n\t\t\tif (i18next.isInitialized) {\n\t\t\t\tsetLanguage(i18next.language);\n\t\t\t\tif (!isI18nInitialized) {\n\t\t\t\t\tsetIsI18nInitialized(true);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Se não foi inicializado no main.tsx, inicializa aqui (fallback)\n\t\t\tif (translationName && translationResource) {\n\t\t\t\ttry {\n\t\t\t\t\tawait initArchbaseTranslation(translationName, translationResource);\n\n\t\t\t\t\t// Verificar se i18next está realmente pronto\n\t\t\t\t\tif (i18next.isInitialized && typeof i18next.t === 'function') {\n\t\t\t\t\t\tsetLanguage(i18next.language);\n\t\t\t\t\t\tsetIsI18nInitialized(true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetIsI18nInitialized(true);\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tsetIsI18nInitialized(true);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Se não há configuração de tradução, considera inicializado\n\t\t\t\tsetIsI18nInitialized(true);\n\t\t\t}\n\t\t};\n\n\t\tinitI18n();\n\n\t\tconst handleLanguageChange = (lng: string) => {\n\t\t\tsetLanguage(lng);\n\t\t};\n\t\ti18next.on('languageChanged', handleLanguageChange);\n\n\t\treturn () => {\n\t\t\ti18next.off('languageChanged', handleLanguageChange);\n\t\t};\n\t}, [translationName, translationResource]);\n\n\t// Aguarda a inicialização do i18next antes de renderizar os componentes\n\tif (!isI18nInitialized) {\n\t\treturn <div>Loading translations...</div>;\n\t}\n\n\treturn (\n\t\t<IOCProvider container={containerIOC}>\n\t\t\t<DatesProvider settings={{ locale: language }}>\n\t\t\t\t<MantineProvider\n\t\t\t\t\ttheme={colorScheme === 'dark' ? themeDark : themeLight}\n\t\t\t\t\twithCssVariables={withCssVariables}\n\t\t\t\t\tcolorSchemeManager={colorSchemeManager}\n\t\t\t\t>\n\t\t\t\t\t<Notifications autoClose={notificationAutoClose} position={notificationPosition} />\n\t\t\t\t\t<Suspense>{children}</Suspense>\n\t\t\t\t</MantineProvider>\n\t\t\t</DatesProvider>\n\t\t</IOCProvider>\n\t);\n}\n\nexport { ArchbaseGlobalProvider };\nexport type { ArchbaseThemeOverride };\n","import { t } from \"i18next\"\n\nexport function processErrorMessage(error: any) {\n let msgErro: any = ''\n if (\n (error && error.response && error.response.status && error.response.status === 401) ||\n (error && error.status && error.status === 401)\n ) {\n return t('archbase:Usuário/senha não encontrados. Não autorizado.')\n }\n if (error.response && error.response.data && error.response.data.apierror) {\n msgErro = error.response.data.apierror.message\n if (error.response.data.apierror.subErrors) {\n msgErro = []\n error.response.data.apierror.subErrors.forEach((element: any) => {\n msgErro.push(`(${element.field}) ${element.message}`)\n })\n }\n } else if (error.response && error.response.status && error.response.status === 404) {\n msgErro = t(\"archbase:recurso_nao_encontrado\")\n } else if (error.response && error.response.status && error.response.status === 405) {\n msgErro = t(\"archbase:metodo_nao_permitido\")\n } else if (error.response && error.response.status && error.response.status === 400) {\n msgErro = `${error.response?.data?.message ?? (error.response?.data && typeof error.response?.data === 'string' ? error.response.data : t(\"archbase:dados_incorretos\"))}`\n } else if (error.response && error.response.status && error.response.status === 500) {\n msgErro = t('archbase:erro_servidor', {\n path: error.response.data.path,\n message: error.response.data.message,\n })\n } else if (error.response && error.response.data) {\n msgErro = error.response.data\n } else if (error.response) {\n msgErro = error.response\n } else if (error.message && error.message === 'Network Error') {\n msgErro = t(\"archbase:servidor_nao_disponivel\")\n } else if (error.message) {\n msgErro = error.message\n } else {\n msgErro = `${error}`\n }\n\n if (typeof msgErro === 'object') {\n if (error && (error.code === 'ERR_NETWORK' || error.message === 'Network Error')) {\n msgErro = t(\"archbase:servidor_nao_disponivel\")\n }\n }\n return `${msgErro}`\n}\n\nexport function processDetailErrorMessage(error: any) {\n let msgErro = ''\n if (error.response && error.response.data && error.response.data.apierror) {\n msgErro = error.response.data.apierror.debugMessage\n }\n return `${msgErro}`\n}\n","export class ArchbaseError extends Error {\n constructor(message) {\n super(message); \n this.name = \"ArchbaseError\"; \n }\n}\n\nexport class ArchbaseServiceError extends Error {\n constructor(message) {\n super(message); \n this.name = \"ArchbaseServiceError\"; \n }\n}\n\nexport class ArchbaseDataSourceError extends Error {\n constructor(message) {\n super(message); \n this.name = \"ArchbaseDataSourceError\"; \n }\n}\n","export class ApiError {\n private _status: number;\n private _timestamp: Date;\n private _message: string;\n private _debugMessage: string;\n private _subErrors: ApiSubError[];\n\n constructor(data: any) {\n this._status = data.status;\n this._timestamp = data.timestamp;\n this._message = data.message;\n this._subErrors = data.subErrors;\n }\n\n public get status(): number {\n return this._status;\n }\n\n public get timestamp(): Date {\n return this._timestamp;\n }\n\n public get debugMessage(): string {\n return this._debugMessage;\n }\n\n public get message(): string {\n return this._message;\n }\n\n public get subErrors(): ApiSubError[] {\n return this._subErrors;\n }\n}\n\nexport abstract class ApiSubError {\n constructor() {}\n}\n\nexport class ApiValidationError extends ApiSubError {\n private _object: string;\n private _field: string;\n private _rejectedValue: any;\n private _message: string;\n\n constructor(data: any) {\n super();\n this._object = data.object;\n this._field = data.field;\n this._rejectedValue = data.rejectedValue;\n this._message = data.message;\n }\n\n public get object(): string {\n return this._object;\n }\n\n public get field(): string {\n return this._field;\n }\n\n public get rejectedValue(): any {\n return this._rejectedValue;\n }\n\n public get message(): string {\n return this._message;\n }\n}\n","/* eslint-disable no-prototype-builtins */\nclass ArchbaseObjectHelper {\n getNestedProperty(object, property) {\n if (object && typeof object === 'object') {\n if (typeof property === 'string' && property !== '') {\n const split = property.split('.')\n return split.reduce((obj, prop) => {\n return obj && obj[prop]\n }, object)\n }\n if (typeof property === 'number') {\n return object[property]\n }\n return object\n }\n return object\n }\n\n hasNestedProperty(object, property, options) {\n options = options || {}\n if (object && typeof object === 'object') {\n if (typeof property === 'string' && property !== '') {\n const split = property.split('.')\n return split.reduce((obj, prop, idx, array) => {\n if (idx === array.length - 1) {\n if (options.own) {\n return !!(obj && obj.hasOwnProperty(prop))\n }\n return !!(obj !== null && typeof obj === 'object' && prop in obj)\n }\n return obj && obj[prop]\n }, object)\n }\n if (typeof property === 'number') {\n return property in object\n }\n return false\n }\n return false\n }\n\n setNestedProperty(object, property, value) {\n if (object && typeof object === 'object') {\n if (typeof property === 'string' && property !== '') {\n const split = property.split('.')\n return split.reduce((obj, prop, idx) => {\n obj[prop] = obj[prop] || {}\n if (split.length === idx + 1) {\n obj[prop] = value\n }\n return obj[prop]\n }, object)\n }\n if (typeof property === 'number') {\n object[property] = value\n return object[property]\n }\n return object\n }\n return object\n }\n\n isInNestedProperty(object, property, objectInPath, options) {\n options = options || {}\n\n if (object && typeof object === 'object') {\n if (typeof property === 'string' && property !== '') {\n const split = property.split('.')\n let isIn = false\n const pathExists = !!split.reduce((obj, prop) => {\n isIn = isIn || obj === objectInPath || (!!obj && obj[prop] === objectInPath)\n return obj && obj[prop]\n }, object)\n\n if (options.validPath) {\n return isIn && pathExists\n }\n return isIn\n }\n return false\n }\n return false\n }\n\n isEmpty(obj) {\n for (const prop in obj) {\n if (obj.hasOwnProperty(prop)) return false\n }\n\n return true\n }\n}\n\nconst instance = new ArchbaseObjectHelper()\nexport { instance as ArchbaseObjectHelper }\n","import React, { ReactNode, useEffect, useRef } from 'react';\n\ninterface ArchbaseClickOutsideProps {\n\tchildren: ReactNode;\n\texceptionRef?: any;\n\tonClick: (event: MouseEvent) => void;\n\tclassName?: string;\n}\n\nexport function ArchbaseClickOutside({ children, exceptionRef, onClick, className }: ArchbaseClickOutsideProps) {\n\tconst wrapperRef = useRef<HTMLDivElement>(null);\n\n\tuseEffect(() => {\n\t\tconst handleClickListener = (event: MouseEvent) => {\n\t\t\tlet clickedInside: boolean;\n\t\t\tif (exceptionRef) {\n\t\t\t\tclickedInside =\n\t\t\t\t\t(wrapperRef.current && wrapperRef.current.contains(event.target as Node)) ||\n\t\t\t\t\texceptionRef.current === event.target ||\n\t\t\t\t\texceptionRef.current.contains(event.target as Node);\n\t\t\t} else {\n\t\t\t\tclickedInside = Boolean(wrapperRef.current && wrapperRef.current.contains(event.target as Node));\n\t\t\t}\n\n\t\t\tif (!clickedInside) {\n\t\t\t\tonClick(event);\n\t\t\t}\n\t\t};\n\n\t\tdocument.addEventListener('mousedown', handleClickListener);\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('mousedown', handleClickListener);\n\t\t};\n\t}, [onClick, exceptionRef]);\n\n\treturn (\n\t\t<div ref={wrapperRef} className={`${className || ''}`}>\n\t\t\t{children}\n\t\t</div>\n\t);\n}\n","import { useMantineTheme, MantineTheme } from '@mantine/core';\n\n/**\n * Hook que retorna o tema atual do Mantine\n * @returns Tema do Mantine\n */\nexport function useArchbaseTheme(): MantineTheme {\n return useMantineTheme();\n}","import * as React from 'react'\n\nconst useArchbaseLatest = <T extends any>(current: T) => {\n const storedValue = React.useRef(current)\n React.useEffect(() => {\n storedValue.current = current\n })\n return storedValue\n}\n\nexport default useArchbaseLatest","import React from 'react'\n\nconst useArchbasePassiveLayoutEffect =\n React[\n typeof document !== 'undefined' && document.createElement !== void 0\n ? 'useLayoutEffect'\n : 'useEffect'\n ]\n\nexport default useArchbasePassiveLayoutEffect","/* eslint-disable no-return-assign */\n/* eslint-disable no-underscore-dangle */\nimport * as React from 'react'\nimport {\n ResizeObserver as Polyfill,\n ResizeObserverEntry,\n} from '@juggle/resize-observer'\nimport useArchbaseLatest from './useArchbaseLatest'\nimport useArchbasePassiveLayoutEffect from './useArchbasePassiveLayoutEffect'\n\nconst ResizeObserver =\n typeof window !== 'undefined' && 'ResizeObserver' in window\n ? // @ts-ignore\n window.ResizeObserver\n : Polyfill\n\n/**\n * A React hook that fires a callback whenever ResizeObserver detects a change to its size\n *\n * @param target A React ref created by `useRef()` or an HTML element\n * @param callback Invoked with a single `ResizeObserverEntry` any time\n * the `target` resizes\n */\nexport function useArchbaseResizeObserver<T extends HTMLElement>(\n target: React.RefObject<T> | T | null,\n callback: UseResizeObserverCallback\n): Polyfill {\n const resizeObserver = getResizeObserver()\n const storedCallback = useArchbaseLatest(callback)\n\n useArchbasePassiveLayoutEffect(() => {\n let didUnsubscribe = false\n const targetEl = target && 'current' in target ? target.current : target\n if (!targetEl) return () => {}\n\n function cb(entry: ResizeObserverEntry, observer: Polyfill) {\n if (didUnsubscribe) return\n storedCallback.current(entry, observer)\n }\n\n resizeObserver.subscribe(targetEl as HTMLElement, cb)\n\n return () => {\n didUnsubscribe = true\n resizeObserver.unsubscribe(targetEl as HTMLElement, cb)\n }\n }, [target, resizeObserver, storedCallback])\n\n return resizeObserver.observer\n}\n\nfunction createResizeObserver() {\n let ticking = false\n let allEntries: ResizeObserverEntry[] = []\n\n const callbacks: Map<any, Array<UseResizeObserverCallback>> = new Map()\n\n const observer = new ResizeObserver(\n (entries: ResizeObserverEntry[], obs: Polyfill) => {\n allEntries = allEntries.concat(entries)\n if (!ticking) {\n window.requestAnimationFrame(() => {\n const triggered = new Set<Element>()\n for (let i = 0; i < allEntries.length; i++) {\n if (triggered.has(allEntries[i].target)) continue\n triggered.add(allEntries[i].target)\n const cbs = callbacks.get(allEntries[i].target)\n cbs?.forEach((cb) => cb(allEntries[i], obs))\n }\n allEntries = []\n ticking = false\n })\n }\n ticking = true\n }\n )\n\n return {\n observer,\n subscribe(target: HTMLElement, callback: UseResizeObserverCallback) {\n observer.observe(target)\n const cbs = callbacks.get(target) ?? []\n cbs.push(callback)\n callbacks.set(target, cbs)\n },\n unsubscribe(target: HTMLElement, callback: UseResizeObserverCallback) {\n const cbs = callbacks.get(target) ?? []\n if (cbs.length === 1) {\n observer.unobserve(target)\n callbacks.delete(target)\n return\n }\n const cbIndex = cbs.indexOf(callback)\n if (cbIndex !== -1) cbs.splice(cbIndex, 1)\n callbacks.set(target, cbs)\n },\n }\n}\n\nlet _resizeObserver: ReturnType<typeof createResizeObserver>\n\nconst getResizeObserver = () =>\n !_resizeObserver\n ? (_resizeObserver = createResizeObserver())\n : _resizeObserver\n\nexport type UseResizeObserverCallback = (\n entry: ResizeObserverEntry,\n observer: Polyfill\n) => any\n\n","import * as React from 'react'\nimport { useArchbaseResizeObserver } from './useArchbaseResizeObserver'\nimport useArchbasePassiveLayoutEffect from './useArchbasePassiveLayoutEffect'\n\n\n/**\n * Um hook React para medir o tamanho dos elementos HTML, incluindo quando eles mudam\n *\n * @param target Uma referência React criada por `useRef()` ou um elemento HTML\n * @param options Configura a largura inicial e a altura inicial do estado do gancho\n */\nexport const useArchbaseSize = <T extends HTMLElement>(\n target: React.RefObject<T | null> | T | null,\n options?: UseSizeOptions\n): [number, number] => {\n const [size, setSize] = React.useState<[number, number]>(() => {\n const targetEl = target && 'current' in target ? target.current : target;\n return targetEl\n ? [(targetEl as HTMLElement).offsetWidth, (targetEl as HTMLElement).offsetHeight]\n : [options?.initialWidth ?? 0, options?.initialHeight ?? 0];\n });\n\n useArchbasePassiveLayoutEffect(() => {\n const targetEl = target && 'current' in target ? target.current : target;\n if (!targetEl) return;\n setSize([(targetEl as HTMLElement).offsetWidth, (targetEl as HTMLElement).offsetHeight]);\n }, [target]);\n\n // Onde a mágica acontece\n useArchbaseResizeObserver(target, (entry) => {\n // Use asserção de tipo para informar ao TypeScript que o destino é um HTMLElement\n const target = entry.target as HTMLElement;\n setSize([target.offsetWidth, target.offsetHeight]);\n });\n\n return size;\n};\n\n\nexport interface UseSizeOptions {\n // The initial width to set into state.\n // This is useful for SSR environments.\n initialWidth: number\n // The initial height to set into state.\n // This is useful for SSR environments.\n initialHeight: number\n}\n","import { useState, useCallback } from 'react';\n\n/**\n * Hook para gerenciar estado booleano com funções helper\n * @param initialValue Valor inicial (padrão: false)\n * @returns [valor, setTrue, setFalse, toggle]\n */\nexport function useArchbaseBool(initialValue: boolean = false) {\n const [value, setValue] = useState(initialValue);\n \n const setTrue = useCallback(() => setValue(true), []);\n const setFalse = useCallback(() => setValue(false), []);\n const toggle = useCallback(() => setValue(prev => !prev), []);\n \n return [value, setTrue, setFalse, toggle] as const;\n}","import { useState, useEffect } from 'react';\n\nexport function useArchbasePasswordRemember() {\n const [rememberMe, setRememberMe] = useState(false);\n const [username, setUsername] = useState('');\n const [password, setPassword] = useState('');\n\n useEffect(() => {\n const savedUsername = localStorage.getItem('archbase-username');\n const savedPassword = localStorage.getItem('archbase-password');\n const savedRemember = localStorage.getItem('archbase-remember-me') === 'true';\n\n if (savedRemember && savedUsername) {\n setUsername(savedUsername);\n setPassword(savedPassword || '');\n setRememberMe(true);\n }\n }, []);\n\n const saveCredentials = (user: string, pass: string, remember: boolean) => {\n if (remember) {\n localStorage.setItem('archbase-username', user);\n localStorage.setItem('archbase-password', pass);\n localStorage.setItem('archbase-remember-me', 'true');\n } else {\n localStorage.removeItem('archbase-username');\n localStorage.removeItem('archbase-password');\n localStorage.removeItem('archbase-remember-me');\n }\n };\n\n const clearCredentials = () => {\n localStorage.removeItem('archbase-username');\n localStorage.removeItem('archbase-password');\n localStorage.removeItem('archbase-remember-me');\n setUsername('');\n setPassword('');\n setRememberMe(false);\n };\n\n const clearRememberMe = () => {\n localStorage.removeItem('archbase-username');\n localStorage.removeItem('archbase-password');\n localStorage.removeItem('archbase-remember-me');\n setRememberMe(false);\n };\n\n\n return {\n rememberMe,\n clearRememberMe,\n username,\n password,\n setRememberMe,\n setUsername,\n setPassword,\n saveCredentials,\n clearCredentials\n };\n}","import { ValidationMetadataArgs } from './ValidationMetadataArgs';\nimport { ValidationArguments } from '../validation/ValidationArguments';\n\n/**\n * This metadata contains validation rules.\n */\nexport class ValidationMetadata {\n // -------------------------------------------------------------------------\n // Properties\n // -------------------------------------------------------------------------\n\n /**\n * Validation type.\n */\n type: string;\n\n /**\n * Validator name.\n */\n name?: string;\n\n /**\n * Target class to which this validation is applied.\n */\n target: Function | string;\n\n /**\n * Property of the object to be validated.\n */\n propertyName: string;\n\n /**\n * Constraint class that performs validation. Used only for custom validations.\n */\n constraintCls?: Function;\n\n /**\n * Array of constraints of this validation.\n */\n constraints?: any[];\n\n /**\n * Validation message to be shown in the case of error.\n */\n message?: string | ((args: ValidationArguments) => string);\n\n /**\n * Validation groups used for this validation.\n */\n groups?: string[] = [];\n\n /**\n * Indicates if validation must be performed always, no matter of validation groups used.\n */\n always?: boolean;\n\n /**\n * Specifies if validated value is an array and each of its item must be validated.\n */\n each?: boolean = false;\n\n /*\n * A transient set of data passed through to the validation result for response mapping\n */\n context?: any = undefined;\n\n /**\n * Extra options specific to validation type.\n */\n validationTypeOptions: any;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(args: ValidationMetadataArgs) {\n this.type = args.type;\n this.name = args.name;\n this.target = args.target;\n this.propertyName = args.propertyName;\n this.constraints = args?.constraints;\n this.constraintCls = args.constraintCls;\n this.validationTypeOptions = args.validationTypeOptions;\n if (args.validationOptions) {\n this.message = args.validationOptions.message;\n this.groups = args.validationOptions.groups;\n this.always = args.validationOptions.always;\n this.each = args.validationOptions.each;\n this.context = args.validationOptions.context;\n }\n }\n}\n","import { ValidationSchema } from './ValidationSchema';\nimport { ValidationMetadata } from '../metadata/ValidationMetadata';\nimport { ValidationMetadataArgs } from '../metadata/ValidationMetadataArgs';\nimport { ValidationOptions } from '../decorator/ValidationOptions';\n\n/**\n * Used to transform validation schemas to validation metadatas.\n */\nexport class ValidationSchemaToMetadataTransformer {\n transform(schema: ValidationSchema): ValidationMetadata[] {\n const metadatas: ValidationMetadata[] = [];\n Object.keys(schema.properties).forEach(property => {\n schema.properties[property].forEach(validation => {\n const validationOptions: ValidationOptions = {\n message: validation.message,\n groups: validation.groups,\n always: validation.always,\n each: validation.each,\n };\n const args: ValidationMetadataArgs = {\n type: validation.type,\n name: validation.name,\n target: schema.name,\n propertyName: property,\n constraints: validation.constraints,\n validationTypeOptions: validation.options,\n validationOptions: validationOptions,\n };\n metadatas.push(new ValidationMetadata(args));\n });\n });\n return metadatas;\n }\n}\n","/**\n * Convert Map, Set to Array\n */\nexport function convertToArray<T>(val: Array<T> | Set<T> | Map<any, T>): Array<T> {\n if (val instanceof Map) {\n return Array.from(val.values());\n }\n return Array.isArray(val) ? val : Array.from(val);\n}\n","/**\n * This function returns the global object across Node and browsers.\n *\n * Note: `globalThis` is the standardized approach however it has been added to\n * Node.js in version 12. We need to include this snippet until Node 12 EOL.\n */\nexport function getGlobal() {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n\n if (typeof global !== 'undefined') {\n return global;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Cannot find name 'window'.\n if (typeof window !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Cannot find name 'window'.\n return window;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Cannot find name 'self'.\n if (typeof self !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Cannot find name 'self'.\n return self;\n }\n}\n","// https://github.com/TylorS/typed-is-promise/blob/abf1514e1b6961adfc75765476b0debb96b2c3ae/src/index.ts\n\nexport function isPromise<T = any>(p: any): p is Promise<T> {\n return p !== null && typeof p === 'object' && typeof p.then === 'function';\n}\n","import { ValidationMetadata } from './ValidationMetadata';\nimport { ConstraintMetadata } from './ConstraintMetadata';\nimport { ValidationSchema } from '../validation-schema/ValidationSchema';\nimport { ValidationSchemaToMetadataTransformer } from '../validation-schema/ValidationSchemaToMetadataTransformer';\nimport { getGlobal } from '../utils';\n\n/**\n * Storage all metadatas.\n */\nexport class MetadataStorage {\n // -------------------------------------------------------------------------\n // Private properties\n // -------------------------------------------------------------------------\n\n private validationMetadatas: Map<any, ValidationMetadata[]> = new Map();\n private constraintMetadatas: Map<any, ConstraintMetadata[]> = new Map();\n\n get hasValidationMetaData(): boolean {\n return !!this.validationMetadatas.size;\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Adds a new validation metadata.\n */\n addValidationSchema(schema: ValidationSchema): void {\n const validationMetadatas = new ValidationSchemaToMetadataTransformer().transform(schema);\n validationMetadatas.forEach(validationMetadata => this.addValidationMetadata(validationMetadata));\n }\n\n /**\n * Adds a new validation metadata.\n */\n addValidationMetadata(metadata: ValidationMetadata): void {\n const existingMetadata = this.validationMetadatas.get(metadata.target);\n\n if (existingMetadata) {\n existingMetadata.push(metadata);\n } else {\n this.validationMetadatas.set(metadata.target, [metadata]);\n }\n }\n\n /**\n * Adds a new constraint metadata.\n */\n addConstraintMetadata(metadata: ConstraintMetadata): void {\n const existingMetadata = this.constraintMetadatas.get(metadata.target);\n\n if (existingMetadata) {\n existingMetadata.push(metadata);\n } else {\n this.constraintMetadatas.set(metadata.target, [metadata]);\n }\n }\n\n /**\n * Groups metadata by their property names.\n */\n groupByPropertyName(metadata: ValidationMetadata[]): { [propertyName: string]: ValidationMetadata[] } {\n const grouped: { [propertyName: string]: ValidationMetadata[] } = {};\n metadata.forEach(metadata => {\n if (!grouped[metadata.propertyName]) grouped[metadata.propertyName] = [];\n grouped[metadata.propertyName].push(metadata);\n });\n return grouped;\n }\n\n /**\n * Gets all validation metadatas for the given object with the given groups.\n */\n getTargetValidationMetadatas(\n targetConstructor: Function,\n targetSchema: string,\n always: boolean,\n strictGroups: boolean,\n groups?: string[]\n ): ValidationMetadata[] {\n const includeMetadataBecauseOfAlwaysOption = (metadata: ValidationMetadata): boolean => {\n // `metadata.always` overrides global default.\n if (typeof metadata.always !== 'undefined') return metadata.always;\n\n // `metadata.groups` overrides global default.\n if (metadata.groups && metadata.groups.length) return false;\n\n // Use global default.\n return always;\n };\n\n const excludeMetadataBecauseOfStrictGroupsOption = (metadata: ValidationMetadata): boolean => {\n if (strictGroups) {\n // Validation is not using groups.\n if (!groups || !groups.length) {\n // `metadata.groups` has at least one group.\n if (metadata.groups && metadata.groups.length) return true;\n }\n }\n\n return false;\n };\n\n // get directly related to a target metadatas\n const filteredForOriginalMetadatasSearch = this.validationMetadatas.get(targetConstructor) || [];\n const originalMetadatas = filteredForOriginalMetadatasSearch.filter(metadata => {\n if (metadata.target !== targetConstructor && metadata.target !== targetSchema) return false;\n if (includeMetadataBecauseOfAlwaysOption(metadata)) return true;\n if (excludeMetadataBecauseOfStrictGroupsOption(metadata)) return false;\n if (groups && groups.length > 0)\n return metadata.groups && !!metadata.groups.find(group => groups.indexOf(group) !== -1);\n\n return true;\n });\n\n // get metadatas for inherited classes\n const filteredForInheritedMetadatasSearch = [];\n for (const [key, value] of this.validationMetadatas.entries()) {\n if (targetConstructor.prototype instanceof key) {\n filteredForInheritedMetadatasSearch.push(...value);\n }\n }\n const inheritedMetadatas = filteredForInheritedMetadatasSearch.filter(metadata => {\n // if target is a string it's means we validate against a schema, and there is no inheritance support for schemas\n if (typeof metadata.target === 'string') return false;\n if (metadata.target === targetConstructor) return false;\n if (metadata.target instanceof Function && !(targetConstructor.prototype instanceof metadata.target))\n return false;\n if (includeMetadataBecauseOfAlwaysOption(metadata)) return true;\n if (excludeMetadataBecauseOfStrictGroupsOption(metadata)) return false;\n if (groups && groups.length > 0)\n return metadata.groups && !!metadata.groups.find(group => groups.indexOf(group) !== -1);\n\n return true;\n });\n\n // filter out duplicate metadatas, prefer original metadatas instead of inherited metadatas\n const uniqueInheritedMetadatas = inheritedMetadatas.filter(inheritedMetadata => {\n return !originalMetadatas.find(originalMetadata => {\n return (\n originalMetadata.propertyName === inheritedMetadata.propertyName &&\n originalMetadata.type === inheritedMetadata.type\n );\n });\n });\n\n return originalMetadatas.concat(uniqueInheritedMetadatas);\n }\n\n /**\n * Gets all validator constraints for the given object.\n */\n getTargetValidatorConstraints(target: Function): ConstraintMetadata[] {\n return this.constraintMetadatas.get(target) || [];\n }\n}\n\n/**\n * Gets metadata storage.\n * Metadata storage follows the best practices and stores metadata in a global variable.\n */\nexport function getMetadataStorage(): MetadataStorage {\n const global = getGlobal();\n\n if (!global.classValidatorMetadataStorage) {\n global.classValidatorMetadataStorage = new MetadataStorage();\n }\n\n return global.classValidatorMetadataStorage;\n}\n","/**\n * Validation error description.\n */\nexport class ValidationError {\n /**\n * Object that was validated.\n *\n * OPTIONAL - configurable via the ValidatorOptions.validationError.target option\n */\n target?: object;\n\n /**\n * Object's property that haven't pass validation.\n */\n property: string;\n\n /**\n * Value that haven't pass a validation.\n *\n * OPTIONAL - configurable via the ValidatorOptions.validationError.value option\n */\n value?: any;\n\n /**\n * Constraints that failed validation with error messages.\n */\n constraints?: {\n [type: string]: string;\n };\n\n /**\n * Contains all nested validation errors of the property.\n */\n children?: ValidationError[];\n\n /*\n * A transient set of data passed through to the validation result for response mapping\n */\n contexts?: {\n [type: string]: any;\n };\n\n /**\n *\n * @param shouldDecorate decorate the message with ANSI formatter escape codes for better readability\n * @param hasParent true when the error is a child of an another one\n * @param parentPath path as string to the parent of this property\n * @param showConstraintMessages show constraint messages instead of constraint names\n */\n toString(\n shouldDecorate: boolean = false,\n hasParent: boolean = false,\n parentPath: string = ``,\n showConstraintMessages: boolean = false\n ): string {\n const boldStart = shouldDecorate ? `\\x1b[1m` : ``;\n const boldEnd = shouldDecorate ? `\\x1b[22m` : ``;\n const constraintsToString = () =>\n (showConstraintMessages ? Object.values : Object.keys)(this.constraints ?? {}).join(`, `);\n const propConstraintFailed = (propertyName: string): string =>\n ` - property ${boldStart}${parentPath}${propertyName}${boldEnd} has failed the following constraints: ${boldStart}${constraintsToString()}${boldEnd} \\n`;\n\n if (!hasParent) {\n return (\n `An instance of ${boldStart}${\n this.target ? this.target.constructor.name : 'an object'\n }${boldEnd} has failed the validation:\\n` +\n (this.constraints ? propConstraintFailed(this.property) : ``) +\n (this.children\n ? this.children\n .map(childError => childError.toString(shouldDecorate, true, this.property, showConstraintMessages))\n .join(``)\n : ``)\n );\n } else {\n // we format numbers as array indexes for better readability.\n const formattedProperty = Number.isInteger(+this.property)\n ? `[${this.property}]`\n : `${parentPath ? `.` : ``}${this.property}`;\n\n if (this.constraints) {\n return propConstraintFailed(formattedProperty);\n } else {\n return this.children\n ? this.children\n .map(childError =>\n childError.toString(shouldDecorate, true, `${parentPath}${formattedProperty}`, showConstraintMessages)\n )\n .join(``)\n : ``;\n }\n }\n }\n}\n","/**\n * Validation types.\n */\nexport class ValidationTypes {\n /* system */\n static CUSTOM_VALIDATION = 'customValidation'; // done\n static NESTED_VALIDATION = 'nestedValidation'; // done\n static PROMISE_VALIDATION = 'promiseValidation'; // done\n static CONDITIONAL_VALIDATION = 'conditionalValidation'; // done\n static WHITELIST = 'whitelistValidation'; // done\n static IS_DEFINED = 'isDefined'; // done\n\n /**\n * Checks if validation type is valid.\n */\n static isValid(type: string): boolean {\n return (\n type !== 'isValid' &&\n type !== 'getMessage' &&\n Object.keys(this)\n .map(key => (this as any)[key])\n .indexOf(type) !== -1\n );\n }\n}\n","import { ValidationArguments } from './ValidationArguments';\n\n/**\n * Convert the constraint to a string to be shown in an error\n */\nexport function constraintToString(constraint: unknown): string {\n if (Array.isArray(constraint)) {\n return constraint.join(', ');\n }\n\n if (typeof constraint === 'symbol') {\n constraint = constraint.description;\n }\n\n return `${constraint}`;\n}\n\nexport class ValidationUtils {\n static replaceMessageSpecialTokens(\n message: string | ((args: ValidationArguments) => string),\n validationArguments: ValidationArguments\n ): string {\n let messageString: string;\n if (message instanceof Function) {\n messageString = (message as (args: ValidationArguments) => string)(validationArguments);\n } else if (typeof message === 'string') {\n messageString = message;\n }\n\n if (messageString && Array.isArray(validationArguments.constraints)) {\n validationArguments.constraints.forEach((constraint, index) => {\n messageString = messageString.replace(\n new RegExp(`\\\\$constraint${index + 1}`, 'g'),\n constraintToString(constraint)\n );\n });\n }\n\n if (\n messageString &&\n validationArguments.value !== undefined &&\n validationArguments.value !== null &&\n ['string', 'boolean', 'number'].includes(typeof validationArguments.value)\n )\n messageString = messageString.replace(/\\$value/g, validationArguments.value);\n if (messageString) messageString = messageString.replace(/\\$property/g, validationArguments.property);\n if (messageString) messageString = messageString.replace(/\\$target/g, validationArguments.targetName);\n\n return messageString;\n }\n}\n","import { Validator } from './Validator';\nimport { ValidationError } from './ValidationError';\nimport { ValidationMetadata } from '../metadata/ValidationMetadata';\nimport { ValidatorOptions } from './ValidatorOptions';\nimport { ValidationTypes } from './ValidationTypes';\nimport { ConstraintMetadata } from '../metadata/ConstraintMetadata';\nimport { ValidationArguments } from './ValidationArguments';\nimport { ValidationUtils } from './ValidationUtils';\nimport { isPromise, convertToArray } from '../utils';\nimport { getMetadataStorage } from '../metadata/MetadataStorage';\n\n/**\n * Executes validation over given object.\n */\nexport class ValidationExecutor {\n // -------------------------------------------------------------------------\n // Properties\n // -------------------------------------------------------------------------\n\n awaitingPromises: Promise<any>[] = [];\n ignoreAsyncValidations: boolean = false;\n\n // -------------------------------------------------------------------------\n // Private Properties\n // -------------------------------------------------------------------------\n\n private metadataStorage = getMetadataStorage();\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(private validator: Validator, private validatorOptions?: ValidatorOptions) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n execute(object: object, targetSchema: string, validationErrors: ValidationError[]): void {\n /**\n * If there is no metadata registered it means possibly the dependencies are not flatterned and\n * more than one instance is used.\n *\n * TODO: This needs proper handling, forcing to use the same container or some other proper solution.\n */\n if (!this.metadataStorage.hasValidationMetaData && this.validatorOptions?.enableDebugMessages === true) {\n console.warn(\n `No validation metadata found. No validation will be performed. There are multiple possible reasons:\\n` +\n ` - There may be multiple class-validator versions installed. You will need to flatten your dependencies to fix the issue.\\n` +\n ` - This validation runs before any file with validation decorator was parsed by NodeJS.`\n );\n }\n\n const groups = this.validatorOptions ? this.validatorOptions.groups : undefined;\n const strictGroups = (this.validatorOptions && this.validatorOptions.strictGroups) || false;\n const always = (this.validatorOptions && this.validatorOptions.always) || false;\n /** Forbid unknown values are turned on by default and any other value than false will enable it. */\n const forbidUnknownValues =\n this.validatorOptions?.forbidUnknownValues === undefined || this.validatorOptions.forbidUnknownValues !== false;\n\n const targetMetadatas = this.metadataStorage.getTargetValidationMetadatas(\n object.constructor,\n targetSchema,\n always,\n strictGroups,\n groups\n );\n const groupedMetadatas = this.metadataStorage.groupByPropertyName(targetMetadatas);\n\n if (this.validatorOptions && forbidUnknownValues && !targetMetadatas.length) {\n const validationError = new ValidationError();\n\n if (\n !this.validatorOptions ||\n !this.validatorOptions.validationError ||\n this.validatorOptions.validationError.target === undefined ||\n this.validatorOptions.validationError.target === true\n )\n validationError.target = object;\n\n validationError.value = undefined;\n validationError.property = undefined;\n validationError.children = [];\n validationError.constraints = { unknownValue: 'an unknown value was passed to the validate function' };\n\n validationErrors.push(validationError);\n\n return;\n }\n\n if (this.validatorOptions && this.validatorOptions.whitelist)\n this.whitelist(object, groupedMetadatas, validationErrors);\n\n // General validation\n Object.keys(groupedMetadatas).forEach(propertyName => {\n const value = (object as any)[propertyName];\n const definedMetadatas = groupedMetadatas[propertyName].filter(\n metadata => metadata.type === ValidationTypes.IS_DEFINED\n );\n const metadatas = groupedMetadatas[propertyName].filter(\n metadata => metadata.type !== ValidationTypes.IS_DEFINED && metadata.type !== ValidationTypes.WHITELIST\n );\n\n if (\n value instanceof Promise &&\n metadatas.find(metadata => metadata.type === ValidationTypes.PROMISE_VALIDATION)\n ) {\n this.awaitingPromises.push(\n value.then(resolvedValue => {\n this.performValidations(object, resolvedValue, propertyName, definedMetadatas, metadatas, validationErrors);\n })\n );\n } else {\n this.performValidations(object, value, propertyName, definedMetadatas, metadatas, validationErrors);\n }\n });\n }\n\n whitelist(\n object: any,\n groupedMetadatas: { [propertyName: string]: ValidationMetadata[] },\n validationErrors: ValidationError[]\n ): void {\n const notAllowedProperties: string[] = [];\n\n Object.keys(object).forEach(propertyName => {\n // does this property have no metadata?\n if (!groupedMetadatas[propertyName] || groupedMetadatas[propertyName].length === 0)\n notAllowedProperties.push(propertyName);\n });\n\n if (notAllowedProperties.length > 0) {\n if (this.validatorOptions && this.validatorOptions.forbidNonWhitelisted) {\n // throw errors\n notAllowedProperties.forEach(property => {\n const validationError: ValidationError = this.generateValidationError(object, object[property], property);\n validationError.constraints = { [ValidationTypes.WHITELIST]: `property ${property} should not exist` };\n validationError.children = undefined;\n validationErrors.push(validationError);\n });\n } else {\n // strip non allowed properties\n notAllowedProperties.forEach(property => delete object[property]);\n }\n }\n }\n\n stripEmptyErrors(errors: ValidationError[]): ValidationError[] {\n return errors.filter(error => {\n if (error.children) {\n error.children = this.stripEmptyErrors(error.children);\n }\n\n if (Object.keys(error.constraints).length === 0) {\n if (error.children.length === 0) {\n return false;\n } else {\n delete error.constraints;\n }\n }\n\n return true;\n });\n }\n\n // -------------------------------------------------------------------------\n // Private Methods\n // -------------------------------------------------------------------------\n\n private performValidations(\n object: any,\n value: any,\n propertyName: string,\n definedMetadatas: ValidationMetadata[],\n metadatas: ValidationMetadata[],\n validationErrors: ValidationError[]\n ): void {\n const customValidationMetadatas = metadatas.filter(metadata => metadata.type === ValidationTypes.CUSTOM_VALIDATION);\n const nestedValidationMetadatas = metadatas.filter(metadata => metadata.type === ValidationTypes.NESTED_VALIDATION);\n const conditionalValidationMetadatas = metadatas.filter(\n metadata => metadata.type === ValidationTypes.CONDITIONAL_VALIDATION\n );\n\n const validationError = this.generateValidationError(object, value, propertyName);\n validationErrors.push(validationError);\n\n const canValidate = this.conditionalValidations(object, value, conditionalValidationMetadatas);\n if (!canValidate) {\n return;\n }\n\n // handle IS_DEFINED validation type the special way - it should work no matter skipUndefinedProperties/skipMissingProperties is set or not\n this.customValidations(object, value, definedMetadatas, validationError);\n this.mapContexts(object, value, definedMetadatas, validationError);\n\n if (value === undefined && this.validatorOptions && this.validatorOptions.skipUndefinedProperties === true) {\n return;\n }\n\n if (value === null && this.validatorOptions && this.validatorOptions.skipNullProperties === true) {\n return;\n }\n\n if (\n (value === null || value === undefined) &&\n this.validatorOptions &&\n this.validatorOptions.skipMissingProperties === true\n ) {\n return;\n }\n\n this.customValidations(object, value, customValidationMetadatas, validationError);\n this.nestedValidations(value, nestedValidationMetadatas, validationError);\n\n this.mapContexts(object, value, metadatas, validationError);\n this.mapContexts(object, value, customValidationMetadatas, validationError);\n }\n\n private generateValidationError(object: object, value: any, propertyName: string): ValidationError {\n const validationError = new ValidationError();\n\n if (\n !this.validatorOptions ||\n !this.validatorOptions.validationError ||\n this.validatorOptions.validationError.target === undefined ||\n this.validatorOptions.validationError.target === true\n )\n validationError.target = object;\n\n if (\n !this.validatorOptions ||\n !this.validatorOptions.validationError ||\n this.validatorOptions.validationError.value === undefined ||\n this.validatorOptions.validationError.value === true\n )\n validationError.value = value;\n\n validationError.property = propertyName;\n validationError.children = [];\n validationError.constraints = {};\n\n return validationError;\n }\n\n private conditionalValidations(object: object, value: any, metadatas: ValidationMetadata[]): ValidationMetadata[] {\n return metadatas\n .map(metadata => metadata.constraints[0](object, value))\n .reduce((resultA, resultB) => resultA && resultB, true);\n }\n\n private customValidations(object: object, value: any, metadatas: ValidationMetadata[], error: ValidationError): void {\n metadatas.forEach(metadata => {\n this.metadataStorage.getTargetValidatorConstraints(metadata.constraintCls).forEach(customConstraintMetadata => {\n if (customConstraintMetadata.async && this.ignoreAsyncValidations) return;\n if (\n this.validatorOptions &&\n this.validatorOptions.stopAtFirstError &&\n Object.keys(error.constraints || {}).length > 0\n )\n return;\n\n const validationArguments: ValidationArguments = {\n targetName: object.constructor ? (object.constructor as any).name : undefined,\n property: metadata.propertyName,\n object: object,\n value: value,\n constraints: metadata.constraints,\n };\n\n if (!metadata.each || !(Array.isArray(value) || value instanceof Set || value instanceof Map)) {\n const validatedValue = customConstraintMetadata.instance.validate(value, validationArguments);\n if (isPromise(validatedValue)) {\n const promise = validatedValue.then(isValid => {\n if (!isValid) {\n const [type, message] = this.createValidationError(object, value, metadata, customConstraintMetadata);\n error.constraints[type] = message;\n if (metadata.context) {\n if (!error.contexts) {\n error.contexts = {};\n }\n error.contexts[type] = Object.assign(error.contexts[type] || {}, metadata.context);\n }\n }\n });\n this.awaitingPromises.push(promise);\n } else {\n if (!validatedValue) {\n const [type, message] = this.createValidationError(object, value, metadata, customConstraintMetadata);\n error.constraints[type] = message;\n }\n }\n\n return;\n }\n\n // convert set and map into array\n const arrayValue = convertToArray(value);\n // Validation needs to be applied to each array item\n const validatedSubValues = arrayValue.map((subValue: any) =>\n customConstraintMetadata.instance.validate(subValue, validationArguments)\n );\n const validationIsAsync = validatedSubValues.some((validatedSubValue: boolean | Promise<boolean>) =>\n isPromise(validatedSubValue)\n );\n\n if (validationIsAsync) {\n // Wrap plain values (if any) in promises, so that all are async\n const asyncValidatedSubValues = validatedSubValues.map((validatedSubValue: boolean | Promise<boolean>) =>\n isPromise(validatedSubValue) ? validatedSubValue : Promise.resolve(validatedSubValue)\n );\n const asyncValidationIsFinishedPromise = Promise.all(asyncValidatedSubValues).then(\n (flatValidatedValues: boolean[]) => {\n const validationResult = flatValidatedValues.every((isValid: boolean) => isValid);\n if (!validationResult) {\n const [type, message] = this.createValidationError(object, value, metadata, customConstraintMetadata);\n error.constraints[type] = message;\n if (metadata.context) {\n if (!error.contexts) {\n error.contexts = {};\n }\n error.contexts[type] = Object.assign(error.contexts[type] || {}, metadata.context);\n }\n }\n }\n );\n\n this.awaitingPromises.push(asyncValidationIsFinishedPromise);\n\n return;\n }\n // @ts-ignore\n const validationResult = validatedSubValues.every((isValid: boolean) => isValid);\n if (!validationResult) {\n const [type, message] = this.createValidationError(object, value, metadata, customConstraintMetadata);\n error.constraints[type] = message;\n }\n });\n });\n }\n\n private nestedValidations(value: any, metadatas: ValidationMetadata[], error: ValidationError): void {\n if (value === void 0) {\n return;\n }\n\n metadatas.forEach(metadata => {\n if (metadata.type !== ValidationTypes.NESTED_VALIDATION && metadata.type !== ValidationTypes.PROMISE_VALIDATION) {\n return;\n } else if (\n this.validatorOptions &&\n this.validatorOptions.stopAtFirstError &&\n Object.keys(error.constraints || {}).length > 0\n ) {\n return;\n }\n\n if (Array.isArray(value) || value instanceof Set || value instanceof Map) {\n // Treats Set as an array - as index of Set value is value itself and it is common case to have Object as value\n const arrayLikeValue = value instanceof Set ? Array.from(value) : value;\n arrayLikeValue.forEach((subValue: any, index: any) => {\n this.performValidations(value, subValue, index.toString(), [], metadatas, error.children);\n });\n } else if (value instanceof Object) {\n const targetSchema = typeof metadata.target === 'string' ? metadata.target : metadata.target.name;\n this.execute(value, targetSchema, error.children);\n } else {\n const [type, message] = this.createValidationError(metadata.target as object, value, metadata);\n error.constraints[type] = message;\n }\n });\n }\n\n private mapContexts(object: object, value: any, metadatas: ValidationMetadata[], error: ValidationError): void {\n return metadatas.forEach(metadata => {\n if (metadata.context) {\n let customConstraint;\n if (metadata.type === ValidationTypes.CUSTOM_VALIDATION) {\n const customConstraints = this.metadataStorage.getTargetValidatorConstraints(metadata.constraintCls);\n customConstraint = customConstraints[0];\n }\n\n const type = this.getConstraintType(metadata, customConstraint);\n\n if (error.constraints[type]) {\n if (!error.contexts) {\n error.contexts = {};\n }\n\n error.contexts[type] = Object.assign(error.contexts[type] || {}, metadata.context);\n }\n }\n });\n }\n\n private createValidationError(\n object: object,\n value: any,\n metadata: ValidationMetadata,\n customValidatorMetadata?: ConstraintMetadata\n ): [string, string] {\n const targetName = object.constructor ? (object.constructor as any).name : undefined;\n const type = this.getConstraintType(metadata, customValidatorMetadata);\n const validationArguments: ValidationArguments = {\n targetName: targetName,\n property: metadata.propertyName,\n object: object,\n value: value,\n constraints: metadata.constraints,\n };\n\n let message = metadata.message || '';\n if (\n !metadata.message &&\n (!this.validatorOptions || (this.validatorOptions && !this.validatorOptions.dismissDefaultMessages))\n ) {\n if (customValidatorMetadata && customValidatorMetadata.instance.defaultMessage instanceof Function) {\n message = customValidatorMetadata.instance.defaultMessage(validationArguments);\n }\n }\n\n const messageString = ValidationUtils.replaceMessageSpecialTokens(message, validationArguments);\n return [type, messageString];\n }\n\n private getConstraintType(metadata: ValidationMetadata, customValidatorMetadata?: ConstraintMetadata): string {\n const type = customValidatorMetadata && customValidatorMetadata.name ? customValidatorMetadata.name : metadata.type;\n return type;\n }\n}\n","import { ValidationError } from './ValidationError';\nimport { ValidatorOptions } from './ValidatorOptions';\nimport { ValidationExecutor } from './ValidationExecutor';\nimport { ValidationOptions } from '../decorator/ValidationOptions';\n\n/**\n * Validator performs validation of the given object based on its metadata.\n */\nexport class Validator {\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Performs validation of the given object based on decorators used in given object class.\n */\n validate(object: object, options?: ValidatorOptions): Promise<ValidationError[]>;\n\n /**\n * Performs validation of the given object based on validation schema.\n */\n validate(schemaName: string, object: object, options?: ValidatorOptions): Promise<ValidationError[]>;\n\n /**\n * Performs validation of the given object based on decorators or validation schema.\n */\n validate(\n objectOrSchemaName: object | string,\n objectOrValidationOptions: object | ValidationOptions,\n maybeValidatorOptions?: ValidatorOptions\n ): Promise<ValidationError[]> {\n return this.coreValidate(objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions);\n }\n\n /**\n * Performs validation of the given object based on decorators used in given object class and reject on error.\n */\n validateOrReject(object: object, options?: ValidatorOptions): Promise<void>;\n\n /**\n * Performs validation of the given object based on validation schema and reject on error.\n */\n validateOrReject(schemaName: string, object: object, options?: ValidatorOptions): Promise<void>;\n\n /**\n * Performs validation of the given object based on decorators or validation schema and reject on error.\n */\n async validateOrReject(\n objectOrSchemaName: object | string,\n objectOrValidationOptions: object | ValidationOptions,\n maybeValidatorOptions?: ValidatorOptions\n ): Promise<void> {\n const errors = await this.coreValidate(objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions);\n if (errors.length) return Promise.reject(errors);\n }\n\n /**\n * Performs validation of the given object based on decorators used in given object class.\n * NOTE: This method completely ignores all async validations.\n */\n validateSync(object: object, options?: ValidatorOptions): ValidationError[];\n\n /**\n * Performs validation of the given object based on validation schema.\n */\n validateSync(schemaName: string, object: object, options?: ValidatorOptions): ValidationError[];\n\n /**\n * Performs validation of the given object based on decorators or validation schema.\n */\n validateSync(\n objectOrSchemaName: object | string,\n objectOrValidationOptions: object | ValidationOptions,\n maybeValidatorOptions?: ValidatorOptions\n ): ValidationError[] {\n const object = typeof objectOrSchemaName === 'string' ? (objectOrValidationOptions as object) : objectOrSchemaName;\n const options =\n typeof objectOrSchemaName === 'string' ? maybeValidatorOptions : (objectOrValidationOptions as ValidationOptions);\n const schema = typeof objectOrSchemaName === 'string' ? objectOrSchemaName : undefined;\n\n const executor = new ValidationExecutor(this, options);\n executor.ignoreAsyncValidations = true;\n const validationErrors: ValidationError[] = [];\n executor.execute(object, schema, validationErrors);\n return executor.stripEmptyErrors(validationErrors);\n }\n\n // -------------------------------------------------------------------------\n // Private Properties\n // -------------------------------------------------------------------------\n /**\n * Performs validation of the given object based on decorators or validation schema.\n * Common method for `validateOrReject` and `validate` methods.\n */\n private coreValidate(\n objectOrSchemaName: object | string,\n objectOrValidationOptions: object | ValidationOptions,\n maybeValidatorOptions?: ValidatorOptions\n ): Promise<ValidationError[]> {\n const object = typeof objectOrSchemaName === 'string' ? (objectOrValidationOptions as object) : objectOrSchemaName;\n const options =\n typeof objectOrSchemaName === 'string' ? maybeValidatorOptions : (objectOrValidationOptions as ValidationOptions);\n const schema = typeof objectOrSchemaName === 'string' ? objectOrSchemaName : undefined;\n\n const executor = new ValidationExecutor(this, options);\n const validationErrors: ValidationError[] = [];\n executor.execute(object, schema, validationErrors);\n\n return Promise.all(executor.awaitingPromises).then(() => {\n return executor.stripEmptyErrors(validationErrors);\n });\n }\n}\n","/**\n * Container options.\n */\nexport interface UseContainerOptions {\n /**\n * If set to true, then default container will be used in the case if given container haven't returned anything.\n */\n fallback?: boolean;\n\n /**\n * If set to true, then default container will be used in the case if given container thrown an exception.\n */\n fallbackOnErrors?: boolean;\n}\n\n/**\n * Container to be used by this library for inversion control. If container was not implicitly set then by default\n * container simply creates a new instance of the given class.\n */\nconst defaultContainer: { get<T>(someClass: { new (...args: any[]): T } | Function): T } = new (class {\n private instances: { type: Function; object: any }[] = [];\n get<T>(someClass: { new (...args: any[]): T }): T {\n let instance = this.instances.find(instance => instance.type === someClass);\n if (!instance) {\n instance = { type: someClass, object: new someClass() };\n this.instances.push(instance);\n }\n\n return instance.object;\n }\n})();\n\nlet userContainer: { get<T>(someClass: { new (...args: any[]): T } | Function): T };\nlet userContainerOptions: UseContainerOptions;\n\n/**\n * Sets container to be used by this library.\n */\nexport function useContainer(iocContainer: { get(someClass: any): any }, options?: UseContainerOptions): void {\n userContainer = iocContainer;\n userContainerOptions = options;\n}\n\n/**\n * Gets the IOC container used by this library.\n */\nexport function getFromContainer<T>(someClass: { new (...args: any[]): T } | Function): T {\n if (userContainer) {\n try {\n const instance = userContainer.get(someClass);\n if (instance) return instance;\n\n if (!userContainerOptions || !userContainerOptions.fallback) return instance;\n } catch (error) {\n if (!userContainerOptions || !userContainerOptions.fallbackOnErrors) throw error;\n }\n }\n return defaultContainer.get<T>(someClass);\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { ValidationMetadataArgs } from '../../metadata/ValidationMetadataArgs';\nimport { ValidationTypes } from '../../validation/ValidationTypes';\nimport { ValidationMetadata } from '../../metadata/ValidationMetadata';\nimport { getMetadataStorage } from '../../metadata/MetadataStorage';\n\n/**\n * If object has both allowed and not allowed properties a validation error will be thrown.\n */\nexport function Allow(validationOptions?: ValidationOptions): PropertyDecorator {\n // @ts-ignore\n return function (object: object, propertyName: string): void {\n const args: ValidationMetadataArgs = {\n type: ValidationTypes.WHITELIST,\n target: object.constructor,\n propertyName: propertyName,\n validationOptions: validationOptions,\n };\n getMetadataStorage().addValidationMetadata(new ValidationMetadata(args));\n };\n}\n","import { ValidatorConstraintInterface } from '../validation/ValidatorConstraintInterface';\nimport { getFromContainer } from '../container';\n\n/**\n * This metadata interface contains information for custom validators.\n */\nexport class ConstraintMetadata {\n // -------------------------------------------------------------------------\n // Properties\n // -------------------------------------------------------------------------\n\n /**\n * Target class which performs validation.\n */\n target: Function;\n\n /**\n * Custom validation's name, that will be used as validation error type.\n */\n name?: string;\n\n /**\n * Indicates if this validation is asynchronous or not.\n */\n async: boolean;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(target: Function, name?: string, async: boolean = false) {\n this.target = target;\n this.name = name;\n this.async = async;\n }\n\n // -------------------------------------------------------------------------\n // Accessors\n // -------------------------------------------------------------------------\n\n /**\n * Instance of the target custom validation class which performs validation.\n */\n get instance(): ValidatorConstraintInterface {\n return getFromContainer<ValidatorConstraintInterface>(this.target);\n }\n}\n","import { ConstraintMetadata } from './metadata/ConstraintMetadata';\nimport { ValidatorConstraintInterface } from './validation/ValidatorConstraintInterface';\nimport { ValidationMetadata } from './metadata/ValidationMetadata';\nimport { ValidationMetadataArgs } from './metadata/ValidationMetadataArgs';\nimport { ValidationTypes } from './validation/ValidationTypes';\nimport { ValidationArguments } from './validation/ValidationArguments';\nimport { getFromContainer } from './container';\nimport { MetadataStorage, getMetadataStorage } from './metadata/MetadataStorage';\nimport { ValidationOptions } from './decorator/ValidationOptions';\n\nexport interface ValidationDecoratorOptions {\n /**\n * Target object to be validated.\n */\n target: Function;\n\n /**\n * Target object's property name to be validated.\n */\n propertyName: string;\n\n /**\n * Name of the validation that is being registered.\n */\n name?: string;\n\n /**\n * Indicates if this decorator will perform async validation.\n */\n async?: boolean;\n\n /**\n * Validator options.\n */\n options?: ValidationOptions;\n\n /**\n * Array of validation constraints.\n */\n constraints?: any[];\n\n /**\n * Validator that performs validation.\n */\n validator: ValidatorConstraintInterface | Function;\n}\n\n/**\n * Registers a custom validation decorator.\n */\nexport function registerDecorator(options: ValidationDecoratorOptions): void {\n let constraintCls: Function;\n if (options.validator instanceof Function) {\n constraintCls = options.validator;\n const constraintClasses = getFromContainer(MetadataStorage).getTargetValidatorConstraints(options.validator);\n if (constraintClasses.length > 1) {\n throw `More than one implementation of ValidatorConstraintInterface found for validator on: ${options.target.name}:${options.propertyName}`;\n }\n } else {\n const validator = options.validator;\n constraintCls = class CustomConstraint implements ValidatorConstraintInterface {\n validate(value: any, validationArguments?: ValidationArguments): Promise<boolean> | boolean {\n return validator.validate(value, validationArguments);\n }\n\n defaultMessage(validationArguments?: ValidationArguments): string {\n if (validator.defaultMessage) {\n return validator.defaultMessage(validationArguments);\n }\n\n return '';\n }\n };\n getMetadataStorage().addConstraintMetadata(new ConstraintMetadata(constraintCls, options.name, options.async));\n }\n\n const validationMetadataArgs: ValidationMetadataArgs = {\n type: options.name && ValidationTypes.isValid(options.name) ? options.name : ValidationTypes.CUSTOM_VALIDATION,\n name: options.name,\n target: options.target,\n propertyName: options.propertyName,\n validationOptions: options.options,\n constraintCls: constraintCls,\n constraints: options.constraints,\n };\n getMetadataStorage().addValidationMetadata(new ValidationMetadata(validationMetadataArgs));\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { registerDecorator } from '../../register-decorator';\nimport { ValidationArguments } from '../../validation/ValidationArguments';\nimport { ValidatorConstraintInterface } from '../../validation/ValidatorConstraintInterface';\nimport { t } from 'i18next';\n\nexport interface ValidateByOptions {\n name: string;\n constraints?: any[];\n validator: ValidatorConstraintInterface | Function;\n async?: boolean;\n}\n\nexport function buildMessage(\n impl: (eachPrefix: string, args?: ValidationArguments) => string,\n validationOptions?: ValidationOptions\n): (validationArguments?: ValidationArguments) => string {\n return (validationArguments?: ValidationArguments): string => {\n const eachPrefix = validationOptions && validationOptions.each ? `${t('archbase:each value in ')}` : '';\n return impl(eachPrefix, validationArguments);\n };\n}\n\nexport function ValidateBy(options: ValidateByOptions, validationOptions?: ValidationOptions): PropertyDecorator {\n // @ts-ignore\n return function (object: object, propertyName: string): void {\n registerDecorator({\n name: options.name,\n target: object.constructor,\n propertyName: propertyName,\n options: validationOptions,\n constraints: options.constraints,\n validator: options.validator,\n });\n };\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from './ValidateBy';\nimport { ValidationTypes } from '../../validation/ValidationTypes';\nimport { t } from 'i18next';\n\n// isDefined is (yet) a special case\nexport const IS_DEFINED = ValidationTypes.IS_DEFINED;\n\n/**\n * Checks if value is defined (!== undefined, !== null).\n */\nexport function isDefined(value: any): boolean {\n return value !== undefined && value !== null;\n}\n\n/**\n * Checks if value is defined (!== undefined, !== null).\n */\nexport function IsDefined(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_DEFINED,\n validator: {\n validate: (value): boolean => isDefined(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property should not be null or undefined')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { ValidationMetadataArgs } from '../../metadata/ValidationMetadataArgs';\nimport { ValidationTypes } from '../../validation/ValidationTypes';\nimport { ValidationMetadata } from '../../metadata/ValidationMetadata';\nimport { getMetadataStorage } from '../../metadata/MetadataStorage';\n\n/**\n * Checks if value is missing and if so, ignores all validators.\n */\nexport function IsOptional(validationOptions?: ValidationOptions): PropertyDecorator {\n // @ts-ignore\n return function (object: object, propertyName: string): void {\n const args: ValidationMetadataArgs = {\n type: ValidationTypes.CONDITIONAL_VALIDATION,\n target: object.constructor,\n propertyName: propertyName,\n constraints: [\n (object: any, value: any): boolean => {\n return object[propertyName] !== null && object[propertyName] !== undefined;\n },\n ],\n validationOptions: validationOptions,\n };\n getMetadataStorage().addValidationMetadata(new ValidationMetadata(args));\n };\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { ValidationMetadataArgs } from '../../metadata/ValidationMetadataArgs';\nimport { ValidationMetadata } from '../../metadata/ValidationMetadata';\nimport { getMetadataStorage } from '../../metadata/MetadataStorage';\nimport { ValidationTypes } from '../../validation/ValidationTypes';\nimport { ConstraintMetadata } from '../../metadata/ConstraintMetadata';\n\n/**\n * Registers custom validator class.\n */\nexport function ValidatorConstraint(options?: { name?: string; async?: boolean }) {\n return function (target: Function): void {\n const isAsync = options && options.async;\n let name = options && options.name ? options.name : '';\n if (!name) {\n name = (target as any).name;\n if (!name)\n // generate name if it was not given\n name = name.replace(/\\.?([A-Z]+)/g, (x, y) => '_' + (y as string).toLowerCase()).replace(/^_/, '');\n }\n const metadata = new ConstraintMetadata(target, name, isAsync);\n getMetadataStorage().addConstraintMetadata(metadata);\n };\n}\n\n/**\n * Performs validation based on the given custom validation class.\n * Validation class must be decorated with ValidatorConstraint decorator.\n */\nexport function Validate(constraintClass: Function, validationOptions?: ValidationOptions): PropertyDecorator;\nexport function Validate(\n constraintClass: Function,\n constraints?: any[],\n validationOptions?: ValidationOptions\n): PropertyDecorator;\nexport function Validate(\n constraintClass: Function,\n constraintsOrValidationOptions?: any[] | ValidationOptions,\n maybeValidationOptions?: ValidationOptions\n): PropertyDecorator {\n // @ts-ignore\n return function (object: object, propertyName: string): void {\n const args: ValidationMetadataArgs = {\n type: ValidationTypes.CUSTOM_VALIDATION,\n target: object.constructor,\n propertyName: propertyName,\n constraintCls: constraintClass,\n constraints: Array.isArray(constraintsOrValidationOptions) ? constraintsOrValidationOptions : undefined,\n validationOptions: !Array.isArray(constraintsOrValidationOptions)\n ? constraintsOrValidationOptions\n : maybeValidationOptions,\n };\n getMetadataStorage().addValidationMetadata(new ValidationMetadata(args));\n };\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { ValidationMetadataArgs } from '../../metadata/ValidationMetadataArgs';\nimport { ValidationTypes } from '../../validation/ValidationTypes';\nimport { ValidationMetadata } from '../../metadata/ValidationMetadata';\nimport { getMetadataStorage } from '../../metadata/MetadataStorage';\n\n/**\n * Ignores the other validators on a property when the provided condition function returns false.\n */\nexport function ValidateIf(\n condition: (object: any, value: any) => boolean,\n validationOptions?: ValidationOptions\n): PropertyDecorator {\n // @ts-ignore\n return function (object: object, propertyName: string): void {\n const args: ValidationMetadataArgs = {\n type: ValidationTypes.CONDITIONAL_VALIDATION,\n target: object.constructor,\n propertyName: propertyName,\n constraints: [condition],\n validationOptions: validationOptions,\n };\n getMetadataStorage().addValidationMetadata(new ValidationMetadata(args));\n };\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { ValidationMetadataArgs } from '../../metadata/ValidationMetadataArgs';\nimport { ValidationTypes } from '../../validation/ValidationTypes';\nimport { ValidationMetadata } from '../../metadata/ValidationMetadata';\nimport { getMetadataStorage } from '../../metadata/MetadataStorage';\nimport { t } from 'i18next';\n\n/**\n * Objects / object arrays marked with this decorator will also be validated.\n */\nexport function ValidateNested(validationOptions?: ValidationOptions): PropertyDecorator {\n const opts: ValidationOptions = { ...validationOptions };\n const eachPrefix = opts.each ? `${t('archbase:each value in ')}` : '';\n opts.message = opts.message || eachPrefix + `${t('archbase:nested property $property must be either object or array')}`;\n // @ts-ignore\n return function (object: object, propertyName: string): void {\n const args: ValidationMetadataArgs = {\n type: ValidationTypes.NESTED_VALIDATION,\n target: object.constructor,\n propertyName: propertyName,\n validationOptions: opts,\n };\n getMetadataStorage().addValidationMetadata(new ValidationMetadata(args));\n };\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { ValidationMetadataArgs } from '../../metadata/ValidationMetadataArgs';\nimport { ValidationTypes } from '../../validation/ValidationTypes';\nimport { ValidationMetadata } from '../../metadata/ValidationMetadata';\nimport { getMetadataStorage } from '../../metadata/MetadataStorage';\n\n/**\n * Resolve promise before validation\n */\nexport function ValidatePromise(validationOptions?: ValidationOptions): PropertyDecorator {\n // @ts-ignore\n return function (object: object, propertyName: string): void {\n const args: ValidationMetadataArgs = {\n type: ValidationTypes.PROMISE_VALIDATION,\n target: object.constructor,\n propertyName: propertyName,\n validationOptions: validationOptions,\n };\n getMetadataStorage().addValidationMetadata(new ValidationMetadata(args));\n };\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from './ValidateBy';\nimport isLatLongValidator from 'validator/lib/isLatLong';\n\nexport const IS_LATLONG = 'isLatLong';\n\n/**\n * Checks if a value is string in format a \"latitude,longitude\".\n */\nexport function isLatLong(value: string): boolean {\n return typeof value === 'string' && isLatLongValidator(value);\n}\n\n/**\n * Checks if a value is string in format a \"latitude,longitude\".\n */\nexport function IsLatLong(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_LATLONG,\n validator: {\n validate: (value, args): boolean => isLatLong(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be a latitude,longitude string')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from './ValidateBy';\nimport { isLatLong } from './IsLatLong';\nimport { t } from 'i18next';\n\nexport const IS_LATITUDE = 'isLatitude';\n\n/**\n * Checks if a given value is a latitude.\n */\nexport function isLatitude(value: string): boolean {\n return (typeof value === 'number' || typeof value === 'string') && isLatLong(`${value},0`);\n}\n\n/**\n * Checks if a given value is a latitude.\n */\nexport function IsLatitude(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_LATITUDE,\n validator: {\n validate: (value, args): boolean => isLatitude(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be a latitude string or number')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from './ValidateBy';\nimport { isLatLong } from './IsLatLong';\nimport { t } from 'i18next';\n\nexport const IS_LONGITUDE = 'isLongitude';\n\n/**\n * Checks if a given value is a longitude.\n */\nexport function isLongitude(value: string): boolean {\n return (typeof value === 'number' || typeof value === 'string') && isLatLong(`0,${value}`);\n}\n\n/**\n * Checks if a given value is a longitude.\n */\nexport function IsLongitude(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_LONGITUDE,\n validator: {\n validate: (value, args): boolean => isLongitude(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be a longitude string or number')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const EQUALS = 'equals';\n\n/**\n * Checks if value matches (\"===\") the comparison.\n */\nexport function equals(value: unknown, comparison: unknown): boolean {\n return value === comparison;\n}\n\n/**\n * Checks if value matches (\"===\") the comparison.\n */\nexport function Equals(comparison: any, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: EQUALS,\n constraints: [comparison],\n validator: {\n validate: (value, args): boolean => equals(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be a latitude string or number')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const NOT_EQUALS = 'notEquals';\n\n/**\n * Checks if value does not match (\"!==\") the comparison.\n */\nexport function notEquals(value: unknown, comparison: unknown): boolean {\n return value !== comparison;\n}\n\n/**\n * Checks if value does not match (\"!==\") the comparison.\n */\nexport function NotEquals(comparison: any, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: NOT_EQUALS,\n constraints: [comparison],\n validator: {\n validate: (value, args): boolean => notEquals(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property should not be equal to $constraint1')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const IS_EMPTY = 'isEmpty';\n\n/**\n * Checks if given value is empty (=== '', === null, === undefined).\n */\nexport function isEmpty(value: unknown): boolean {\n return value === '' || value === null || value === undefined;\n}\n\n/**\n * Checks if given value is empty (=== '', === null, === undefined).\n */\nexport function IsEmpty(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_EMPTY,\n validator: {\n validate: (value, args): boolean => isEmpty(value),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property must be empty')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const IS_NOT_EMPTY = 'isNotEmpty';\n\n/**\n * Checks if given value is not empty (!== '', !== null, !== undefined).\n */\nexport function isNotEmpty(value: unknown): boolean {\n return value !== '' && value !== null && value !== undefined;\n}\n\n/**\n * Checks if given value is not empty (!== '', !== null, !== undefined).\n */\nexport function IsNotEmpty(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_NOT_EMPTY,\n validator: {\n validate: (value, args): boolean => isNotEmpty(value),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property should not be empty')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const IS_IN = 'isIn';\n\n/**\n * Checks if given value is in a array of allowed values.\n */\nexport function isIn(value: unknown, possibleValues: readonly unknown[]): boolean {\n return Array.isArray(possibleValues) && possibleValues.some(possibleValue => possibleValue === value);\n}\n\n/**\n * Checks if given value is in a array of allowed values.\n */\nexport function IsIn(values: readonly any[], validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_IN,\n constraints: [values],\n validator: {\n validate: (value, args): boolean => isIn(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be one of the following values: $constraint1')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const IS_NOT_IN = 'isNotIn';\n\n/**\n * Checks if given value not in a array of allowed values.\n */\nexport function isNotIn(value: unknown, possibleValues: readonly unknown[]): boolean {\n return !Array.isArray(possibleValues) || !possibleValues.some(possibleValue => possibleValue === value);\n}\n\n/**\n * Checks if given value not in a array of allowed values.\n */\nexport function IsNotIn(values: readonly any[], validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_NOT_IN,\n constraints: [values],\n validator: {\n validate: (value, args): boolean => isNotIn(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property should not be one of the following values: $constraint1')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isDivisibleByValidator from 'validator/lib/isDivisibleBy';\n\nexport const IS_DIVISIBLE_BY = 'isDivisibleBy';\n\n/**\n * Checks if value is a number that's divisible by another.\n */\nexport function isDivisibleBy(value: unknown, num: number): boolean {\n return typeof value === 'number' && typeof num === 'number' && isDivisibleByValidator(String(value), num);\n}\n\n/**\n * Checks if value is a number that's divisible by another.\n */\nexport function IsDivisibleBy(num: number, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_DIVISIBLE_BY,\n constraints: [num],\n validator: {\n validate: (value, args): boolean => isDivisibleBy(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be divisible by $constraint1')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const IS_POSITIVE = 'isPositive';\n\n/**\n * Checks if the value is a positive number greater than zero.\n */\nexport function isPositive(value: unknown): boolean {\n return typeof value === 'number' && value > 0;\n}\n\n/**\n * Checks if the value is a positive number greater than zero.\n */\nexport function IsPositive(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_POSITIVE,\n validator: {\n validate: (value, args): boolean => isPositive(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be a positive number')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const IS_NEGATIVE = 'isNegative';\n\n/**\n * Checks if the value is a negative number smaller than zero.\n */\nexport function isNegative(value: unknown): boolean {\n return typeof value === 'number' && value < 0;\n}\n\n/**\n * Checks if the value is a negative number smaller than zero.\n */\nexport function IsNegative(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_NEGATIVE,\n validator: {\n validate: (value, args): boolean => isNegative(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be a negative number')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const MAX = 'max';\n\n/**\n * Checks if the first number is less than or equal to the second.\n */\nexport function max(num: unknown, max: number): boolean {\n return typeof num === 'number' && typeof max === 'number' && num <= max;\n}\n\n/**\n * Checks if the value is less than or equal to the allowed maximum value.\n */\nexport function Max(maxValue: number, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: MAX,\n constraints: [maxValue],\n validator: {\n validate: (value, args): boolean => max(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must not be greater than $constraint1')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const MIN = 'min';\n\n/**\n * Checks if the first number is greater than or equal to the second.\n */\nexport function min(num: unknown, min: number): boolean {\n return typeof num === 'number' && typeof min === 'number' && num >= min;\n}\n\n/**\n * Checks if the value is greater than or equal to the allowed minimum value.\n */\nexport function Min(minValue: number, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: MIN,\n constraints: [minValue],\n validator: {\n validate: (value, args): boolean => min(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must not be less than $constraint1')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const MIN_DATE = 'minDate';\n\n/**\n * Checks if the value is a date that's after the specified date.\n */\nexport function minDate(date: unknown, minDate: Date | (() => Date)): boolean {\n return date instanceof Date && date.getTime() >= (minDate instanceof Date ? minDate : minDate()).getTime();\n}\n\n/**\n * Checks if the value is a date that's after the specified date.\n */\nexport function MinDate(date: Date | (() => Date), validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: MIN_DATE,\n constraints: [date],\n validator: {\n validate: (value, args): boolean => minDate(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => `${t('archbase:minimal allowed date for ')}${eachPrefix}${t('archbase:$property is $constraint1')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const MAX_DATE = 'maxDate';\n\n/**\n * Checks if the value is a date that's before the specified date.\n */\nexport function maxDate(date: unknown, maxDate: Date | (() => Date)): boolean {\n return date instanceof Date && date.getTime() <= (maxDate instanceof Date ? maxDate : maxDate()).getTime();\n}\n\n/**\n * Checks if the value is a date that's after the specified date.\n */\nexport function MaxDate(date: Date | (() => Date), validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: MAX_DATE,\n constraints: [date],\n validator: {\n validate: (value, args): boolean => maxDate(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => `${t('archbase:maximal allowed date for ')}${eachPrefix}${t('archbase:$property is $constraint1')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport containsValidator from 'validator/lib/contains';\n\nexport const CONTAINS = 'contains';\n\n/**\n * Checks if the string contains the seed.\n * If given value is not a string, then it returns false.\n */\nexport function contains(value: unknown, seed: string): boolean {\n return typeof value === 'string' && containsValidator(value, seed);\n}\n\n/**\n * Checks if the string contains the seed.\n * If given value is not a string, then it returns false.\n */\nexport function Contains(seed: string, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: CONTAINS,\n constraints: [seed],\n validator: {\n validate: (value, args): boolean => contains(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must contain a $constraint1 string')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport containsValidator from 'validator/lib/contains';\n\nexport const NOT_CONTAINS = 'notContains';\n\n/**\n * Checks if the string does not contain the seed.\n * If given value is not a string, then it returns false.\n */\nexport function notContains(value: unknown, seed: string): boolean {\n return typeof value === 'string' && !containsValidator(value, seed);\n}\n\n/**\n * Checks if the string does not contain the seed.\n * If given value is not a string, then it returns false.\n */\nexport function NotContains(seed: string, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: NOT_CONTAINS,\n constraints: [seed],\n validator: {\n validate: (value, args): boolean => notContains(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property should not contain a $constraint1 string')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isAlphaValidator from 'validator/lib/isAlpha';\nimport validator from 'validator';\nimport { t } from 'i18next';\n\nexport const IS_ALPHA = 'isAlpha';\n\n/**\n * Checks if the string contains only letters (a-zA-Z).\n * If given value is not a string, then it returns false.\n */\nexport function isAlpha(value: unknown, locale?: validator.AlphaLocale): boolean {\n return typeof value === 'string' && isAlphaValidator(value, locale);\n}\n\n/**\n * Checks if the string contains only letters (a-zA-Z).\n * If given value is not a string, then it returns false.\n */\nexport function IsAlpha(locale?: validator.AlphaLocale, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_ALPHA,\n constraints: [locale],\n validator: {\n validate: (value, args): boolean => isAlpha(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must contain only letters (a-zA-Z)')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isAlphanumericValidator from 'validator/lib/isAlphanumeric';\nimport validator from 'validator';\nimport { t } from 'i18next';\n\nexport const IS_ALPHANUMERIC = 'isAlphanumeric';\n\n/**\n * Checks if the string contains only letters and numbers.\n * If given value is not a string, then it returns false.\n */\nexport function isAlphanumeric(value: unknown, locale?: validator.AlphanumericLocale): boolean {\n return typeof value === 'string' && isAlphanumericValidator(value, locale);\n}\n\n/**\n * Checks if the string contains only letters and numbers.\n * If given value is not a string, then it returns false.\n */\nexport function IsAlphanumeric(\n locale?: validator.AlphanumericLocale,\n validationOptions?: ValidationOptions\n): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_ALPHANUMERIC,\n constraints: [locale],\n validator: {\n validate: (value, args): boolean => isAlphanumeric(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must contain only letters and numbers')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isDecimalValidator from 'validator/lib/isDecimal';\nimport validator from 'validator';\nimport { t } from 'i18next';\n\nexport const IS_DECIMAL = 'isDecimal';\n\n/**\n * Checks if the string is a valid decimal.\n * If given value is not a string, then it returns false.\n */\nexport function isDecimal(value: unknown, options?: validator.IsDecimalOptions): boolean {\n return typeof value === 'string' && isDecimalValidator(value, options);\n}\n\n/**\n * Checks if the string is a valid decimal.\n * If given value is not a string, then it returns false.\n */\nexport function IsDecimal(\n options?: validator.IsDecimalOptions,\n validationOptions?: ValidationOptions\n): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_DECIMAL,\n constraints: [options],\n validator: {\n validate: (value, args): boolean => isDecimal(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property is not a valid decimal number.')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isAsciiValidator from 'validator/lib/isAscii';\n\nexport const IS_ASCII = 'isAscii';\n\n/**\n * Checks if the string contains ASCII chars only.\n * If given value is not a string, then it returns false.\n */\nexport function isAscii(value: unknown): boolean {\n return typeof value === 'string' && isAsciiValidator(value);\n}\n\n/**\n * Checks if the string contains ASCII chars only.\n * If given value is not a string, then it returns false.\n */\nexport function IsAscii(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_ASCII,\n validator: {\n validate: (value, args): boolean => isAscii(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must contain only ASCII characters')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport isBase64Validator from 'validator/lib/isBase64';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport { ValidationOptions } from '../ValidationOptions';\n\nexport const IS_BASE64 = 'isBase64';\n\n/**\n * Checks if a string is base64 encoded.\n * If given value is not a string, then it returns false.\n */\nexport function isBase64Validate(value: unknown, options?: any): boolean {\n\treturn typeof value === 'string' && isBase64Validator(value, options);\n}\n\n/**\n * Checks if a string is base64 encoded.\n * If given value is not a string, then it returns false.\n */\nexport function IsBase64(\n\toptions?: any,\n\tvalidationOptions?: ValidationOptions,\n): PropertyDecorator {\n\treturn ValidateBy(\n\t\t{\n\t\t\tname: IS_BASE64,\n\t\t\tconstraints: [options],\n\t\t\tvalidator: {\n\t\t\t\tvalidate: (value, args): boolean => isBase64Validate(value),\n\t\t\t\tdefaultMessage: buildMessage(\n\t\t\t\t\t(eachPrefix) =>\n\t\t\t\t\t\teachPrefix + `${t('archbase:$property must be base64 encoded')}`,\n\t\t\t\t\tvalidationOptions,\n\t\t\t\t),\n\t\t\t},\n\t\t},\n\t\tvalidationOptions,\n\t);\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isByteLengthValidator from 'validator/lib/isByteLength';\n\nexport const IS_BYTE_LENGTH = 'isByteLength';\n\n/**\n * Checks if the string's length (in bytes) falls in a range.\n * If given value is not a string, then it returns false.\n */\nexport function isByteLength(value: unknown, min: number, max?: number): boolean {\n return typeof value === 'string' && isByteLengthValidator(value, { min, max });\n}\n\n/**\n * Checks if the string's length (in bytes) falls in a range.\n * If given value is not a string, then it returns false.\n */\nexport function IsByteLength(min: number, max?: number, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_BYTE_LENGTH,\n constraints: [min, max],\n validator: {\n validate: (value, args): boolean => isByteLength(value, args?.constraints[0], args?.constraints[1]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t(\"archbase:$property's byte length must fall into ($constraint1, $constraint2) range\")}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isCreditCardValidator from 'validator/lib/isCreditCard';\n\nexport const IS_CREDIT_CARD = 'isCreditCard';\n\n/**\n * Checks if the string is a credit card.\n * If given value is not a string, then it returns false.\n */\nexport function isCreditCard(value: unknown): boolean {\n return typeof value === 'string' && isCreditCardValidator(value);\n}\n\n/**\n * Checks if the string is a credit card.\n * If given value is not a string, then it returns false.\n */\nexport function IsCreditCard(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_CREDIT_CARD,\n validator: {\n validate: (value, args): boolean => isCreditCard(value),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property must be a credit card')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isCurrencyValidator from 'validator/lib/isCurrency';\nimport validator from 'validator';\nimport { t } from 'i18next';\n\nexport const IS_CURRENCY = 'isCurrency';\n\n/**\n * Checks if the string is a valid currency amount.\n * If given value is not a string, then it returns false.\n */\nexport function isCurrency(value: unknown, options?: validator.IsCurrencyOptions): boolean {\n return typeof value === 'string' && isCurrencyValidator(value, options);\n}\n\n/**\n * Checks if the string is a valid currency amount.\n * If given value is not a string, then it returns false.\n */\nexport function IsCurrency(\n options?: validator.IsCurrencyOptions,\n validationOptions?: ValidationOptions\n): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_CURRENCY,\n constraints: [options],\n validator: {\n validate: (value, args): boolean => isCurrency(value, args?.constraints[0]),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property must be a currency')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isEmailValidator from 'validator/lib/isEmail';\nimport validator from 'validator';\nimport { t } from 'i18next';\n\nexport const IS_EMAIL = 'isEmail';\n\n/**\n * Checks if the string is an email.\n * If given value is not a string, then it returns false.\n */\nexport function isEmailValidate(value: unknown, options?: validator.IsEmailOptions): boolean {\n return typeof value === 'string' && isEmailValidator(value, options);\n}\n\n/**\n * Checks if the string is an email.\n * If given value is not a string, then it returns false.\n */\nexport function IsEmail(\n options?: validator.IsEmailOptions,\n validationOptions?: ValidationOptions\n): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_EMAIL,\n constraints: [options],\n validator: {\n validate: (value, args): boolean => isEmailValidate(value, args?.constraints[0]),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property must be an email')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isFqdnValidator from 'validator/lib/isFQDN';\nimport validator from 'validator';\nimport { t } from 'i18next';\n\nexport const IS_FQDN = 'isFqdn';\n\n/**\n * Checks if the string is a fully qualified domain name (e.g. domain.com).\n * If given value is not a string, then it returns false.\n */\nexport function isFQDN(value: unknown, options?: validator.IsFQDNOptions): boolean {\n return typeof value === 'string' && isFqdnValidator(value, options);\n}\n\n/**\n * Checks if the string is a fully qualified domain name (e.g. domain.com).\n * If given value is not a string, then it returns false.\n */\nexport function IsFQDN(options?: validator.IsFQDNOptions, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_FQDN,\n constraints: [options],\n validator: {\n validate: (value, args): boolean => isFQDN(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be a valid domain name')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isFullWidthValidator from 'validator/lib/isFullWidth';\n\nexport const IS_FULL_WIDTH = 'isFullWidth';\n\n/**\n * Checks if the string contains any full-width chars.\n * If given value is not a string, then it returns false.\n */\nexport function isFullWidth(value: unknown): boolean {\n return typeof value === 'string' && isFullWidthValidator(value);\n}\n\n/**\n * Checks if the string contains any full-width chars.\n * If given value is not a string, then it returns false.\n */\nexport function IsFullWidth(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_FULL_WIDTH,\n validator: {\n validate: (value, args): boolean => isFullWidth(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must contain a full-width characters')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isHalfWidthValidator from 'validator/lib/isHalfWidth';\n\nexport const IS_HALF_WIDTH = 'isHalfWidth';\n\n/**\n * Checks if the string contains any half-width chars.\n * If given value is not a string, then it returns false.\n */\nexport function isHalfWidth(value: unknown): boolean {\n return typeof value === 'string' && isHalfWidthValidator(value);\n}\n\n/**\n * Checks if the string contains any half-width chars.\n * If given value is not a string, then it returns false.\n */\nexport function IsHalfWidth(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_HALF_WIDTH,\n validator: {\n validate: (value, args): boolean => isHalfWidth(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must contain a half-width characters')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isVariableWidthValidator from 'validator/lib/isVariableWidth';\n\nexport const IS_VARIABLE_WIDTH = 'isVariableWidth';\n\n/**\n * Checks if the string contains variable-width chars.\n * If given value is not a string, then it returns false.\n */\nexport function isVariableWidth(value: unknown): boolean {\n return typeof value === 'string' && isVariableWidthValidator(value);\n}\n\n/**\n * Checks if the string contains variable-width chars.\n * If given value is not a string, then it returns false.\n */\nexport function IsVariableWidth(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_VARIABLE_WIDTH,\n validator: {\n validate: (value, args): boolean => isVariableWidth(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must contain a full-width and half-width characters')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isHexColorValidator from 'validator/lib/isHexColor';\n\nexport const IS_HEX_COLOR = 'isHexColor';\n\n/**\n * Checks if the string is a hexadecimal color.\n * If given value is not a string, then it returns false.\n */\nexport function isHexColor(value: unknown): boolean {\n return typeof value === 'string' && isHexColorValidator(value);\n}\n\n/**\n * Checks if the string is a hexadecimal color.\n * If given value is not a string, then it returns false.\n */\nexport function IsHexColor(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_HEX_COLOR,\n validator: {\n validate: (value, args): boolean => isHexColor(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be a hexadecimal color')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isHexadecimalValidator from 'validator/lib/isHexadecimal';\n\nexport const IS_HEXADECIMAL = 'isHexadecimal';\n\n/**\n * Checks if the string is a hexadecimal number.\n * If given value is not a string, then it returns false.\n */\nexport function isHexadecimal(value: unknown): boolean {\n return typeof value === 'string' && isHexadecimalValidator(value);\n}\n\n/**\n * Checks if the string is a hexadecimal number.\n * If given value is not a string, then it returns false.\n */\nexport function IsHexadecimal(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_HEXADECIMAL,\n validator: {\n validate: (value, args): boolean => isHexadecimal(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be a hexadecimal number')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { ValidationArguments } from '../validation/ValidationArguments';\n\n/**\n * Options used to pass to validation decorators.\n */\nexport interface ValidationOptions {\n /**\n * Specifies if validated value is an array and each of its items must be validated.\n */\n each?: boolean;\n\n /**\n * Error message to be used on validation fail.\n * Message can be either string or a function that returns a string.\n */\n message?: string | ((validationArguments: ValidationArguments) => string);\n\n /**\n * Validation groups used for this validation.\n */\n groups?: string[];\n\n /**\n * Indicates if validation must be performed always, no matter of validation groups used.\n */\n always?: boolean;\n\n /*\n * A transient set of data passed through to the validation result for response mapping\n */\n context?: any;\n}\n\nexport function isValidationOptions(val: any): val is ValidationOptions {\n if (!val) {\n return false;\n }\n return 'each' in val || 'message' in val || 'groups' in val || 'always' in val || 'context' in val;\n}\n","import { ValidationOptions, isValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isMacAddressValidator from 'validator/lib/isMACAddress';\nimport validator from 'validator';\nimport { t } from 'i18next';\n\nexport const IS_MAC_ADDRESS = 'isMacAddress';\n\n/**\n * Check if the string is a MAC address.\n * If given value is not a string, then it returns false.\n */\nexport function isMACAddress(value: unknown, options?: validator.IsMACAddressOptions): boolean {\n return typeof value === 'string' && isMacAddressValidator(value, options);\n}\n\n/**\n * Check if the string is a MAC address.\n * If given value is not a string, then it returns false.\n */\nexport function IsMACAddress(\n optionsArg?: validator.IsMACAddressOptions,\n validationOptionsArg?: ValidationOptions\n): PropertyDecorator;\nexport function IsMACAddress(validationOptionsArg?: ValidationOptions): PropertyDecorator;\nexport function IsMACAddress(\n optionsOrValidationOptionsArg?: validator.IsMACAddressOptions | ValidationOptions,\n validationOptionsArg?: ValidationOptions\n): PropertyDecorator {\n const options = !isValidationOptions(optionsOrValidationOptionsArg) ? optionsOrValidationOptionsArg : undefined;\n const validationOptions = isValidationOptions(optionsOrValidationOptionsArg)\n ? optionsOrValidationOptionsArg\n : validationOptionsArg;\n\n return ValidateBy(\n {\n name: IS_MAC_ADDRESS,\n constraints: [options],\n validator: {\n validate: (value, args): boolean => isMACAddress(value, options),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property must be a MAC Address')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isIPValidator from 'validator/lib/isIP';\n\nexport type IsIpVersion = '4' | '6' | 4 | 6;\n\nexport const IS_IP = 'isIp';\n\n/**\n * Checks if the string is an IP (version 4 or 6).\n * If given value is not a string, then it returns false.\n */\nexport function isIP(value: unknown, version?: IsIpVersion): boolean {\n /* eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion */\n const versionStr = version ? (`${version}` as '4' | '6') : undefined;\n return typeof value === 'string' && isIPValidator(value, versionStr);\n}\n\n/**\n * Checks if the string is an IP (version 4 or 6).\n * If given value is not a string, then it returns false.\n */\nexport function IsIP(version?: IsIpVersion, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_IP,\n constraints: [version],\n validator: {\n validate: (value, args): boolean => isIP(value, args?.constraints[0]),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property must be an ip address')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isPortValidator from 'validator/lib/isPort';\n\nexport const IS_PORT = 'isPort';\n\n/**\n * Check if the string is a valid port number.\n */\nexport function isPort(value: unknown): boolean {\n return typeof value === 'string' && isPortValidator(value);\n}\n\n/**\n * Check if the string is a valid port number.\n */\nexport function IsPort(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_PORT,\n validator: {\n validate: (value, args): boolean => isPort(value),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property must be a port')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isIsbnValidator from 'validator/lib/isISBN';\n\nexport type IsISBNVersion = '10' | '13' | 10 | 13;\n\nexport const IS_ISBN = 'isIsbn';\n\n/**\n * Checks if the string is an ISBN (version 10 or 13).\n * If given value is not a string, then it returns false.\n */\nexport function isISBN(value: unknown, version?: IsISBNVersion): boolean {\n /* eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion */\n const versionStr = version ? (`${version}` as '10' | '13') : undefined;\n return typeof value === 'string' && isIsbnValidator(value, versionStr);\n}\n\n/**\n * Checks if the string is an ISBN (version 10 or 13).\n * If given value is not a string, then it returns false.\n */\nexport function IsISBN(version?: IsISBNVersion, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_ISBN,\n constraints: [version],\n validator: {\n validate: (value, args): boolean => isISBN(value, args?.constraints[0]),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property must be an ISBN')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isIsinValidator from 'validator/lib/isISIN';\n\nexport const IS_ISIN = 'isIsin';\n\n/**\n * Checks if the string is an ISIN (stock/security identifier).\n * If given value is not a string, then it returns false.\n */\nexport function isISIN(value: unknown): boolean {\n return typeof value === 'string' && isIsinValidator(value);\n}\n\n/**\n * Checks if the string is an ISIN (stock/security identifier).\n * If given value is not a string, then it returns false.\n */\nexport function IsISIN(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_ISIN,\n validator: {\n validate: (value, args): boolean => isISIN(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be an ISIN (stock/security identifier)')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isIso8601Validator from 'validator/lib/isISO8601';\nimport validator from 'validator';\nimport { t } from 'i18next';\n\nexport const IS_ISO8601 = 'isIso8601';\n\n/**\n * Checks if the string is a valid ISO 8601 date.\n * If given value is not a string, then it returns false.\n * Use the option strict = true for additional checks for a valid date, e.g. invalidates dates like 2019-02-29.\n */\nexport function isISO8601(value: unknown, options?: validator.IsISO8601Options): boolean {\n return typeof value === 'string' && isIso8601Validator(value, options);\n}\n\n/**\n * Checks if the string is a valid ISO 8601 date.\n * If given value is not a string, then it returns false.\n * Use the option strict = true for additional checks for a valid date, e.g. invalidates dates like 2019-02-29.\n */\nexport function IsISO8601(\n options?: validator.IsISO8601Options,\n validationOptions?: ValidationOptions\n): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_ISO8601,\n constraints: [options],\n validator: {\n validate: (value, args): boolean => isISO8601(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be a valid ISO 8601 date string')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isJSONValidator from 'validator/lib/isJSON';\n\nexport const IS_JSON = 'isJson';\n\n/**\n * Checks if the string is valid JSON (note: uses JSON.parse).\n * If given value is not a string, then it returns false.\n */\nexport function isJSON(value: unknown): boolean {\n return typeof value === 'string' && isJSONValidator(value);\n}\n\n/**\n * Checks if the string is valid JSON (note: uses JSON.parse).\n * If given value is not a string, then it returns false.\n */\nexport function IsJSON(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_JSON,\n validator: {\n validate: (value, args): boolean => isJSON(value),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property must be a json string')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isJwtValidator from 'validator/lib/isJWT';\n\nexport const IS_JWT = 'isJwt';\n\n/**\n * Checks if the string is valid JWT token.\n * If given value is not a string, then it returns false.\n */\nexport function isJWT(value: unknown): boolean {\n return typeof value === 'string' && isJwtValidator(value);\n}\n\n/**\n * Checks if the string is valid JWT token.\n * If given value is not a string, then it returns false.\n */\nexport function IsJWT(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_JWT,\n validator: {\n validate: (value, args): boolean => isJWT(value),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property must be a jwt string')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isLowercaseValidator from 'validator/lib/isLowercase';\n\nexport const IS_LOWERCASE = 'isLowercase';\n\n/**\n * Checks if the string is lowercase.\n * If given value is not a string, then it returns false.\n */\nexport function isLowercase(value: unknown): boolean {\n return typeof value === 'string' && isLowercaseValidator(value);\n}\n\n/**\n * Checks if the string is lowercase.\n * If given value is not a string, then it returns false.\n */\nexport function IsLowercase(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_LOWERCASE,\n validator: {\n validate: (value, args): boolean => isLowercase(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be a lowercase string')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isMobilePhoneValidator from 'validator/lib/isMobilePhone';\nimport validator from 'validator';\nimport { t } from 'i18next';\n\nexport const IS_MOBILE_PHONE = 'isMobilePhone';\n\n/**\n * Checks if the string is a mobile phone number (locale is either an array of locales (e.g ['sk-SK', 'sr-RS'])\n * OR one of ['am-Am', 'ar-AE', 'ar-BH', 'ar-DZ', 'ar-EG', 'ar-IQ', ar-JO', 'ar-KW', 'ar-SA', 'ar-SY', 'ar-TN', 'be-BY',\n * 'bg-BG', 'bn-BD', 'cs-CZ', 'da-DK', 'de-DE', 'de-AT', 'el-GR', 'en-AU', 'en-CA', 'en-GB', 'en-GG', 'en-GH', 'en-HK',\n * 'en-MO', 'en-IE', 'en-IN', 'en-KE', 'en-MT', 'en-MU', 'en-NG', 'en-NZ', 'en-PK', 'en-RW', 'en-SG', 'en-SL', 'en-UG',\n * 'en-US', 'en-TZ', 'en-ZA', 'en-ZM', 'es-CL', 'es-CR', 'es-EC', 'es-ES', 'es-MX', 'es-PA', 'es-PY', 'es-UY', 'et-EE',\n * 'fa-IR', 'fi-FI', 'fj-FJ', 'fo-FO', 'fr-BE', 'fr-FR', 'fr-GF', 'fr-GP', 'fr-MQ', 'fr-RE', 'he-IL', 'hu-HU', 'id-ID',\n * 'it-IT', 'ja-JP', 'kk-KZ', 'kl-GL', 'ko-KR', 'lt-LT', 'ms-MY', 'nb-NO', 'ne-NP', 'nl-BE', 'nl-NL', 'nn-NO', 'pl-PL',\n * 'pt-BR', 'pt-PT', 'ro-RO', 'ru-RU', 'sl-SI', 'sk-SK', 'sr-RS', 'sv-SE', 'th-TH', 'tr-TR', 'uk-UA', 'vi-VN', 'zh-CN',\n * 'zh-HK', 'zh-MO', 'zh-TW']\n * If given value is not a string, then it returns false.\n */\nexport function isMobilePhone(\n value: unknown,\n locale?: validator.MobilePhoneLocale,\n options?: validator.IsMobilePhoneOptions\n): boolean {\n return typeof value === 'string' && isMobilePhoneValidator(value, locale, options);\n}\n\n/**\n * Checks if the string is a mobile phone number (locale is either an array of locales (e.g ['sk-SK', 'sr-RS'])\n * OR one of ['am-Am', 'ar-AE', 'ar-BH', 'ar-DZ', 'ar-EG', 'ar-IQ', ar-JO', 'ar-KW', 'ar-SA', 'ar-SY', 'ar-TN', 'be-BY',\n * 'bg-BG', 'bn-BD', 'cs-CZ', 'da-DK', 'de-DE', 'de-AT', 'el-GR', 'en-AU', 'en-CA', 'en-GB', 'en-GG', 'en-GH', 'en-HK',\n * 'en-MO', 'en-IE', 'en-IN', 'en-KE', 'en-MT', 'en-MU', 'en-NG', 'en-NZ', 'en-PK', 'en-RW', 'en-SG', 'en-SL', 'en-UG',\n * 'en-US', 'en-TZ', 'en-ZA', 'en-ZM', 'es-CL', 'es-CR', 'es-EC', 'es-ES', 'es-MX', 'es-PA', 'es-PY', 'es-UY', 'et-EE',\n * 'fa-IR', 'fi-FI', 'fj-FJ', 'fo-FO', 'fr-BE', 'fr-FR', 'fr-GF', 'fr-GP', 'fr-MQ', 'fr-RE', 'he-IL', 'hu-HU', 'id-ID',\n * 'it-IT', 'ja-JP', 'kk-KZ', 'kl-GL', 'ko-KR', 'lt-LT', 'ms-MY', 'nb-NO', 'ne-NP', 'nl-BE', 'nl-NL', 'nn-NO', 'pl-PL',\n * 'pt-BR', 'pt-PT', 'ro-RO', 'ru-RU', 'sl-SI', 'sk-SK', 'sr-RS', 'sv-SE', 'th-TH', 'tr-TR', 'uk-UA', 'vi-VN', 'zh-CN',\n * 'zh-HK', 'zh-MO', 'zh-TW']\n * If given value is not a string, then it returns false.\n */\nexport function IsMobilePhone(\n locale?: validator.MobilePhoneLocale,\n options?: validator.IsMobilePhoneOptions,\n validationOptions?: ValidationOptions\n): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_MOBILE_PHONE,\n constraints: [locale, options],\n validator: {\n validate: (value, args): boolean => isMobilePhone(value, args?.constraints[0], args?.constraints[1]),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property must be a phone number')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isISO31661Alpha2Validator from 'validator/lib/isISO31661Alpha2';\n\nexport const IS_ISO31661_ALPHA_2 = 'isISO31661Alpha2';\n\n/**\n * Check if the string is a valid [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) officially assigned country code.\n */\nexport function isISO31661Alpha2(value: unknown): boolean {\n return typeof value === 'string' && isISO31661Alpha2Validator(value);\n}\n\n/**\n * Check if the string is a valid [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) officially assigned country code.\n */\nexport function IsISO31661Alpha2(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_ISO31661_ALPHA_2,\n validator: {\n validate: (value, args): boolean => isISO31661Alpha2(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be a valid ISO31661 Alpha2 code')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isISO31661Alpha3Validator from 'validator/lib/isISO31661Alpha3';\n\nexport const IS_ISO31661_ALPHA_3 = 'isISO31661Alpha3';\n\n/**\n * Check if the string is a valid [ISO 3166-1 alpha-3](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3) officially assigned country code.\n */\nexport function isISO31661Alpha3(value: unknown): boolean {\n return typeof value === 'string' && isISO31661Alpha3Validator(value);\n}\n\n/**\n * Check if the string is a valid [ISO 3166-1 alpha-3](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3) officially assigned country code.\n */\nexport function IsISO31661Alpha3(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_ISO31661_ALPHA_3,\n validator: {\n validate: (value, args): boolean => isISO31661Alpha3(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be a valid ISO31661 Alpha3 code')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isMongoIdValidator from 'validator/lib/isMongoId';\n\nexport const IS_MONGO_ID = 'isMongoId';\n\n/**\n * Checks if the string is a valid hex-encoded representation of a MongoDB ObjectId.\n * If given value is not a string, then it returns false.\n */\nexport function isMongoId(value: unknown): boolean {\n return typeof value === 'string' && isMongoIdValidator(value);\n}\n\n/**\n * Checks if the string is a valid hex-encoded representation of a MongoDB ObjectId.\n * If given value is not a string, then it returns false.\n */\nexport function IsMongoId(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_MONGO_ID,\n validator: {\n validate: (value, args): boolean => isMongoId(value),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property must be a mongodb id')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isMultibyteValidator from 'validator/lib/isMultibyte';\n\nexport const IS_MULTIBYTE = 'isMultibyte';\n\n/**\n * Checks if the string contains one or more multibyte chars.\n * If given value is not a string, then it returns false.\n */\nexport function isMultibyte(value: unknown): boolean {\n return typeof value === 'string' && isMultibyteValidator(value);\n}\n\n/**\n * Checks if the string contains one or more multibyte chars.\n * If given value is not a string, then it returns false.\n */\nexport function IsMultibyte(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_MULTIBYTE,\n validator: {\n validate: (value, args): boolean => isMultibyte(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must contain one or more multibyte chars')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isSurrogatePairValidator from 'validator/lib/isSurrogatePair';\n\nexport const IS_SURROGATE_PAIR = 'isSurrogatePair';\n\n/**\n * Checks if the string contains any surrogate pairs chars.\n * If given value is not a string, then it returns false.\n */\nexport function isSurrogatePair(value: unknown): boolean {\n return typeof value === 'string' && isSurrogatePairValidator(value);\n}\n\n/**\n * Checks if the string contains any surrogate pairs chars.\n * If given value is not a string, then it returns false.\n */\nexport function IsSurrogatePair(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_SURROGATE_PAIR,\n validator: {\n validate: (value, args): boolean => isSurrogatePair(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must contain any surrogate pairs chars')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isUrlValidator from 'validator/lib/isURL';\nimport validator from 'validator';\nimport { t } from 'i18next';\n\nexport const IS_URL = 'isUrl';\n\n/**\n * Checks if the string is a url.\n * If given value is not a string, then it returns false.\n */\nexport function isURL(value: string, options?: validator.IsURLOptions): boolean {\n return typeof value === 'string' && isUrlValidator(value, options);\n}\n\n/**\n * Checks if the string is a url.\n * If given value is not a string, then it returns false.\n */\nexport function IsUrl(options?: validator.IsURLOptions, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_URL,\n constraints: [options],\n validator: {\n validate: (value, args): boolean => isURL(value, args?.constraints[0]),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property must be a URL address')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport isUuidValidator from 'validator/lib/isUUID';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport { ValidationOptions } from '../ValidationOptions';\n\nexport const IS_UUID = 'isUuid';\n\n/**\n * Checks if the string is a UUID (version 3, 4 or 5).\n * If given value is not a string, then it returns false.\n */\nexport function isUUID(value: unknown, version?: any): boolean {\n\treturn typeof value === 'string' && isUuidValidator(value, version);\n}\n\n/**\n * Checks if the string is a UUID (version 3, 4 or 5).\n * If given value is not a string, then it returns false.\n */\nexport function IsUUID(\n\tversion?: any,\n\tvalidationOptions?: ValidationOptions,\n): PropertyDecorator {\n\treturn ValidateBy(\n\t\t{\n\t\t\tname: IS_UUID,\n\t\t\tconstraints: [version],\n\t\t\tvalidator: {\n\t\t\t\tvalidate: (value, args): boolean => isUUID(value, args?.constraints[0]),\n\t\t\t\tdefaultMessage: buildMessage(\n\t\t\t\t\t(eachPrefix) =>\n\t\t\t\t\t\teachPrefix + `${t('archbase:$property must be a UUID')}`,\n\t\t\t\t\tvalidationOptions,\n\t\t\t\t),\n\t\t\t},\n\t\t},\n\t\tvalidationOptions,\n\t);\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const IS_FIREBASE_PUSH_ID = 'IsFirebasePushId';\n\n/**\n * Checks if the string is a Firebase Push Id\n * If given value is not a Firebase Push Id, it returns false\n */\nexport function isFirebasePushId(value: unknown): boolean {\n const webSafeRegex = /^[a-zA-Z0-9_-]*$/;\n return typeof value === 'string' && value.length === 20 && webSafeRegex.test(value);\n}\n\n/**\n * Checks if the string is a Firebase Push Id\n * If given value is not a Firebase Push Id, it returns false\n */\nexport function IsFirebasePushId(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_FIREBASE_PUSH_ID,\n validator: {\n validate: (value, args): boolean => isFirebasePushId(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be a Firebase Push Id')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isUppercaseValidator from 'validator/lib/isUppercase';\n\nexport const IS_UPPERCASE = 'isUppercase';\n\n/**\n * Checks if the string is uppercase.\n * If given value is not a string, then it returns false.\n */\nexport function isUppercase(value: unknown): boolean {\n return typeof value === 'string' && isUppercaseValidator(value);\n}\n\n/**\n * Checks if the string is uppercase.\n * If given value is not a string, then it returns false.\n */\nexport function IsUppercase(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_UPPERCASE,\n validator: {\n validate: (value, args): boolean => isUppercase(value),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property must be uppercase')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isLengthValidator from 'validator/lib/isLength';\n\nexport const IS_LENGTH = 'isLength';\n\n/**\n * Checks if the string's length falls in a range. Note: this function takes into account surrogate pairs.\n * If given value is not a string, then it returns false.\n */\nexport function length(value: unknown, min: number, max?: number): boolean {\n return typeof value === 'string' && isLengthValidator(value, { min, max });\n}\n\n/**\n * Checks if the string's length falls in a range. Note: this function takes into account surrogate pairs.\n * If given value is not a string, then it returns false.\n */\nexport function Length(min: number, max?: number, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_LENGTH,\n constraints: [min, max],\n validator: {\n validate: (value, args): boolean => length(value, args?.constraints[0], args?.constraints[1]),\n defaultMessage: buildMessage((eachPrefix, args) => {\n const isMinLength = args?.constraints[0] !== null && args?.constraints[0] !== undefined;\n const isMaxLength = args?.constraints[1] !== null && args?.constraints[1] !== undefined;\n if (isMinLength && (!args.value || args.value.length < args?.constraints[0])) {\n return eachPrefix + t('archbase:$property must be longer than or equal to $constraint1 characters');\n } else if (isMaxLength && args.value.length > args?.constraints[1]) {\n return eachPrefix + t('archbase:$property must be shorter than or equal to $constraint2 characters');\n }\n return (\n eachPrefix +\n t('archbase:$property must be longer than or equal to $constraint1 and shorter than or equal to $constraint2 characters')\n );\n }, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isLengthValidator from 'validator/lib/isLength';\n\nexport const MAX_LENGTH = 'maxLength';\n\n/**\n * Checks if the string's length is not more than given number. Note: this function takes into account surrogate pairs.\n * If given value is not a string, then it returns false.\n */\nexport function maxLength(value: unknown, max: number): boolean {\n return typeof value === 'string' && isLengthValidator(value, { min: 0, max });\n}\n\n/**\n * Checks if the string's length is not more than given number. Note: this function takes into account surrogate pairs.\n * If given value is not a string, then it returns false.\n */\nexport function MaxLength(max: number, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: MAX_LENGTH,\n constraints: [max],\n validator: {\n validate: (value, args): boolean => maxLength(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be shorter than or equal to $constraint1 characters')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isLengthValidator from 'validator/lib/isLength';\n\nexport const MIN_LENGTH = 'minLength';\n\n/**\n * Checks if the string's length is not less than given number. Note: this function takes into account surrogate pairs.\n * If given value is not a string, then it returns false.\n */\nexport function minLength(value: unknown, min: number): boolean {\n return typeof value === 'string' && isLengthValidator(value, { min });\n}\n\n/**\n * Checks if the string's length is not less than given number. Note: this function takes into account surrogate pairs.\n * If given value is not a string, then it returns false.\n */\nexport function MinLength(min: number, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: MIN_LENGTH,\n constraints: [min],\n validator: {\n validate: (value, args): boolean => minLength(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be longer than or equal to $constraint1 characters')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport matchesValidator from 'validator/lib/matches';\n\nexport const MATCHES = 'matches';\n\n/**\n * Checks if string matches the pattern. Either matches('foo', /foo/i).\n * If given value is not a string, then it returns false.\n */\nexport function matches(value: string, pattern: RegExp): boolean;\nexport function matches(value: string, pattern: string, modifiers: string): boolean;\nexport function matches(value: string, pattern: RegExp | string, modifiers?: string): boolean {\n return typeof value === 'string' && matchesValidator(value, pattern as unknown as any, modifiers);\n}\n\n/**\n * Checks if string matches the pattern. Either matches('foo', /foo/i)\n * If given value is not a string, then it returns false.\n */\nexport function Matches(pattern: RegExp, validationOptions?: ValidationOptions): PropertyDecorator;\nexport function Matches(pattern: string, modifiers?: string, validationOptions?: ValidationOptions): PropertyDecorator;\nexport function Matches(\n pattern: RegExp | string,\n modifiersOrAnnotationOptions?: string | ValidationOptions,\n validationOptions?: ValidationOptions\n): PropertyDecorator {\n let modifiers: string;\n if (modifiersOrAnnotationOptions && modifiersOrAnnotationOptions instanceof Object && !validationOptions) {\n validationOptions = modifiersOrAnnotationOptions;\n } else {\n modifiers = modifiersOrAnnotationOptions as string;\n }\n\n return ValidateBy(\n {\n name: MATCHES,\n constraints: [pattern, modifiers],\n validator: {\n validate: (value, args): boolean => matches(value, args?.constraints[0], args?.constraints[1]),\n defaultMessage: buildMessage(\n (eachPrefix, args) => eachPrefix + t('archbase:$property must match $constraint1 regular expression'),\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport { ValidationOptions } from '../ValidationOptions';\n\n// import { parsePhoneNumber, CountryCode } from 'libphonenumber-js/max';\n\nexport const IS_PHONE_NUMBER = 'isPhoneNumber';\n\n/**\n * Checks if the string is a valid phone number. To successfully validate any phone number the text must include\n * the intl. calling code, if the calling code wont be provided then the region must be set.\n *\n * @param value the potential phone number string to test\n * @param region 2 characters uppercase country code (e.g. DE, US, CH) for country specific validation.\n * If text doesn't start with the international calling code (e.g. +41), then you must set this parameter.\n */\nexport function isPhoneNumber(value: string, region?: any): boolean {\n\t// if (typeof value !== 'string' || value.trim() !== value) {\n\t// return false;\n\t// }\n\n\t// try {\n\t// const phoneNumber = parsePhoneNumber(value, region);\n\n\t// /**\n\t// * We fail the validation if the user provided a region code\n\t// * and it doesn't match with the country code of the parsed number.\n\t// **/\n\t// if (region && phoneNumber.country !== region) {\n\t// return false;\n\t// }\n\n\t// return phoneNumber.isValid();\n\t// } catch (error) {\n\t// return false;\n\t// }\n\treturn true;\n}\n\n/**\n * Checks if the string is a valid phone number. To successfully validate any phone number the text must include\n * the intl. calling code, if the calling code wont be provided then the region must be set.\n *\n * @param region 2 characters uppercase country code (e.g. DE, US, CH) for country specific validation.\n * If text doesn't start with the international calling code (e.g. +41), then you must set this parameter.\n */\nexport function IsPhoneNumber(\n\tregion?: any,\n\tvalidationOptions?: ValidationOptions,\n): PropertyDecorator {\n\treturn ValidateBy(\n\t\t{\n\t\t\tname: IS_PHONE_NUMBER,\n\t\t\tconstraints: [region],\n\t\t\tvalidator: {\n\t\t\t\tvalidate: (value, args): boolean =>\n\t\t\t\t\tisPhoneNumber(value, args?.constraints[0]),\n\t\t\t\tdefaultMessage: buildMessage(\n\t\t\t\t\t(eachPrefix) =>\n\t\t\t\t\t\teachPrefix +\n\t\t\t\t\t\t`${t('archbase:$property must be a valid phone number')}`,\n\t\t\t\t\tvalidationOptions,\n\t\t\t\t),\n\t\t\t},\n\t\t},\n\t\tvalidationOptions,\n\t);\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport matchesValidator from 'validator/lib/matches';\n\nexport const IS_MILITARY_TIME = 'isMilitaryTime';\n\n/**\n * Checks if the string represents a time without a given timezone in the format HH:MM (military)\n * If the given value does not match the pattern HH:MM, then it returns false.\n */\nexport function isMilitaryTime(value: unknown): boolean {\n const militaryTimeRegex = /^([01]\\d|2[0-3]):?([0-5]\\d)$/;\n return typeof value === 'string' && matchesValidator(value, militaryTimeRegex);\n}\n\n/**\n * Checks if the string represents a time without a given timezone in the format HH:MM (military)\n * If the given value does not match the pattern HH:MM, then it returns false.\n */\nexport function IsMilitaryTime(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_MILITARY_TIME,\n validator: {\n validate: (value, args): boolean => isMilitaryTime(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be a valid representation of military time in the format HH:MM')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isHashValidator from 'validator/lib/isHash';\nimport validator from 'validator';\nimport { t } from 'i18next';\n\nexport const IS_HASH = 'isHash';\n\n/**\n * Check if the string is a hash of type algorithm.\n * Algorithm is one of ['md4', 'md5', 'sha1', 'sha256', 'sha384', 'sha512', 'ripemd128', 'ripemd160', 'tiger128',\n * 'tiger160', 'tiger192', 'crc32', 'crc32b']\n */\nexport function isHash(value: unknown, algorithm: validator.HashAlgorithm): boolean {\n return typeof value === 'string' && isHashValidator(value, algorithm);\n}\n\n/**\n * Check if the string is a hash of type algorithm.\n * Algorithm is one of ['md4', 'md5', 'sha1', 'sha256', 'sha384', 'sha512', 'ripemd128', 'ripemd160', 'tiger128',\n * 'tiger160', 'tiger192', 'crc32', 'crc32b']\n */\nexport function IsHash(algorithm: string, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_HASH,\n constraints: [algorithm],\n validator: {\n validate: (value, args): boolean => isHash(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be a hash of type $constraint1')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isISSNValidator from 'validator/lib/isISSN';\nimport validator from 'validator';\nimport { t } from 'i18next';\n\nexport const IS_ISSN = 'isISSN';\n\n/**\n * Checks if the string is a ISSN.\n * If given value is not a string, then it returns false.\n */\nexport function isISSN(value: unknown, options?: validator.IsISSNOptions): boolean {\n return typeof value === 'string' && isISSNValidator(value, options);\n}\n\n/**\n * Checks if the string is a ISSN.\n * If given value is not a string, then it returns false.\n */\nexport function IsISSN(options?: validator.IsISSNOptions, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_ISSN,\n constraints: [options],\n validator: {\n validate: (value, args): boolean => isISSN(value, args?.constraints[0]),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property must be a ISSN')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport validator from 'validator';\nimport { isISO8601 } from './IsISO8601';\nimport { t } from 'i18next';\n\nexport const IS_DATE_STRING = 'isDateString';\n\n/**\n * Alias for IsISO8601 validator\n */\nexport function isDateString(value: unknown, options?: validator.IsISO8601Options): boolean {\n return isISO8601(value, options);\n}\n\n/**\n * Alias for IsISO8601 validator\n */\nexport function IsDateString(\n options?: validator.IsISO8601Options,\n validationOptions?: ValidationOptions\n): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_DATE_STRING,\n constraints: [options],\n validator: {\n validate: (value): boolean => isDateString(value, options),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be a valid ISO 8601 date string')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isBooleanValidator from 'validator/lib/isBoolean';\n\nexport const IS_BOOLEAN_STRING = 'isBooleanString';\n\n/**\n * Checks if a string is a boolean.\n * If given value is not a string, then it returns false.\n */\nexport function isBooleanString(value: unknown): boolean {\n return typeof value === 'string' && isBooleanValidator(value);\n}\n\n/**\n * Checks if a string is a boolean.\n * If given value is not a string, then it returns false.\n */\nexport function IsBooleanString(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_BOOLEAN_STRING,\n validator: {\n validate: (value, args): boolean => isBooleanString(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be a boolean string')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isNumericValidator from 'validator/lib/isNumeric';\nimport validator from 'validator';\nimport { t } from 'i18next';\n\nexport const IS_NUMBER_STRING = 'isNumberString';\n\n/**\n * Checks if the string is numeric.\n * If given value is not a string, then it returns false.\n */\nexport function isNumberString(value: unknown, options?: validator.IsNumericOptions): boolean {\n return typeof value === 'string' && isNumericValidator(value, options);\n}\n\n/**\n * Checks if the string is numeric.\n * If given value is not a string, then it returns false.\n */\nexport function IsNumberString(\n options?: validator.IsNumericOptions,\n validationOptions?: ValidationOptions\n): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_NUMBER_STRING,\n constraints: [options],\n validator: {\n validate: (value, args): boolean => isNumberString(value, args?.constraints[0]),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property must be a number string')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isBase32Validator from 'validator/lib/isBase32';\n\nexport const IS_BASE32 = 'isBase32';\n\n/**\n * Checks if a string is base32 encoded.\n * If given value is not a string, then it returns false.\n */\nexport function isBase32(value: unknown): boolean {\n return typeof value === 'string' && isBase32Validator(value);\n}\n\n/**\n * Check if a string is base32 encoded.\n * If given value is not a string, then it returns false.\n */\nexport function IsBase32(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_BASE32,\n validator: {\n validate: (value, args): boolean => isBase32(value),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property must be base32 encoded')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isBICValidator from 'validator/lib/isBIC';\n\nexport const IS_BIC = 'isBIC';\n\n/**\n * Check if a string is a BIC (Bank Identification Code) or SWIFT code.\n * If given value is not a string, then it returns false.\n */\nexport function isBIC(value: unknown): boolean {\n return typeof value === 'string' && isBICValidator(value);\n}\n\n/**\n * Check if a string is a BIC (Bank Identification Code) or SWIFT code.\n * If given value is not a string, then it returns false.\n */\nexport function IsBIC(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_BIC,\n validator: {\n validate: (value, args): boolean => isBIC(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be a BIC or SWIFT code')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isBtcAddressValidator from 'validator/lib/isBtcAddress';\n\nexport const IS_BTC_ADDRESS = 'isBtcAddress';\n\n/**\n * Check if the string is a valid BTC address.\n * If given value is not a string, then it returns false.\n */\nexport function isBtcAddress(value: unknown): boolean {\n return typeof value === 'string' && isBtcAddressValidator(value);\n}\n\n/**\n * Check if the string is a valid BTC address.\n * If given value is not a string, then it returns false.\n */\nexport function IsBtcAddress(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_BTC_ADDRESS,\n validator: {\n validate: (value, args): boolean => isBtcAddress(value),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property must be a BTC address')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isDataURIValidator from 'validator/lib/isDataURI';\n\nexport const IS_DATA_URI = 'isDataURI';\n\n/**\n * Check if the string is a data uri format.\n * If given value is not a string, then it returns false.\n */\nexport function isDataURI(value: unknown): boolean {\n return typeof value === 'string' && isDataURIValidator(value);\n}\n\n/**\n * Check if the string is a data uri format.\n * If given value is not a string, then it returns false.\n */\nexport function IsDataURI(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_DATA_URI,\n validator: {\n validate: (value, args): boolean => isDataURI(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be a data uri format')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isEANValidator from 'validator/lib/isEAN';\n\nexport const IS_EAN = 'isEAN';\n\n/**\n * Check if the string is an EAN (European Article Number).\n * If given value is not a string, then it returns false.\n */\nexport function isEAN(value: unknown): boolean {\n return typeof value === 'string' && isEANValidator(value);\n}\n\n/**\n * Check if the string is an EAN (European Article Number).\n * If given value is not a string, then it returns false.\n */\nexport function IsEAN(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_EAN,\n validator: {\n validate: (value, args): boolean => isEAN(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be an EAN (European Article Number)')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isEthereumAddressValidator from 'validator/lib/isEthereumAddress';\n\nexport const IS_ETHEREUM_ADDRESS = 'isEthereumAddress';\n\n/**\n * Check if the string is an Ethereum address using basic regex. Does not validate address checksums.\n * If given value is not a string, then it returns false.\n */\nexport function isEthereumAddress(value: unknown): boolean {\n return typeof value === 'string' && isEthereumAddressValidator(value);\n}\n\n/**\n * Check if the string is an Ethereum address using basic regex. Does not validate address checksums.\n * If given value is not a string, then it returns false.\n */\nexport function IsEthereumAddress(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_ETHEREUM_ADDRESS,\n validator: {\n validate: (value, args): boolean => isEthereumAddress(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be an Ethereum address')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isHSLValidator from 'validator/lib/isHSL';\n\nexport const IS_HSL = 'isHSL';\n\n/**\n * Check if the string is an HSL (hue, saturation, lightness, optional alpha) color based on CSS Colors Level 4 specification.\n * Comma-separated format supported. Space-separated format supported with the exception of a few edge cases (ex: hsl(200grad+.1%62%/1)).\n * If given value is not a string, then it returns false.\n */\nexport function isHSL(value: unknown): boolean {\n return typeof value === 'string' && isHSLValidator(value);\n}\n\n/**\n * Check if the string is an HSL (hue, saturation, lightness, optional alpha) color based on CSS Colors Level 4 specification.\n * Comma-separated format supported. Space-separated format supported with the exception of a few edge cases (ex: hsl(200grad+.1%62%/1)).\n * If given value is not a string, then it returns false.\n */\nexport function IsHSL(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_HSL,\n validator: {\n validate: (value, args): boolean => isHSL(value),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property must be a HSL color')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isIBANValidator from 'validator/lib/isIBAN';\n\nexport const IS_IBAN = 'isIBAN';\n\n/**\n * Check if a string is a IBAN (International Bank Account Number).\n * If given value is not a string, then it returns false.\n */\nexport function isIBAN(value: unknown): boolean {\n return typeof value === 'string' && isIBANValidator(value);\n}\n\n/**\n * Check if a string is a IBAN (International Bank Account Number).\n * If given value is not a string, then it returns false.\n */\nexport function IsIBAN(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_IBAN,\n validator: {\n validate: (value, args): boolean => isIBAN(value),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property must be an IBAN')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isIdentityCardValidator from 'validator/lib/isIdentityCard';\nimport validator from 'validator';\nimport { t } from 'i18next';\n\nexport const IS_IDENTITY_CARD = 'isIdentityCard';\n\n/**\n * Check if the string is a valid identity card code.\n * locale is one of ['ES', 'zh-TW', 'he-IL', 'ar-TN'] OR 'any'. If 'any' is used, function will check if any of the locals match.\n * Defaults to 'any'.\n * If given value is not a string, then it returns false.\n */\nexport function isIdentityCard(value: unknown, locale: validator.IdentityCardLocale): boolean {\n return typeof value === 'string' && isIdentityCardValidator(value, locale);\n}\n\n/**\n * Check if the string is a valid identity card code.\n * locale is one of ['ES', 'zh-TW', 'he-IL', 'ar-TN'] OR 'any'. If 'any' is used, function will check if any of the locals match.\n * Defaults to 'any'.\n * If given value is not a string, then it returns false.\n */\nexport function IsIdentityCard(\n locale?: validator.IdentityCardLocale,\n validationOptions?: ValidationOptions\n): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_IDENTITY_CARD,\n constraints: [locale],\n validator: {\n validate: (value, args): boolean => isIdentityCard(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be a identity card number')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isISRCValidator from 'validator/lib/isISRC';\n\nexport const IS_ISRC = 'isISRC';\n\n/**\n * Check if the string is a ISRC.\n * If given value is not a string, then it returns false.\n */\nexport function isISRC(value: unknown): boolean {\n return typeof value === 'string' && isISRCValidator(value);\n}\n\n/**\n * Check if the string is a ISRC.\n * If given value is not a string, then it returns false.\n */\nexport function IsISRC(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_ISRC,\n validator: {\n validate: (value, args): boolean => isISRC(value),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property must be an ISRC')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isLocaleValidator from 'validator/lib/isLocale';\n\nexport const IS_LOCALE = 'isLocale';\n\n/**\n * Check if the string is a locale.\n * If given value is not a string, then it returns false.\n */\nexport function isLocale(value: unknown): boolean {\n return typeof value === 'string' && isLocaleValidator(value);\n}\n\n/**\n * Check if the string is a locale.\n * If given value is not a string, then it returns false.\n */\nexport function IsLocale(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_LOCALE,\n validator: {\n validate: (value, args): boolean => isLocale(value),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property must be locale')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isMagnetURIValidator from 'validator/lib/isMagnetURI';\n\nexport const IS_MAGNET_URI = 'isMagnetURI';\n\n/**\n * Check if the string is a magnet uri format.\n * If given value is not a string, then it returns false.\n */\nexport function isMagnetURI(value: unknown): boolean {\n return typeof value === 'string' && isMagnetURIValidator(value);\n}\n\n/**\n * Check if the string is a magnet uri format.\n * If given value is not a string, then it returns false.\n */\nexport function IsMagnetURI(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_MAGNET_URI,\n validator: {\n validate: (value, args): boolean => isMagnetURI(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be magnet uri format')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isMimeTypeValidator from 'validator/lib/isMimeType';\n\nexport const IS_MIME_TYPE = 'isMimeType';\n\n/**\n * Check if the string matches to a valid MIME type format\n * If given value is not a string, then it returns false.\n */\nexport function isMimeType(value: unknown): boolean {\n return typeof value === 'string' && isMimeTypeValidator(value);\n}\n\n/**\n * Check if the string matches to a valid MIME type format\n * If given value is not a string, then it returns false.\n */\nexport function IsMimeType(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_MIME_TYPE,\n validator: {\n validate: (value, args): boolean => isMimeType(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be MIME type format')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isOctalValidator from 'validator/lib/isOctal';\n\nexport const IS_OCTAL = 'isOctal';\n\n/**\n * Check if the string is a valid octal number.\n * If given value is not a string, then it returns false.\n */\nexport function isOctal(value: unknown): boolean {\n return typeof value === 'string' && isOctalValidator(value);\n}\n\n/**\n * Check if the string is a valid octal number.\n * If given value is not a string, then it returns false.\n */\nexport function IsOctal(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_OCTAL,\n validator: {\n validate: (value, args): boolean => isOctal(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be valid octal number')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isPassportNumberValidator from 'validator/lib/isPassportNumber';\n\nexport const IS_PASSPORT_NUMBER = 'isPassportNumber';\n\n/**\n * Check if the string is a valid passport number relative to a specific country code.\n * If given value is not a string, then it returns false.\n */\nexport function isPassportNumber(value: unknown, countryCode: string): boolean {\n return typeof value === 'string' && isPassportNumberValidator(value, countryCode);\n}\n\n/**\n * Check if the string is a valid passport number relative to a specific country code.\n * If given value is not a string, then it returns false.\n */\nexport function IsPassportNumber(countryCode: string, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_PASSPORT_NUMBER,\n constraints: [countryCode],\n validator: {\n validate: (value, args): boolean => isPassportNumber(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be valid passport number')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isPostalCodeValidator from 'validator/lib/isPostalCode';\nimport validator from 'validator';\nimport { t } from 'i18next';\n\nexport const IS_POSTAL_CODE = 'isPostalCode';\n\n/**\n * Check if the string is a postal code, in the specified locale.\n * If given value is not a string, then it returns false.\n */\nexport function isPostalCode(value: unknown, locale: 'any' | validator.PostalCodeLocale): boolean {\n return typeof value === 'string' && isPostalCodeValidator(value, locale);\n}\n\n/**\n * Check if the string is a postal code, in the specified locale.\n * If given value is not a string, then it returns false.\n */\nexport function IsPostalCode(\n locale?: 'any' | validator.PostalCodeLocale,\n validationOptions?: ValidationOptions\n): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_POSTAL_CODE,\n constraints: [locale],\n validator: {\n validate: (value, args): boolean => isPostalCode(value, args?.constraints[0]),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property must be a postal code')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isRFC3339Validator from 'validator/lib/isRFC3339';\n\nexport const IS_RFC_3339 = 'isRFC3339';\n\n/**\n * Check if the string is a valid RFC 3339 date.\n * If given value is not a string, then it returns false.\n */\nexport function isRFC3339(value: unknown): boolean {\n return typeof value === 'string' && isRFC3339Validator(value);\n}\n\n/**\n * Check if the string is a valid RFC 3339 date.\n * If given value is not a string, then it returns false.\n */\nexport function IsRFC3339(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_RFC_3339,\n validator: {\n validate: (value, args): boolean => isRFC3339(value),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property must be RFC 3339 date')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isRgbColorValidator from 'validator/lib/isRgbColor';\n\nexport const IS_RGB_COLOR = 'isRgbColor';\n\n/**\n * Check if the string is a rgb or rgba color.\n * `includePercentValues` defaults to true. If you don't want to allow to set rgb or rgba values with percents, like rgb(5%,5%,5%), or rgba(90%,90%,90%,.3), then set it to false.\n * If given value is not a string, then it returns false.\n */\nexport function isRgbColor(value: unknown, includePercentValues?: boolean): boolean {\n return typeof value === 'string' && isRgbColorValidator(value, includePercentValues);\n}\n\n/**\n * Check if the string is a rgb or rgba color.\n * `includePercentValues` defaults to true. If you don't want to allow to set rgb or rgba values with percents, like rgb(5%,5%,5%), or rgba(90%,90%,90%,.3), then set it to false.\n * If given value is not a string, then it returns false.\n */\nexport function IsRgbColor(includePercentValues?: boolean, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_RGB_COLOR,\n constraints: [includePercentValues],\n validator: {\n validate: (value, args): boolean => isRgbColor(value, args?.constraints[0]),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property must be RGB color')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isSemVerValidator from 'validator/lib/isSemVer';\n\nexport const IS_SEM_VER = 'isSemVer';\n\n/**\n * Check if the string is a Semantic Versioning Specification (SemVer).\n * If given value is not a string, then it returns false.\n */\nexport function isSemVer(value: unknown): boolean {\n return typeof value === 'string' && isSemVerValidator(value);\n}\n\n/**\n * Check if the string is a Semantic Versioning Specification (SemVer).\n * If given value is not a string, then it returns false.\n */\nexport function IsSemVer(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_SEM_VER,\n validator: {\n validate: (value, args): boolean => isSemVer(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be a Semantic Versioning Specification')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import validator from 'validator';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport { t } from 'i18next';\n\nexport const IS_STRONG_PASSWORD = 'isStrongPassword';\n\n/**\n * Options to be passed to IsStrongPassword decorator.\n */\nexport type IsStrongPasswordOptions = Pick<\n validator.StrongPasswordOptions,\n 'minLength' | 'minLowercase' | 'minUppercase' | 'minNumbers' | 'minSymbols'\n>;\n\n/**\n * Checks if the string is a strong password.\n * If given value is not a string, then it returns false.\n */\nexport function isStrongPassword(value: unknown, options?: IsStrongPasswordOptions): boolean {\n return typeof value === 'string' && validator.isStrongPassword(value, options);\n}\n\n/**\n * Checks if the string is a strong password.\n * If given value is not a string, then it returns false.\n */\nexport function IsStrongPassword(\n options?: IsStrongPasswordOptions,\n validationOptions?: ValidationOptions\n): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_STRONG_PASSWORD,\n constraints: [options],\n validator: {\n validate: (value, args): boolean => isStrongPassword(value, args.constraints[0]),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property is not strong enough')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const IS_TIMEZONE = 'isTimeZone';\n\n/**\n * Checks if the string represents a valid IANA timezone\n * If the given value is not a valid IANA timezone, then it returns false.\n */\nexport function isTimeZone(value: unknown): boolean {\n try {\n if (typeof value !== 'string') {\n return false;\n }\n\n /** Specifying an invalid time-zone will raise a `RangeError: Invalid time zone specified` error. */\n Intl.DateTimeFormat(undefined, { timeZone: value });\n\n return true;\n } catch (exception) {\n return false;\n }\n}\n\n/**\n * Checks if the string represents a valid IANA timezone\n * If the given value is not a valid IANA timezone, then it returns false.\n */\nexport function IsTimeZone(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_TIMEZONE,\n validator: {\n validate: (value, args): boolean => isTimeZone(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be a valid IANA time-zone')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isBase58Validator from 'validator/lib/isBase58';\n\nexport const IS_BASE58 = 'isBase58';\n\n/**\n * Checks if a string is base58 encoded.\n * If given value is not a string, then it returns false.\n */\nexport function isBase58(value: unknown): boolean {\n return typeof value === 'string' && isBase58Validator(value);\n}\n\n/**\n * Checks if a string is base58 encoded.\n * If given value is not a string, then it returns false.\n */\nexport function IsBase58(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_BASE58,\n validator: {\n validate: (value, args): boolean => isBase58(value),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property must be base58 encoded')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isTaxIDValidator from 'validator/lib/isTaxID';\n\nexport const IS_TAX_ID = 'isTaxId';\n\n/**\n * Checks if the string is a valid tax ID. Default locale is `en-US`.\n * If given value is not a string, then it returns false.\n *\n * Supported locales: bg-BG, cs-CZ, de-AT, de-DE, dk-DK, el-CY, el-GR, en-CA,\n * en-IE, en-US, es-ES, et-EE, fi-FI, fr-BE, fr-FR, fr-LU, hr-HR, hu-HU, it-IT,\n * lv-LV, mt-MT, nl-NL, pl-PL, pt-BR, pt-PT, ro-RO, sk-SK, sl-SI, sv-SE.\n */\nexport function isTaxId(value: unknown, locale?: string): boolean {\n return typeof value === 'string' && isTaxIDValidator(value, locale || 'en-US');\n}\n\n/**\n * Checks if the string is a valid tax ID. Default locale is `en-US`.\n * If given value is not a string, then it returns false.\n *\n * Supported locales: bg-BG, cs-CZ, de-AT, de-DE, dk-DK, el-CY, el-GR, en-CA,\n * en-IE, en-US, es-ES, et-EE, fi-FI, fr-BE, fr-FR, fr-LU, hr-HR, hu-HU, it-IT,\n * lv-LV, mt-MT, nl-NL, pl-PL, pt-BR, pt-PT, ro-RO, sk-SK, sl-SI, sv-SE.\n */\nexport function IsTaxId(locale?: string, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_TAX_ID,\n constraints: [locale],\n validator: {\n validate: (value, args): boolean => isTaxId(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be a Tax Identification Number')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isISO4217Validator from 'validator/lib/isISO4217';\n\nexport const IS_ISO4217_CURRENCY_CODE = 'isISO4217CurrencyCode';\n\n/**\n * Check if the string is a valid [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) officially assigned currency code.\n */\nexport function isISO4217CurrencyCode(value: unknown): boolean {\n return typeof value === 'string' && isISO4217Validator(value);\n}\n\n/**\n * Check if the string is a valid [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) officially assigned currency code.\n */\nexport function IsISO4217CurrencyCode(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_ISO4217_CURRENCY_CODE,\n validator: {\n validate: (value, args): boolean => isISO4217CurrencyCode(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be a valid ISO4217 currency code')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const IS_BOOLEAN = 'isBoolean';\n\n/**\n * Checks if a given value is a boolean.\n */\nexport function isBoolean(value: unknown): value is boolean {\n return value instanceof Boolean || typeof value === 'boolean';\n}\n\n/**\n * Checks if a value is a boolean.\n */\nexport function IsBoolean(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_BOOLEAN,\n validator: {\n validate: (value, args): boolean => isBoolean(value),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property must be a boolean value')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const IS_DATE = 'isDate';\n\n/**\n * Checks if a given value is a date.\n */\nexport function isDate(value: unknown): value is Date {\n return value instanceof Date && !isNaN(value.getTime());\n}\n\n/**\n * Checks if a value is a date.\n */\nexport function IsDate(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_DATE,\n validator: {\n validate: (value, args): boolean => isDate(value),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property must be a Date instance')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const IS_NUMBER = 'isNumber';\n\n/**\n * Options to be passed to IsNumber decorator.\n */\nexport interface IsNumberOptions {\n allowNaN?: boolean;\n allowInfinity?: boolean;\n maxDecimalPlaces?: number;\n}\n\n/**\n * Checks if a given value is a number.\n */\nexport function isNumber(value: unknown, options: IsNumberOptions = {}): value is number {\n if (typeof value !== 'number') {\n return false;\n }\n\n if (value === Infinity || value === -Infinity) {\n return !!options.allowInfinity;\n }\n\n if (Number.isNaN(value)) {\n return !!options.allowNaN;\n }\n\n if (options.maxDecimalPlaces !== undefined) {\n let decimalPlaces = 0;\n if (value % 1 !== 0) {\n decimalPlaces = value.toString().split('archbase:.')[1].length;\n }\n if (decimalPlaces > options.maxDecimalPlaces) {\n return false;\n }\n }\n\n return Number.isFinite(value);\n}\n\n/**\n * Checks if a value is a number.\n */\nexport function IsNumber(options: IsNumberOptions = {}, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_NUMBER,\n constraints: [options],\n validator: {\n validate: (value, args): boolean => isNumber(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be a number conforming to the specified constraints')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const IS_ENUM = 'isEnum';\n\n/**\n * Checks if a given value is the member of the provided enum.\n */\nexport function isEnum(value: unknown, entity: any): boolean {\n const enumValues = Object.keys(entity).map(k => entity[k]);\n return enumValues.includes(value);\n}\n\n/**\n * Returns the possible values from an enum (both simple number indexed and string indexed enums).\n */\nfunction validEnumValues(entity: any): string[] {\n return Object.entries(entity)\n .filter(([key, value]) => isNaN(parseInt(key)))\n .map(([key, value]) => value as string);\n}\n\n/**\n * Checks if a given value is the member of the provided enum.\n */\nexport function IsEnum(entity: object, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_ENUM,\n constraints: [entity, validEnumValues(entity)],\n validator: {\n validate: (value, args): boolean => isEnum(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be one of the following values: $constraint2')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const IS_INT = 'isInt';\n\n/**\n * Checks if value is an integer.\n */\nexport function isInt(val: unknown): val is Number {\n return typeof val === 'number' && Number.isInteger(val);\n}\n\n/**\n * Checks if value is an integer.\n */\nexport function IsInt(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_INT,\n validator: {\n validate: (value, args): boolean => isInt(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be an integer number')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const IS_STRING = 'isString';\n\n/**\n * Checks if a given value is a real string.\n */\nexport function isString(value: unknown): value is string {\n return value instanceof String || typeof value === 'string';\n}\n\n/**\n * Checks if a given value is a real string.\n */\nexport function IsString(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_STRING,\n validator: {\n validate: (value, args): boolean => isString(value),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property must be a string')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const IS_ARRAY = 'isArray';\n\n/**\n * Checks if a given value is an array\n */\nexport function isArray<T = any>(value: unknown): value is Array<T> {\n return Array.isArray(value);\n}\n\n/**\n * Checks if a given value is an array\n */\nexport function IsArray(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_ARRAY,\n validator: {\n validate: (value, args): boolean => isArray(value),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property must be an array')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const IS_OBJECT = 'isObject';\n\n/**\n * Checks if the value is valid Object.\n * Returns false if the value is not an object.\n */\nexport function isObject<T = object>(value: unknown): value is T {\n return value != null && (typeof value === 'object' || typeof value === 'function') && !Array.isArray(value);\n}\n\n/**\n * Checks if the value is valid Object.\n * Returns false if the value is not an object.\n */\nexport function IsObject(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_OBJECT,\n validator: {\n validate: (value, args): boolean => isObject(value),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property must be an object')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const ARRAY_CONTAINS = 'arrayContains';\n\n/**\n * Checks if array contains all values from the given array of values.\n * If null or undefined is given then this function returns false.\n */\nexport function arrayContains(array: unknown, values: any[]): boolean {\n if (!Array.isArray(array)) return false;\n\n return values.every(value => array.indexOf(value) !== -1);\n}\n\n/**\n * Checks if array contains all values from the given array of values.\n * If null or undefined is given then this function returns false.\n */\nexport function ArrayContains(values: any[], validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: ARRAY_CONTAINS,\n constraints: [values],\n validator: {\n validate: (value, args): boolean => arrayContains(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must contain $constraint1 values')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const ARRAY_NOT_CONTAINS = 'arrayNotContains';\n\n/**\n * Checks if array does not contain any of the given values.\n * If null or undefined is given then this function returns false.\n */\nexport function arrayNotContains(array: unknown, values: any[]): boolean {\n if (!Array.isArray(array)) return false;\n\n return values.every(value => array.indexOf(value) === -1);\n}\n\n/**\n * Checks if array does not contain any of the given values.\n * If null or undefined is given then this function returns false.\n */\nexport function ArrayNotContains(values: any[], validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: ARRAY_NOT_CONTAINS,\n constraints: [values],\n validator: {\n validate: (value, args): boolean => arrayNotContains(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property should not contain $constraint1 values')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const ARRAY_NOT_EMPTY = 'arrayNotEmpty';\n\n/**\n * Checks if given array is not empty.\n * If null or undefined is given then this function returns false.\n */\nexport function arrayNotEmpty(array: unknown): boolean {\n return Array.isArray(array) && array.length > 0;\n}\n\n/**\n * Checks if given array is not empty.\n * If null or undefined is given then this function returns false.\n */\nexport function ArrayNotEmpty(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: ARRAY_NOT_EMPTY,\n validator: {\n validate: (value, args): boolean => arrayNotEmpty(value),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t('archbase:$property should not be empty')}`, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const ARRAY_MIN_SIZE = 'arrayMinSize';\n\n/**\n * Checks if the array's length is greater than or equal to the specified number.\n * If null or undefined is given then this function returns false.\n */\nexport function arrayMinSize(array: unknown, min: number): boolean {\n return Array.isArray(array) && array.length >= min;\n}\n\n/**\n * Checks if the array's length is greater than or equal to the specified number.\n * If null or undefined is given then this function returns false.\n */\nexport function ArrayMinSize(min: number, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: ARRAY_MIN_SIZE,\n constraints: [min],\n validator: {\n validate: (value, args): boolean => arrayMinSize(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must contain at least $constraint1 elements')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const ARRAY_MAX_SIZE = 'arrayMaxSize';\n\n/**\n * Checks if the array's length is less or equal to the specified number.\n * If null or undefined is given then this function returns false.\n */\nexport function arrayMaxSize(array: unknown, max: number): boolean {\n return Array.isArray(array) && array.length <= max;\n}\n\n/**\n * Checks if the array's length is less or equal to the specified number.\n * If null or undefined is given then this function returns false.\n */\nexport function ArrayMaxSize(max: number, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: ARRAY_MAX_SIZE,\n constraints: [max],\n validator: {\n validate: (value, args): boolean => arrayMaxSize(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must contain no more than $constraint1 elements')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const ARRAY_UNIQUE = 'arrayUnique';\nexport type ArrayUniqueIdentifier<T = any> = (o: T) => any;\n\n/**\n * Checks if all array's values are unique. Comparison for objects is reference-based.\n * If null or undefined is given then this function returns false.\n */\nexport function arrayUnique(array: unknown[], identifier?: ArrayUniqueIdentifier): boolean {\n if (!Array.isArray(array)) return false;\n\n if (identifier) {\n array = array.map(o => (o != null ? identifier(o) : o));\n }\n\n const uniqueItems = array.filter((a, b, c) => c.indexOf(a) === b);\n return array.length === uniqueItems.length;\n}\n\n/**\n * Checks if all array's values are unique. Comparison for objects is reference-based.\n * If null or undefined is given then this function returns false.\n */\nexport function ArrayUnique<T = any>(\n identifierOrOptions?: ArrayUniqueIdentifier<T> | ValidationOptions,\n validationOptions?: ValidationOptions\n): PropertyDecorator {\n const identifier = typeof identifierOrOptions === 'function' ? identifierOrOptions : undefined;\n const options = typeof identifierOrOptions !== 'function' ? identifierOrOptions : validationOptions;\n\n return ValidateBy(\n {\n name: ARRAY_UNIQUE,\n validator: {\n validate: (value, args): boolean => arrayUnique(value, identifier),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + `${t(\"archbase:All $property's elements must be unique\")}`, options),\n },\n },\n options\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport { isObject } from '../typechecker/IsObject';\n\nexport const IS_NOT_EMPTY_OBJECT = 'isNotEmptyObject';\n\n/**\n * Checks if the value is valid Object & not empty.\n * Returns false if the value is not an object or an empty valid object.\n */\nexport function isNotEmptyObject(value: unknown, options?: { nullable?: boolean }): boolean {\n if (!isObject(value)) {\n return false;\n }\n\n if (options?.nullable === false) {\n return !Object.values(value).every(propertyValue => propertyValue === null || propertyValue === undefined);\n }\n\n for (const key in value) {\n if (value.hasOwnProperty(key)) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Checks if the value is valid Object & not empty.\n * Returns false if the value is not an object or an empty valid object.\n */\nexport function IsNotEmptyObject(\n options?: { nullable?: boolean },\n validationOptions?: ValidationOptions\n): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_NOT_EMPTY_OBJECT,\n constraints: [options],\n validator: {\n validate: (value, args): boolean => isNotEmptyObject(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + `${t('archbase:$property must be a non-empty object')}`,\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { t } from 'i18next';\nimport { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const IS_INSTANCE = 'isInstance';\n\n/**\n * Checks if the value is an instance of the specified object.\n */\nexport function isInstance(object: unknown, targetTypeConstructor: new (...args: any[]) => any): boolean {\n return (\n targetTypeConstructor && typeof targetTypeConstructor === 'function' && object instanceof targetTypeConstructor\n );\n}\n\n/**\n * Checks if the value is an instance of the specified object.\n */\nexport function IsInstance(\n targetType: new (...args: any[]) => any,\n validationOptions?: ValidationOptions\n): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_INSTANCE,\n constraints: [targetType],\n validator: {\n validate: (value, args): boolean => isInstance(value, args?.constraints[0]),\n defaultMessage: buildMessage((eachPrefix, args) => {\n if (args?.constraints[0]) {\n return eachPrefix + t(`$property must be an instance of ${args?.constraints[0].name as string}`);\n } else {\n return eachPrefix + t(`${IS_INSTANCE} decorator expects and object as value, but got falsy value.`);\n }\n }, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { ValidationError } from './validation/ValidationError';\nimport { ValidatorOptions } from './validation/ValidatorOptions';\nimport { ValidationSchema } from './validation-schema/ValidationSchema';\nimport { getMetadataStorage } from './metadata/MetadataStorage';\nimport { Validator } from './validation/Validator';\nimport { getFromContainer } from './container';\n\nexport * from './container';\nexport * from './decorator/decorators';\nexport * from './decorator/ValidationOptions';\nexport * from './validation/ValidatorConstraintInterface';\nexport * from './validation/ValidationError';\nexport * from './validation/ValidatorOptions';\nexport * from './validation/ValidationArguments';\nexport * from './validation/ValidationTypes';\nexport * from './validation/Validator';\nexport * from './validation-schema/ValidationSchema';\nexport * from './register-decorator';\nexport * from './metadata/MetadataStorage';\nexport { ArchbaseValidator } from './ArchbaseValidator';\nexport type { DataSourceValidationError, IDataSourceValidator } from './ArchbaseValidator';\n\n// -------------------------------------------------------------------------\n// Métodos de atalho para usuários de API\n// -------------------------------------------------------------------------\n\n/**\n * Valida determinado objeto.\n */\nexport function validate(object: object, validatorOptions?: ValidatorOptions): Promise<ValidationError[]>;\n\n/**\n * Valida determinado objeto por um determinado esquema de validação.\n */\nexport function validate(\n schemaName: string,\n object: object,\n validatorOptions?: ValidatorOptions\n): Promise<ValidationError[]>;\n\n/**\n * Valida determinado objeto pelos decoradores do objeto ou determinado esquema de validação.\n */\nexport function validate(\n schemaNameOrObject: object | string,\n objectOrValidationOptions?: object | ValidatorOptions,\n maybeValidatorOptions?: ValidatorOptions\n): Promise<ValidationError[]> {\n if (typeof schemaNameOrObject === 'string') {\n return getFromContainer(Validator).validate(\n schemaNameOrObject,\n objectOrValidationOptions as object,\n maybeValidatorOptions\n );\n } else {\n return getFromContainer(Validator).validate(schemaNameOrObject, objectOrValidationOptions as ValidatorOptions);\n }\n}\n\n/**\n * Valida determinado objeto e rejeita em caso de erro.\n */\nexport function validateOrReject(object: object, validatorOptions?: ValidatorOptions): Promise<void>;\n\n/**\n * Valida determinado objeto por um determinado esquema de validação e rejeita em caso de erro.\n */\nexport function validateOrReject(\n schemaName: string,\n object: object,\n validatorOptions?: ValidatorOptions\n): Promise<void>;\n\n/**\n * Valida determinado objeto pelos decoradores do objeto ou determinado esquema de validação e rejeita em caso de erro.\n */\nexport function validateOrReject(\n schemaNameOrObject: object | string,\n objectOrValidationOptions?: object | ValidatorOptions,\n maybeValidatorOptions?: ValidatorOptions\n): Promise<void> {\n if (typeof schemaNameOrObject === 'string') {\n return getFromContainer(Validator).validateOrReject(\n schemaNameOrObject,\n objectOrValidationOptions as object,\n maybeValidatorOptions\n );\n } else {\n return getFromContainer(Validator).validateOrReject(\n schemaNameOrObject,\n objectOrValidationOptions as ValidatorOptions\n );\n }\n}\n\n/**\n * Executa a validação de sincronização do objeto fornecido.\n * Observe que este método ignora completamente as validações assíncronas.\n * Se você deseja realizar a validação corretamente, você precisa chamar o método activate.\n */\nexport function validateSync(object: object, validatorOptions?: ValidatorOptions): ValidationError[];\n\n/**\n * Valida determinado objeto por um determinado esquema de validação.\n * Observe que este método ignora completamente as validações assíncronas.\n * Se você deseja realizar a validação corretamente, você precisa chamar o método activate.\n */\nexport function validateSync(\n schemaName: string,\n object: object,\n validatorOptions?: ValidatorOptions\n): ValidationError[];\n\n/**\n * Valida determinado objeto pelos decoradores do objeto ou determinado esquema de validação.\n * Observe que este método ignora completamente as validações assíncronas.\n * Se você deseja realizar a validação corretamente, você precisa chamar o método activate.\n */\nexport function validateSync(\n schemaNameOrObject: object | string,\n objectOrValidationOptions?: object | ValidatorOptions,\n maybeValidatorOptions?: ValidatorOptions\n): ValidationError[] {\n if (typeof schemaNameOrObject === 'string') {\n return getFromContainer(Validator).validateSync(\n schemaNameOrObject,\n objectOrValidationOptions as object,\n maybeValidatorOptions\n );\n } else {\n return getFromContainer(Validator).validateSync(schemaNameOrObject, objectOrValidationOptions as ValidatorOptions);\n }\n}\n\n/**\n * Registra um novo esquema de validação.\n */\nexport function registerSchema(schema: ValidationSchema): void {\n getMetadataStorage().addValidationSchema(schema);\n}\n","// Removed circular dependency - interfaces moved to local definitions\n\n// Local interfaces to avoid circular dependency\nexport interface DataSourceValidationError {\n errorMessage: string;\n debugMessage: string;\n fieldName: string;\n}\n\nexport interface IDataSourceValidator {\n validateEntity<T>(value: T): DataSourceValidationError[];\n}\nimport { ValidatorOptions, ValidationError, validateSync, validate, validateOrReject } from './index'\n\nexport class ArchbaseValidator implements IDataSourceValidator {\n constructor() {}\n validateEntity<T>(value: T): DataSourceValidationError[] {\n const errors : ValidationError[] = validateSync(value as object);\n const result : DataSourceValidationError[] = [];\n\n errors.forEach(error => {\n if (error.constraints){\n for (const [key, constraintMessage] of Object.entries(error.constraints)) {\n result.push({\n errorMessage: constraintMessage,\n debugMessage: `key: ${key} value: ${constraintMessage}`,\n fieldName: error.property\n })\n }\n }\n })\n\n return result\n }\n\n /**\n * Valida determinado objeto.\n */\n public validate(object, validatorOptions?: ValidatorOptions): Promise<ValidationError[]> {\n return validate(object, validatorOptions)\n }\n\n /**\n * Valida determinado objeto e rejeita em caso de erro.\n */\n public validateOrReject(object: object, validatorOptions?: ValidatorOptions): Promise<void> {\n return validateOrReject(object, validatorOptions)\n }\n}\n","import { useState } from 'react';\nimport { ArchbaseValidator } from '../validator/ArchbaseValidator';\n\nexport const useArchbaseValidator = () => {\n\tconst [instance, setInstance] = useState<ArchbaseValidator>();\n\n\tif (!instance) {\n\t\tconst newInstance = new ArchbaseValidator();\n\t\tsetInstance(newInstance);\n\t\treturn newInstance;\n\t}\n\n\treturn instance;\n};\n","import React from 'react';\n\nexport function useArchbaseAsyncFunction<T>(asyncFunction: () => Promise<T>, defaultValue: T): [T, string | null, boolean] {\n const [state, setState] = React.useState({\n value: defaultValue,\n error: null,\n isPending: true,\n });\n\n React.useEffect(() => {\n asyncFunction()\n .then((value) => setState({ value, error: null, isPending: false }))\n .catch((error) => setState({ value: defaultValue, error: error.toString(), isPending: false }));\n }, [asyncFunction, defaultValue]);\n\n const { value, error, isPending } = state;\n\n return [value, error, isPending];\n}\n","import * as React from \"react\";\n\nexport const useArchbaseForceRerender = (): (() => void) => {\n const [, setState] = React.useState({});\n return React.useCallback(() => void setState({}), []);\n};\n\n","// Removed circular dependency - ArchbaseStore interface will be imported at runtime\nimport React from 'react';\n\n// Local interface to avoid circular dependency\nexport interface ArchbaseStore {\n setValue: (key: string, value: any) => void;\n getValue: (key: string) => any;\n existsValue: (key: string) => boolean;\n clearValue: (key: string) => void;\n clearAllValues: () => void;\n reset: () => void;\n values: Map<string, any>;\n}\n\nconst getCurrentTimeFormatted = () => {\n const currentTime = new Date();\n const hours = currentTime.getHours();\n const minutes = currentTime.getMinutes();\n const seconds = currentTime.getSeconds();\n const milliseconds = currentTime.getMilliseconds();\n\n return `${hours}:${minutes}:${seconds}.${milliseconds}`;\n};\n\nexport interface ArchbaseState {}\n\nexport type ArchbaseReducerAction<ArchbaseState> = {\n type: string;\n payload: Partial<ArchbaseState>;\n info?: string;\n};\n\nexport type ArchbaseReducer<S extends ArchbaseState, A extends ArchbaseReducerAction<S>> = (state: S, action: A) => S;\n\nexport function useArchbaseReducer<S extends ArchbaseState, A extends ArchbaseReducerAction<S>>(\n key: string,\n store: ArchbaseStore,\n initialState: S,\n customReducer: ArchbaseReducer<S, A>,\n) {\n // Certificando para inicializar o estado apenas uma vez, usando useEffect\n React.useEffect(() => {\n const storedState = store.getValue(key);\n if (storedState) {\n store.setValue(key, { ...initialState, ...storedState });\n } else {\n store.setValue(key, initialState);\n }\n }, []);\n\n const dispatch = (action: A) => {\n const currentState = store.getValue(key);\n const newState = customReducer(currentState, action);\n store.setValue(key, newState);\n if (!process.env.NODE_ENV || process.env.NODE_ENV === 'development') {\n console.group(\n `%cAction: %c${action.type} %cat ${getCurrentTimeFormatted()}`,\n 'color: lightgreen; font-weight: bold;',\n 'color: white; font-weight: bold;',\n 'color: lightblue; font-weight: lighter;',\n );\n console.log('%cPrevious State:', 'color: #9E9E9E; font-weight: 700;', currentState);\n console.log('%cAction:', 'color: #00A7F7; font-weight: 700;', action);\n console.log('%cNext State:', 'color: #47B04B; font-weight: 700;', newState);\n console.groupEnd();\n }\n };\n\n const state: S = store.getValue(key) || initialState;\n\n return { dispatch, state };\n}\n","import * as React from 'react'\n\nexport function useArchbaseStateWithCallback<T>(initialState: T, callback) {\n const [state, setState] = React.useState<T>(initialState)\n\n const didMount = React.useRef(false)\n\n React.useEffect(() => {\n if (didMount.current) {\n callback(state)\n } else {\n didMount.current = true\n }\n }, [state, callback])\n\n return [state, setState]\n}\n","import { useCallback, useLayoutEffect, useState } from 'react'\n\ntype ClientRect = Record<keyof Omit<DOMRect, \"toJSON\">, number>\n\nfunction roundValues(_rect: ClientRect) {\n const rect = {\n ..._rect\n }\n for (const key of Object.keys(rect)) {\n // @ts-ignore\n rect[key] = Math.round(rect[key])\n }\n return rect\n}\n\nfunction shallowDiff(prev: any, next: any) {\n if (prev != null && next != null) {\n for (const key of Object.keys(next)) {\n if (prev[key] != next[key]) {\n return true\n }\n }\n } else if (prev != next) {\n return true\n }\n return false\n}\n\ntype TextSelectionState = {\n clientRect?: ClientRect,\n isCollapsed?: boolean,\n textContent?: string\n}\n\nconst defaultState: TextSelectionState = {}\n\n/**\n * useArchbaseTextSelection(ref)\n * \n * @description\n * hook para obter informações sobre a seleção de texto atual\n * \n */\nexport function useArchbaseTextSelection(target?: HTMLElement) {\n\n const [{\n clientRect,\n isCollapsed,\n textContent,\n }, setState] = useState<TextSelectionState>(defaultState)\n\n const reset = useCallback(() => {\n setState(defaultState)\n }, [])\n\n const handler = useCallback(() => {\n let newRect: ClientRect\n const selection = window.getSelection()\n let newState: TextSelectionState = { }\n\n if (selection == null || !selection.rangeCount) {\n setState(newState)\n return\n } \n\n const range = selection.getRangeAt(0)\n\n if (target != null && !target.contains(range.commonAncestorContainer)) {\n setState(newState)\n return\n }\n\n if (range == null) {\n setState(newState)\n return\n }\n\n const contents = range.cloneContents()\n\n if (contents.textContent != null) {\n newState.textContent = contents.textContent\n }\n\n const rects = range.getClientRects()\n\n if (rects.length === 0 && range.commonAncestorContainer != null) {\n const el = range.commonAncestorContainer as HTMLElement\n newRect = roundValues(el.getBoundingClientRect().toJSON())\n } else {\n if (rects.length < 1) return\n newRect = roundValues(rects[0].toJSON())\n }\n if (shallowDiff(clientRect, newRect)) {\n newState.clientRect = newRect\n }\n newState.isCollapsed = range.collapsed\n\n setState(newState)\n }, [target])\n\n useLayoutEffect(() => {\n document.addEventListener('selectionchange', handler)\n document.addEventListener('keydown', handler)\n document.addEventListener('keyup', handler)\n window.addEventListener('resize', handler)\n\n return () => {\n document.removeEventListener('selectionchange', handler)\n document.removeEventListener('keydown', handler)\n document.removeEventListener('keyup', handler)\n window.removeEventListener('resize', handler)\n }\n }, [target])\n\n return {\n clientRect,\n isCollapsed,\n textContent\n }\n}","/**\n * # ArchbaseDependencyProvider Component\n *\n * O `ArchbaseDependencyProvider` é um componente React que facilita a comunicação entre componentes em uma aplicação,\n * permitindo que se registrem como ouvintes de dependências específicas e sejam notificados sobre atualizações,\n * acompanhadas de dados relevantes.\n *\n * ## Uso\n *\n * Para utilizar, envolva os componentes com `ArchbaseDependencyProvider`. Dentro dos componentes filhos,\n * utilize o hook `useArchbaseDependency` para registrar ouvintes para dependências específicas ou para notificar\n * sobre atualizações de dependências.\n *\n * ## Exemplo\n *\n * ```jsx\n * import React from 'react';\n * import { ArchbaseDependencyProvider, useArchbaseDependency } from './ArchbaseDependencyManager';\n *\n * const App = () => (\n * <ArchbaseDependencyProvider>\n * <ChildComponent />\n * <SiblingComponent />\n * </ArchbaseDependencyProvider>\n * );\n *\n * const ChildComponent = () => {\n * const { registerListener } = useArchbaseDependency();\n *\n * useEffect(() => {\n * const handleDataChange = (newData, extra) => {\n * console.log('Data updated:', newData, 'Additional info:', extra);\n * };\n *\n * registerListener('key', handleDataChange);\n * }, []);\n *\n * return <div>Child Component</div>;\n * };\n *\n * const SiblingComponent = () => {\n * const { enqueueUpdate } = useArchbaseDependency();\n *\n * const updateData = () => {\n * enqueueUpdate('key', 'updatedValue', { extraData: 'extraInfo' });\n * };\n *\n * return <button onClick={updateData}>Update Data</button>;\n * };\n * ```\n *\n * Este exemplo mostra como `SiblingComponent` pode notificar `ChildComponent` sobre atualizações,\n * usando o `ArchbaseDependencyProvider` para gerenciar a dependência 'key' entre eles.\n */\n\nimport React, { createContext, useContext, useReducer, useEffect, ReactNode } from 'react'\n\ntype UpdateQueueItem = {\n key: string\n value: any\n data: any\n}\n\ninterface ArchbaseDependencyProviderProps {\n children: ReactNode\n}\n\nconst ArchbaseDependencyContext = createContext({\n registerListener: (key: string, listener: Function): void => {\n throw new Error('registerListener chamado fora do contexto de ArchbaseDependencyProvider')\n },\n removeListener: (key: string, listener: Function): void => {\n throw new Error('removeListener chamado fora do contexto de ArchbaseDependencyProvider')\n },\n enqueueUpdate: (update: UpdateQueueItem): void => {\n throw new Error('enqueueUpdate chamado fora do contexto de ArchbaseDependencyProvider')\n }\n})\n\n// Definição dos tipos para as ações do reducer\nconst REGISTER_LISTENER = 'REGISTER_LISTENER'\nconst REMOVE_LISTENER = 'REMOVE_LISTENER'\nconst ENQUEUE_UPDATE = 'ENQUEUE_UPDATE'\nconst PROCESS_QUEUE = 'PROCESS_QUEUE'\n\n// Ação de typescript para as ações do reducer\ntype Action =\n | { type: 'REGISTER_LISTENER'; key: string; listener: Function }\n | { type: 'REMOVE_LISTENER'; key: string; listener: Function }\n | { type: 'ENQUEUE_UPDATE'; update: UpdateQueueItem }\n | { type: 'PROCESS_QUEUE' }\n\n// Estado inicial para o reducer\nconst initialState = {\n listeners: {},\n updateQueue: []\n}\n\n// Reducer para gerenciar o estado\nfunction dependencyReducer(state, action) {\n switch (action.type) {\n case REGISTER_LISTENER:\n return {\n ...state,\n listeners: {\n ...state.listeners,\n [action.key]: [...(state.listeners[action.key] || []), action.listener]\n }\n }\n case REMOVE_LISTENER:\n return {\n ...state,\n listeners: {\n ...state.listeners,\n [action.key]:\n state.listeners[action.key]?.filter((listener) => listener !== action.listener) || []\n }\n }\n case ENQUEUE_UPDATE: {\n // Verifica se existem listeners registrados para a chave especificada.\n const listenersForKey = state.listeners[action.update.key]\n if (listenersForKey) {\n // Para cada listener registrado sob a chave, adiciona uma entrada separada na fila de atualização.\n const updatesForListeners = listenersForKey.map((listener) => ({\n ...action.update,\n listener\n }))\n return {\n ...state,\n updateQueue: [...state.updateQueue, ...updatesForListeners]\n }\n }\n return state\n }\n case PROCESS_QUEUE: {\n if (state.updateQueue.length > 0) {\n // Extrai o primeiro item da fila.\n const update = state.updateQueue[0]\n // Notifica apenas o listener específico para esta atualização.\n update.listener(update.value, update.data)\n // Remove a atualização atual da fila.\n return {\n ...state,\n updateQueue: state.updateQueue.slice(1)\n }\n }\n return state\n }\n default:\n return state\n }\n}\n\nexport const ArchbaseDependencyProvider: React.FC<ArchbaseDependencyProviderProps> = ({\n children\n}) => {\n const [state, dispatch] = useReducer(dependencyReducer, initialState)\n\n // Funções para interagir com o estado\n const registerListener = (key, listener) => dispatch({ type: REGISTER_LISTENER, key, listener })\n const removeListener = (key, listener) => dispatch({ type: REMOVE_LISTENER, key, listener })\n const enqueueUpdate = (update: UpdateQueueItem) => dispatch({ type: ENQUEUE_UPDATE, update })\n\n // Processar a fila de atualizações\n useEffect(() => {\n dispatch({ type: PROCESS_QUEUE })\n }, [state.updateQueue])\n\n return (\n <ArchbaseDependencyContext.Provider value={{ registerListener, removeListener, enqueueUpdate }}>\n {children}\n </ArchbaseDependencyContext.Provider>\n )\n}\n\nexport const useArchbaseDependency = () => useContext(ArchbaseDependencyContext)\n","// eslint-disable-next-line prettier/prettier\nimport type { DependencyList, EffectCallback, FC } from 'react'\nimport { memo, useEffect, useRef, useState } from 'react'\n// #######################################################################\n// ################################ Notes ################################\n// #######################################################################\n\n// Mounting:\n// – Birth of your component.\n// – Behavior before the component is added to the DOM.\n// Update:\n// – Growth of your component.\n// – Behavior when the component re-render beacause any chhnage occurs.\n// Unmount:\n// – Death of your component.\n// – Behavior right before the component is removed from the DOM.\n\n// #######################################################################\n// ################################ Types ################################\n// #######################################################################\n\n// eslint-disable-next-line no-undef\ntype Props = Record<string, unknown>\ntype ShouldComponentUpdateHandler = (props: Props, nextProps: Props) => boolean\n\n// #######################################################################\n// ################################ Code #################################\n// #######################################################################\n\n/**\n * Called immediately before mounting occurs ( before render the component).\n * Avoid introducing any side-effects or subscriptions in this method.\n * Please, see our docs dir for this hook. Be Careful.\n *\n * @param handler callback function only allowed to return void.\n */\nfunction useArchbaseWillMount(handler: EffectCallback): void {\n const willMount = useRef<boolean>(true)\n if (willMount.current) handler()\n willMount.current = false\n}\n\n/**\n * Called immediately after a component is mounted.\n * Setting state here will trigger re-rendering.\n *\n * @param handler callback function only allowed to return void.\n */\nfunction useArchbaseDidMount(handler: EffectCallback): void {\n useEffect(handler, [])\n}\n\n/**\n * Called immediately after updating occurs.\n * Note : Called for the initial render.\n *\n * @param handler callback function only allowed to return void.\n */\nfunction useArchbaseDidUpdate(handler: EffectCallback, deps?: DependencyList): void {\n const hasMounted = useRef<boolean>(false)\n\n useEffect(() => {\n if (!hasMounted.current) {\n hasMounted.current = true\n return\n }\n\n handler()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps)\n}\n\n/**\n * Behave like shouldComponentUpdate but with different params.\n *\n * @param Component component want to inject with the shouldComponentUpdate lifecycle.\n * @param shouldComponentUpdateHandler comparator like the shouldComponentUpdate lifecycle.\n * @returns [PureComponent]\n */\nfunction useShouldComponentUpdate(\n Component: FC,\n shouldComponentUpdateHandler?: ShouldComponentUpdateHandler\n) {\n return [memo(Component, shouldComponentUpdateHandler)]\n}\n\n/**\n * @alias useShouldComponentUpdate\n */\nfunction usePureComponent(\n Component: FC,\n shouldComponentUpdateHandler?: ShouldComponentUpdateHandler\n) {\n return [memo(Component, shouldComponentUpdateHandler)]\n}\n\n/**\n * @alias useShouldComponentUpdate but with diffrent pattern (HOC)!\n */\nfunction withShouldComponentUpdate(Component: FC) {\n return (shouldComponentUpdateHandler: ShouldComponentUpdateHandler) =>\n memo(Component, shouldComponentUpdateHandler)\n}\n\n/**\n * Called immediately before a component is destroyed.\n * Perform any necessary cleanup in this method, such\n * as cancelled network requests, or cleaning up any\n * DOM elements created in `useArchbaseDidMount`.\n *\n * @param handler callback function only allowed to return void.\n */\nfunction useArchbaseWillUnmount(handler: () => void): void {\n useEffect(() => () => handler(), []) // eslint-disable-line react-hooks/exhaustive-deps\n}\n\nfunction useArchbasePrevious(value) {\n // O objeto ref é um contêiner genérico cuja propriedade atual é mutável ...\n // ... e pode conter qualquer valor, semelhante a uma propriedade de instância em uma classe\n const ref = useRef<any>(null)\n // Armazena o valor atual na ref\n useEffect(() => {\n ref.current = value\n }, [value]) // Executa novamente apenas se o valor mudar\n // Retorna o valor anterior (acontece antes da atualização no useEffect acima)\n return ref.current\n}\n\nconst useArchbaseIsMounted = () => {\n const componentIsMounted = useRef(true)\n useEffect(() => {\n componentIsMounted.current = true\n return () => {\n componentIsMounted.current = false\n }\n }, [])\n return componentIsMounted.current\n}\n\nconst useArchbaseForceUpdate = () => {\n const [, rerender] = useState(0)\n\n return () => rerender((prev) => prev + 1)\n}\n\n// ########################################################################\n// ################################ Export ################################\n// ########################################################################\n\nexport {\n useArchbaseDidMount,\n useArchbaseDidUpdate,\n useArchbaseForceUpdate,\n useArchbaseIsMounted,\n useArchbasePrevious,\n useArchbaseWillMount,\n useArchbaseWillUnmount,\n usePureComponent,\n useShouldComponentUpdate,\n withShouldComponentUpdate\n}\n","import { Container } from 'inversify';\nimport { ARCHBASE_IOC_API_TYPE } from '.';\n\nlet instance: any;\nconst container = new Container();\n\nclass ArchbaseIOCHelper {\n constructor() {\n if (instance) {\n throw new Error('New instance cannot be created!!');\n }\n\n instance = this;\n }\n\n getContainer(): Container {\n return container;\n }\n \n registerService<T>(serviceIdentifier: symbol | string, implementation: new (...args: any[]) => T): void {\n container.bind<T>(serviceIdentifier).to(implementation);\n }\n \n getService<T>(serviceIdentifier: symbol | string): T {\n return container.get<T>(serviceIdentifier);\n }\n \n hasService(serviceIdentifier: symbol | string): boolean {\n return container.isBound(serviceIdentifier);\n }\n\n /**\n * Registra o token manager padrão do Archbase\n * Note: Deve ser chamado APÓS importar e registrar o DefaultArchbaseTokenManager\n */\n registerDefaultTokenManager(): void {\n console.warn('ArchbaseIOCHelper.registerDefaultTokenManager(): Este método deve ser chamado manualmente após importar DefaultArchbaseTokenManager do @archbase/security');\n }\n\n /**\n * Registra os serviços de segurança padrão do Archbase\n * Note: Deve ser chamado APÓS importar e registrar os serviços do @archbase/security\n */\n registerDefaultSecurity(): void {\n console.warn('ArchbaseIOCHelper.registerDefaultSecurity(): Este método deve ser chamado manualmente após importar os serviços do @archbase/security');\n }\n\n /**\n * Registra os containers padrão do Archbase (TokenManager + Security)\n * Note: Deve ser usado junto com registerTokenManager e registerSecurityServices\n */\n registerDefaultContainers(): void {\n this.registerDefaultTokenManager();\n this.registerDefaultSecurity();\n }\n\n /**\n * Registra o token manager padrão com a classe fornecida\n */\n registerTokenManager<T>(tokenManagerClass: new (...args: any[]) => T): void {\n if (!container.isBound(ARCHBASE_IOC_API_TYPE.TokenManager)) {\n container.bind(ARCHBASE_IOC_API_TYPE.TokenManager).to(tokenManagerClass as any);\n }\n }\n\n /**\n * Registra os serviços de segurança com as classes fornecidas\n */\n registerSecurityServices<\n TUser extends new (...args: any[]) => any,\n TProfile extends new (...args: any[]) => any,\n TGroup extends new (...args: any[]) => any,\n TResource extends new (...args: any[]) => any,\n TApiToken extends new (...args: any[]) => any,\n TAccessToken extends new (...args: any[]) => any\n >(services: {\n userService?: TUser;\n profileService?: TProfile;\n groupService?: TGroup;\n resourceService?: TResource;\n apiTokenService?: TApiToken;\n accessTokenService?: TAccessToken;\n }): void {\n if (services.userService && !container.isBound(ARCHBASE_IOC_API_TYPE.User)) {\n container.bind(ARCHBASE_IOC_API_TYPE.User).to(services.userService as any);\n }\n if (services.profileService && !container.isBound(ARCHBASE_IOC_API_TYPE.Profile)) {\n container.bind(ARCHBASE_IOC_API_TYPE.Profile).to(services.profileService as any);\n }\n if (services.groupService && !container.isBound(ARCHBASE_IOC_API_TYPE.Group)) {\n container.bind(ARCHBASE_IOC_API_TYPE.Group).to(services.groupService as any);\n }\n if (services.resourceService && !container.isBound(ARCHBASE_IOC_API_TYPE.Resource)) {\n container.bind(ARCHBASE_IOC_API_TYPE.Resource).to(services.resourceService as any);\n }\n if (services.apiTokenService && !container.isBound(ARCHBASE_IOC_API_TYPE.ApiToken)) {\n container.bind(ARCHBASE_IOC_API_TYPE.ApiToken).to(services.apiTokenService as any);\n }\n if (services.accessTokenService && !container.isBound(ARCHBASE_IOC_API_TYPE.AccessToken)) {\n container.bind(ARCHBASE_IOC_API_TYPE.AccessToken).to(services.accessTokenService as any);\n }\n }\n\n /**\n * Remove um serviço registrado\n */\n unbindService(serviceIdentifier: symbol | string): void {\n if (container.isBound(serviceIdentifier)) {\n container.unbind(serviceIdentifier);\n }\n }\n\n /**\n * Remove todos os serviços registrados\n */\n unbindAll(): void {\n container.unbindAll();\n }\n\n /**\n * Registra uma instância específica ao invés de uma classe\n */\n registerInstance<T>(serviceIdentifier: symbol | string, instance: T): void {\n container.bind<T>(serviceIdentifier).toConstantValue(instance);\n }\n\n /**\n * Registra um factory para criação dinâmica\n */\n registerFactory<T>(serviceIdentifier: symbol | string, factory: () => T): void {\n container.bind<T>(serviceIdentifier).toFactory(() => factory);\n }\n}\n\nexport const IOCContainer = Object.freeze(new ArchbaseIOCHelper());\n","export const ARCHBASE_IOC_API_TYPE = {\n Authenticator: Symbol.for('Authenticator'),\n TokenManager: Symbol.for('TokenManager'),\n ApiClient: Symbol.for('ApiClient'),\n User: Symbol.for('User'),\n Group: Symbol.for('Group'),\n Profile: Symbol.for('Profile'),\n Resource: Symbol.for('Resource'),\n ApiToken: Symbol.for('ApiToken'),\n AccessToken: Symbol.for('AccessToken'),\n}\n","/* eslint-disable no-prototype-builtins, no-continue */\nimport { cloneDeep } from 'lodash';\n\nexport class ArchbaseJacksonParser {\n // Helper para verificar se é um Map simples (string -> number/string)\n private static isSimpleMap(obj: any): boolean {\n if (!obj || typeof obj !== 'object') return false;\n \n return Object.entries(obj).every(([key, value]) => \n typeof key === 'string' && \n (typeof value === 'number' || typeof value === 'string')\n );\n }\n\n // Helper para verificar se é um Array simples (de strings)\n private static isSimpleArray(obj: any): boolean {\n return Array.isArray(obj) && obj.every(item => typeof item === 'string');\n }\n\n // Helper para verificar se o objeto deve receber @id\n private static shouldAddId(obj: any): boolean {\n if (!obj || typeof obj !== 'object') return false;\n \n return !ArchbaseJacksonParser.isSimpleMap(obj) && \n !ArchbaseJacksonParser.isSimpleArray(obj) &&\n obj !== null &&\n obj !== undefined;\n }\n\n /**\n * Converte um objeto Json serializado com Anteros e Jackson\n * @param {*} json Json a ser convertido para objeto\n */\n static convertJsonToObject(json: any) {\n // Verifica se o valor é um objeto\n const isObject = (value: any) => {\n return typeof value === 'object';\n };\n\n // Busca e armazena todas as chaves e referências\n const getKeys = (obj: any, key: string) => {\n let keys: any = [];\n for (const i in obj) {\n // Pula métodos\n if (!obj.hasOwnProperty(i)) {\n continue;\n }\n if (isObject(obj[i])) {\n keys = keys.concat(getKeys(obj[i], key));\n } else if (i === key) {\n keys.push({ key: obj[key], obj });\n }\n }\n return keys;\n };\n\n const convertToObjectHelper = (json: any, key: string, keys: any) => {\n // Armazena todas as referências e chaves num mapa\n if (!keys) {\n keys = getKeys(json, key);\n const convertedKeys: any = {};\n for (let i = 0; i < keys.length; i++) {\n convertedKeys[keys[i].key] = keys[i].obj;\n }\n keys = convertedKeys;\n }\n\n const obj = json;\n // Troca recursivamente todas as referências para as chaves pelos objetos reais\n for (const j in obj) {\n // Pula métodos\n if (!obj.hasOwnProperty(j)) {\n continue;\n }\n if (isObject(obj[j])) {\n // Propriedade é um objeto, processa os filhos recursivamente\n convertToObjectHelper(obj[j], key, keys);\n } else if (j === key) {\n // Remove a referência @id do objeto\n delete obj[j];\n } else if (keys[obj[j]]) {\n // Troca a referência pelo objeto real\n obj[j] = keys[obj[j]];\n }\n }\n return obj;\n };\n\n return convertToObjectHelper(json, '@id', undefined);\n }\n\n /**\n * Converte um objeto para Json serializando com @id no formato Anteros e Jackson\n * @param {*} obj Objeto a ser serializado para json\n */\n static convertObjectToJson(obj: any) {\n const newObj = cloneDeep(obj);\n\n // Gera um id global randômico - GUID\n const guid = () => {\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n return `${s4() + s4()}-${s4()}-${s4()}-${s4()}-${s4()}${s4()}${s4()}`;\n };\n\n // Verifica se o valor é um objeto\n const isObject = (value: any) => {\n return typeof value === 'object';\n };\n\n const convertToJsonHelper = (obj: any, key: string, objects: any[]) => {\n // Inicializa um array de objetos e guarda o root dentro se existir\n if (!objects) {\n objects = [];\n if (ArchbaseJacksonParser.shouldAddId(obj)) {\n obj[key] = guid();\n objects.push(obj);\n }\n }\n\n for (const i in obj) {\n // Pula métodos\n if (!obj.hasOwnProperty(i)) {\n continue;\n }\n\n if (isObject(obj[i])) {\n const objIndex = objects.indexOf(obj[i]);\n \n if (objIndex === -1) {\n // Objeto não foi processado; gera uma chave(GUID) e continua\n if (ArchbaseJacksonParser.shouldAddId(obj[i])) {\n obj[i][key] = guid();\n objects.push(obj[i]);\n }\n // Processa as propriedades dos filhos recursivamente\n convertToJsonHelper(obj[i], key, objects);\n } else {\n // Objeto foi processado;\n // Troca a referência existente pela chave gerada GUID\n obj[i] = objects[objIndex][key];\n }\n }\n }\n\n return obj;\n };\n\n return convertToJsonHelper(newObj, '@id', undefined);\n }\n}","const EQ = '==' as const;\nconst NEQ = '!=' as const;\nconst LE = '<=' as const;\nconst GE = '>=' as const;\nconst LT = '<' as const;\nconst GT = '>' as const;\nconst IN = '=in=' as const;\nconst OUT = '=out=' as const;\nconst BT = '=bt=' as const;\nconst NB = '=nb=' as const;\nconst LE_VERBOSE = '=le=' as const;\nconst GE_VERBOSE = '=ge=' as const;\nconst LT_VERBOSE = '=lt=' as const;\nconst GT_VERBOSE = '=gt=' as const;\n\ntype CustomComparisonOperator = string;\n\nconst CanonicalComparisonOperators = [EQ, NEQ, LE, GE, LT, GT, IN, OUT, BT, NB];\ntype CanonicalComparisonOperator = (typeof CanonicalComparisonOperators)[number];\n\nconst VerboseComparisonOperators = [LE_VERBOSE, GE_VERBOSE, LT_VERBOSE, GT_VERBOSE];\ntype VerboseComparisonOperator = (typeof VerboseComparisonOperators)[number];\n\nconst ComparisonOperators = [EQ, NEQ, LE, GE, LT, GT, IN, OUT, BT, NB, LE_VERBOSE, GE_VERBOSE, LT_VERBOSE, GT_VERBOSE];\ntype ComparisonOperator = (typeof ComparisonOperators)[number] | CustomComparisonOperator;\n\nfunction mapToCanonicalComparisonOperator(operator: ComparisonOperator): CanonicalComparisonOperator | CustomComparisonOperator {\n switch (operator) {\n case LE_VERBOSE:\n return LE;\n case LT_VERBOSE:\n return LT;\n case GE_VERBOSE:\n return GE;\n case GT_VERBOSE:\n return GT;\n default:\n return operator;\n }\n}\n\nconst CUSTOM_OPERATOR_REGEXP = /^=[a-z]+=$/;\nfunction isCustomComparisonOperator(candidate: string): candidate is CustomComparisonOperator {\n return candidate.length > 2 && CUSTOM_OPERATOR_REGEXP.test(candidate);\n}\n\nfunction isComparisonOperator(candidate: string, operator?: ComparisonOperator): candidate is ComparisonOperator {\n switch (candidate) {\n case EQ:\n case NEQ:\n case LE:\n case GE:\n case LT:\n case GT:\n case IN:\n case OUT:\n case BT:\n case NB:\n case LE_VERBOSE:\n case GE_VERBOSE:\n case LT_VERBOSE:\n case GT_VERBOSE:\n return operator === undefined || mapToCanonicalComparisonOperator(candidate) === mapToCanonicalComparisonOperator(operator);\n default:\n if (isCustomComparisonOperator(candidate)) {\n return operator === undefined || candidate === operator;\n }\n\n return false;\n }\n}\n\nexport {\n EQ,\n NEQ,\n LE,\n GE,\n LT,\n GT,\n IN,\n OUT,\n BT,\n NB,\n LE_VERBOSE,\n GE_VERBOSE,\n LT_VERBOSE,\n GT_VERBOSE,\n ComparisonOperators,\n CanonicalComparisonOperators,\n VerboseComparisonOperators,\n isComparisonOperator,\n};\nexport type { ComparisonOperator, CanonicalComparisonOperator, VerboseComparisonOperator };\n","const AND = ';' as const;\nconst OR = ',' as const;\nconst AND_VERBOSE = 'and' as const;\nconst OR_VERBOSE = 'or' as const;\n\nconst CanonicalLogicOperators = [AND, OR];\ntype CanonicalLogicOperator = (typeof CanonicalLogicOperators)[number];\n\nconst VerboseLogicOperators = [AND_VERBOSE, OR_VERBOSE];\ntype VerboseLogicOperator = (typeof VerboseLogicOperators)[number];\n\nconst LogicOperators = [AND, OR, AND_VERBOSE, OR_VERBOSE];\ntype LogicOperator = (typeof LogicOperators)[number];\n\nfunction mapToCanonicalLogicOperator(operator: LogicOperator): CanonicalLogicOperator {\n switch (operator) {\n case AND_VERBOSE:\n return AND;\n case OR_VERBOSE:\n return OR;\n default:\n return operator;\n }\n}\n\nfunction isLogicOperator(candidate: string, operator?: LogicOperator): candidate is LogicOperator {\n switch (candidate) {\n case AND:\n case OR:\n case AND_VERBOSE:\n case OR_VERBOSE:\n return operator === undefined || mapToCanonicalLogicOperator(candidate) === mapToCanonicalLogicOperator(operator);\n default:\n return false;\n }\n}\n\nexport { AND, OR, AND_VERBOSE, OR_VERBOSE, CanonicalLogicOperators, VerboseLogicOperators, LogicOperators, isLogicOperator };\nexport type { CanonicalLogicOperator, VerboseLogicOperator, LogicOperator };\n","const ReservedChars = ['\"', \"'\", '(', ')', ';', ',', '=', '!', '~', '<', '>', ' ', '\\n', '\\t', '\\r'] as const;\ntype ReservedChar = (typeof ReservedChars)[number];\n\nexport { ReservedChars };\nexport type { ReservedChar };\n","import { ReservedChars } from './ReservedChars';\nimport { isComparisonOperator, ComparisonOperator } from './ComparisonOperator';\nimport { isLogicOperator, LogicOperator } from './LogicOperator';\n\nconst NodeType = {\n SELECTOR: 'SELECTOR',\n VALUE: 'VALUE',\n COMPARISON: 'COMPARISON',\n LOGIC: 'LOGIC',\n} as const;\n\ninterface Node<TType = string> {\n readonly type: TType;\n}\n\ninterface SelectorNode extends Node<typeof NodeType.SELECTOR> {\n readonly selector: string;\n}\n\ninterface ValueNode extends Node<typeof NodeType.VALUE> {\n readonly value: string | string[];\n}\n\ninterface BinaryNode<\n TType extends string = string,\n TLeft extends Node = Node,\n TOperator extends string = string,\n TRight extends Node = Node,\n> extends Node<TType> {\n readonly left: TLeft;\n readonly operator: TOperator;\n readonly right: TRight;\n}\n\ntype ComparisonNode = BinaryNode<typeof NodeType.COMPARISON, SelectorNode, ComparisonOperator, ValueNode>;\ntype LogicNode = BinaryNode<typeof NodeType.LOGIC, ExpressionNode, LogicOperator, ExpressionNode>;\ntype ExpressionNode = ComparisonNode | LogicNode;\n\nfunction isNode(candidate: unknown): candidate is Node {\n return candidate !== undefined && candidate !== null && Object.prototype.hasOwnProperty.call(candidate, 'type');\n}\n\nfunction isSelectorNode(candidate: unknown): candidate is SelectorNode {\n return isNode(candidate) && candidate.type === NodeType.SELECTOR;\n}\n\nfunction isValueNode(candidate: unknown): candidate is ValueNode {\n return isNode(candidate) && candidate.type === NodeType.VALUE;\n}\n\nfunction isComparisonNode(candidate: unknown, operator?: ComparisonOperator): candidate is ComparisonNode {\n return (\n isNode(candidate) &&\n candidate.type === NodeType.COMPARISON &&\n (operator === undefined || isComparisonOperator((candidate as ComparisonNode).operator, operator))\n );\n}\n\nfunction isLogicNode(candidate: unknown, operator?: LogicOperator): candidate is LogicNode {\n return (\n isNode(candidate) &&\n candidate.type === NodeType.LOGIC &&\n (operator === undefined || isLogicOperator((candidate as LogicNode).operator, operator))\n );\n}\n\nfunction isExpressionNode(candidate: unknown): candidate is ExpressionNode {\n return isComparisonNode(candidate) || isLogicNode(candidate);\n}\n\nfunction getSelector(comparison: ComparisonNode): string {\n if (!isComparisonNode(comparison)) {\n throw new TypeError(`The \"comparison\" has to be a valid \"ComparisonNode\", ${String(comparison)} passed.`);\n }\n\n return comparison.left.selector;\n}\n\nfunction getValue(comparison: ComparisonNode): string | string[] {\n if (!isComparisonNode(comparison)) {\n throw new TypeError(`The \"comparison\" has to be a valid \"ComparisonNode\", ${String(comparison)} passed.`);\n }\n\n return comparison.right.value;\n}\n\nfunction getSingleValue(comparison: ComparisonNode): string {\n const value = getValue(comparison);\n if (Array.isArray(value)) {\n throw new Error('The \"comparison\" passed to the \"getSingleValue\" function has to contain string value, but contains an array.');\n }\n\n return value;\n}\n\nfunction getMultiValue(comparison: ComparisonNode): string[] {\n const value = getValue(comparison);\n if (typeof value === 'string') {\n throw new Error('The \"comparison\" passed to the \"getMultiValue\" function has to contain array value, but contains a single string.');\n }\n\n return value;\n}\n\nfunction createNamedNode<TNode extends Node>(node: TNode, toString: () => string): TNode {\n Object.defineProperty(node, 'toString', {\n value: toString,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n\n return node;\n}\n\nfunction createSelectorNode(selector: string, skipChecks = false): SelectorNode {\n if (!skipChecks) {\n if (typeof selector !== 'string') {\n throw new TypeError(`The \"selector\" has to be a \"string\", \"${String(selector)}\" passed.`);\n }\n\n if (!selector || selector.length === 0) {\n throw new Error('The \"selector\" cannot be an empty string.');\n }\n\n const reservedChar = ReservedChars.find((reservedChar) => selector.indexOf(reservedChar) !== -1);\n if (reservedChar) {\n const position = selector.indexOf(reservedChar) + 1;\n throw new Error(`The \"selector\" contains reserved character '${reservedChar}' at position ${position} in \"${selector}\".`);\n }\n }\n\n return createNamedNode(\n {\n type: NodeType.SELECTOR,\n selector,\n },\n () => `SelectorNode(\"${selector}\")`,\n );\n}\n\nfunction createValueNode(value: string | string[], skipChecks = false): ValueNode {\n if (!skipChecks) {\n if (typeof value !== 'string' && !Array.isArray(value)) {\n throw new TypeError(`The \"value\" has to be a \"string | string[]\", \"${String(value)}\" passed.`);\n }\n\n if (Array.isArray(value) && value.length === 0) {\n throw new Error('The \"value\" cannot be an empty array.');\n }\n }\n\n return createNamedNode(\n {\n type: NodeType.VALUE,\n value,\n },\n () => `ValueNode(${JSON.stringify(value)})`,\n );\n}\n\nfunction createComparisonNode(selector: SelectorNode, operator: ComparisonOperator, value: ValueNode, skipChecks = false): ComparisonNode {\n if (!skipChecks) {\n if (!isSelectorNode(selector)) {\n throw new TypeError(`The \"selector\" has to be a \"SelectorNode\", \"${String(selector)}\" passed.`);\n }\n if (typeof operator !== 'string') {\n throw new TypeError(`The \"operator\" has to be a \"SelectorNode\", \"${String(operator)}\" passed.`);\n }\n if (!isComparisonOperator(operator)) {\n throw new TypeError(`The \"operator\" has to be a valid \"ComparisonOperator\", ${String(operator)} passed.`);\n }\n if (!isValueNode(value)) {\n throw new TypeError(`The \"value\" has to be a \"ValueNode\", \"${String(value)}\" passed.`);\n }\n }\n\n return createNamedNode(\n {\n type: NodeType.COMPARISON,\n left: selector,\n operator,\n right: value,\n },\n () => `ComparisonNode(${selector},${operator},${value})`,\n );\n}\n\nfunction createLogicNode(left: ExpressionNode, operator: LogicOperator, right: ExpressionNode, skipChecks = false): LogicNode {\n if (!skipChecks) {\n if (!isExpressionNode(left)) {\n throw new TypeError(`The \"left\" has to be a \"ExpressionNode\", \"${String(left)}\" passed.`);\n }\n if (typeof operator !== 'string') {\n throw new TypeError(`The \"operator\" has to be a \"string\", \"${String(operator)}\" passed.`);\n }\n if (!isLogicOperator(operator)) {\n throw new TypeError(`The \"operator\" has to be a valid \"LogicOperator\", ${String(operator)} passed.`);\n }\n if (!isExpressionNode(right)) {\n throw new TypeError(`The \"right\" has to be a \"ExpressionNode\", \"${String(right)}\" passed.`);\n }\n }\n\n return createNamedNode(\n {\n type: NodeType.LOGIC,\n left,\n operator,\n right,\n },\n () => `LogicNode(${left},${operator},${right})`,\n );\n}\n\nexport {\n createSelectorNode,\n createValueNode,\n createComparisonNode,\n createLogicNode,\n isNode,\n isSelectorNode,\n isValueNode,\n isComparisonNode,\n isLogicNode,\n isExpressionNode,\n getSelector,\n getValue,\n getSingleValue,\n getMultiValue,\n};\nexport type { Node, SelectorNode, ValueNode, BinaryNode, ComparisonNode, LogicNode, ExpressionNode };\n","import {\n AND,\n ComparisonOperator,\n EQ,\n GE,\n GT,\n IN,\n LE,\n LogicOperator,\n LT,\n NEQ,\n OR,\n OUT,\n BT,\n NB,\n createSelectorNode,\n createValueNode,\n createComparisonNode,\n createLogicNode,\n ComparisonNode,\n ExpressionNode,\n} from '../ast';\n\ninterface Builder {\n comparison(selector: string, operator: ComparisonOperator, value: string | number | (string | number)[]): ComparisonNode;\n eq(selector: string, value: string | number): ComparisonNode;\n bt(selector: string, value1: string | number, value2: string | number): ComparisonNode;\n nb(selector: string, value1: string | number, value2: string | number): ComparisonNode;\n neq(selector: string, value: string | number): ComparisonNode;\n le(selector: string, value: string | number): ComparisonNode;\n lt(selector: string, value: string | number): ComparisonNode;\n ge(selector: string, value: string | number): ComparisonNode;\n gt(selector: string, value: string | number): ComparisonNode;\n in(selector: string, values: (string | number)[]): ComparisonNode;\n out(selector: string, values: (string | number)[]): ComparisonNode;\n logic(expressions: ExpressionNode[], operator: LogicOperator): ExpressionNode;\n and(...expressions: ExpressionNode[]): ExpressionNode;\n or(...expressions: ExpressionNode[]): ExpressionNode;\n}\n\nconst builder: Builder = {\n comparison(selector, operator, value) {\n return createComparisonNode(\n createSelectorNode(selector),\n operator,\n createValueNode(Array.isArray(value) ? value.map((singleValue) => String(singleValue)) : String(value)),\n );\n },\n eq(selector, value) {\n return builder.comparison(selector, EQ, value);\n },\n bt(selector, value1, value2) {\n return builder.comparison(selector, BT, [value1, value2]);\n },\n nb(selector, value1, value2) {\n return builder.comparison(selector, NB, [value1, value2]);\n },\n neq(selector, value) {\n return builder.comparison(selector, NEQ, value);\n },\n le(selector, value) {\n return builder.comparison(selector, LE, value);\n },\n lt(selector, value) {\n return builder.comparison(selector, LT, value);\n },\n ge(selector, value) {\n return builder.comparison(selector, GE, value);\n },\n gt(selector, value) {\n return builder.comparison(selector, GT, value);\n },\n in(selector, values) {\n return builder.comparison(selector, IN, values);\n },\n out(selector, values) {\n return builder.comparison(selector, OUT, values);\n },\n logic(expressions, operator) {\n if (!expressions.length) {\n throw new Error(`The logic expression builder requires at least one expression but none passed.`);\n }\n\n return expressions\n .slice(1)\n .reduce((leftExpression, rightExpression) => createLogicNode(leftExpression, operator, rightExpression), expressions[0]);\n },\n and(...expressions) {\n return builder.logic(expressions, AND);\n },\n or(...expressions) {\n return builder.logic(expressions, OR);\n },\n};\n\nexport {builder};\nexport type { Builder };\n","/* eslint-disable no-else-return */\n/* eslint-disable @typescript-eslint/no-use-before-define */\nimport {\n AND,\n AND_VERBOSE,\n isLogicOperator,\n OR,\n OR_VERBOSE,\n ReservedChars,\n ComparisonNode,\n ExpressionNode,\n isComparisonNode,\n isLogicNode,\n LogicNode,\n SelectorNode,\n ValueNode,\n} from '../ast';\n\ntype Quote = '\"' | \"'\";\n\ninterface EmitOptions {\n /**\n * The preferred quote character to use when `emit` encounters a comparison value that needs to be escaped by wrapping\n * in quotes. Either `\"` (the ASCII double quote character) or `'` (the ASCII single quote character). Defaults to `\"`\n * (the ASCII double quote character).\n */\n preferredQuote?: Quote;\n /**\n * If `true`, `emit` will override the `preferredQuote` setting on a comparison value-by-comparison value basis if\n * doing so would shorten the emitted RSQL. If `false`, `emit` will use the `preferredQuote` as the quote character\n * for all comparison values encountered. Defaults to `true`.\n */\n optimizeQuotes?: boolean;\n}\n\nconst DEFAULT_EMIT_OPTIONS: Required<EmitOptions> = {\n preferredQuote: '\"',\n optimizeQuotes: true,\n};\n\nconst NEEDS_ESCAPING: { [Q in Quote]: RegExp } = {\n '\"': /\"|\\\\/g,\n \"'\": /'|\\\\/g,\n};\n\nfunction escapeQuotes(value: string, quote: Quote) {\n return value.replace(NEEDS_ESCAPING[quote], '\\\\$&');\n}\n\nfunction countQuote(value: string, quote: Quote) {\n let count = 0;\n for (let i = 0; i < value.length; ++i) {\n if (value[i] === quote) {\n count++;\n }\n }\n\n return count;\n}\n\nfunction selectQuote(\n value: string,\n { preferredQuote = DEFAULT_EMIT_OPTIONS.preferredQuote, optimizeQuotes = DEFAULT_EMIT_OPTIONS.optimizeQuotes }: EmitOptions,\n) {\n if (optimizeQuotes) {\n const otherQuote: Quote = preferredQuote === '\"' ? \"'\" : '\"';\n\n return countQuote(value, otherQuote) < countQuote(value, preferredQuote) ? otherQuote : preferredQuote;\n }\n\n return preferredQuote;\n}\n\nfunction emitSelector(node: SelectorNode) {\n return node.selector;\n}\n\nfunction escapeValue(value: string, options: EmitOptions) {\n if (value === '' || ReservedChars.some((reservedChar) => value.includes(reservedChar))) {\n const quote = selectQuote(value, options);\n\n return `${quote}${escapeQuotes(value, quote)}${quote}`;\n }\n\n return value;\n}\n\nfunction emitValue(node: ValueNode, options: EmitOptions) {\n return Array.isArray(node.value)\n ? `(${node.value.map((value) => escapeValue(value, options)).join(',')})`\n : escapeValue(node.value, options);\n}\n\nfunction emitComparison(node: ComparisonNode, options: EmitOptions) {\n return `${emitSelector(node.left)}${node.operator}${emitValue(node.right, options)}`;\n}\n\nfunction emitLogic(node: LogicNode, options: EmitOptions) {\n let left = emitWithoutOptionsValidation(node.left, options);\n let right = emitWithoutOptionsValidation(node.right, options);\n\n // handle operator precedence - as it's only the case for AND operator, we don't need a generic logic for that\n if (isLogicOperator(node.operator, AND)) {\n if (isLogicNode(node.left, OR)) {\n left = `(${left})`;\n }\n if (isLogicNode(node.right, OR)) {\n right = `(${right})`;\n }\n }\n\n // for verbose operator add space before and after operator\n const operator = node.operator === AND_VERBOSE || node.operator === OR_VERBOSE ? ` ${node.operator} ` : node.operator;\n\n return `${left}${operator}${right}`;\n}\n\nfunction emitWithoutOptionsValidation(expression: ExpressionNode, options: EmitOptions): string {\n if (isComparisonNode(expression)) {\n return emitComparison(expression, options);\n } else if (isLogicNode(expression)) {\n return emitLogic(expression, options);\n }\n\n throw new TypeError(`The \"expression\" has to be a valid \"ExpressionNode\", ${String(expression)} passed.`);\n}\n\nfunction emit(expression: ExpressionNode, options: EmitOptions = {}) {\n if (options.preferredQuote !== undefined && options.preferredQuote !== '\"' && options.preferredQuote !== \"'\") {\n throw new TypeError(\n `Invalid \"preferredQuote\" option: ${options.preferredQuote}. Must be either \" (the ASCII double quote character) or ' (the ASCII single quote character).`,\n );\n }\n\n return emitWithoutOptionsValidation(expression, options);\n}\n\nexport { emit };\nexport type { EmitOptions, Quote };\n","import { ComparisonOperator, isLogicOperator, isComparisonOperator, LogicOperator, OR, AND } from '../../ast';\n\nconst TokenType = {\n UNQUOTED: 'UNQUOTED',\n QUOTED: 'QUOTED',\n PARENTHESIS: 'PARENTHESIS',\n OPERATOR: 'OPERATOR',\n END: 'END',\n} as const;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface Token<TType extends string = string, TValue = any> {\n readonly type: TType;\n readonly value: TValue;\n readonly position: number;\n}\n\ntype UnquotedToken = Token<typeof TokenType.UNQUOTED, string>;\ntype QuotedToken = Token<typeof TokenType.QUOTED, string>;\ntype ParenthesisToken = Token<typeof TokenType.PARENTHESIS, '(' | ')'>;\ntype OperatorToken = Token<typeof TokenType.OPERATOR, ComparisonOperator | LogicOperator>;\ntype EndToken = Token<typeof TokenType.END, 'END'>;\n\nfunction createNamedToken<TToken extends Token>(token: TToken, toString: () => string): TToken {\n Object.defineProperty(token, 'toString', {\n value: toString,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n\n return token;\n}\n\nfunction createUnquotedToken(value: string, position: number): UnquotedToken {\n return createNamedToken(\n {\n type: TokenType.UNQUOTED,\n value,\n position,\n },\n () => `UnquotedToken(${value})`,\n );\n}\n\nfunction createQuotedToken(value: string, position: number): QuotedToken {\n return createNamedToken(\n {\n type: TokenType.QUOTED,\n value,\n position,\n },\n () => `QuotedToken(${value})`,\n );\n}\n\nfunction createParenthesisToken(value: '(' | ')', position: number): ParenthesisToken {\n return createNamedToken(\n {\n type: TokenType.PARENTHESIS,\n value,\n position,\n },\n () => `ParenthesisToken(${value})`,\n );\n}\n\nfunction createOperatorToken(value: ComparisonOperator | LogicOperator, position: number): OperatorToken {\n return createNamedToken(\n {\n type: TokenType.OPERATOR,\n value,\n position,\n },\n () => `OperatorToken(${value})`,\n );\n}\n\nfunction createEndToken(position: number): EndToken {\n return createNamedToken(\n {\n type: TokenType.END,\n value: 'END',\n position,\n },\n () => `EndToken`,\n );\n}\n\ntype AnyToken = UnquotedToken | QuotedToken | ParenthesisToken | OperatorToken | EndToken;\n\nfunction isToken(candidate: object): candidate is Token {\n return (\n Object.prototype.hasOwnProperty.call(candidate, 'type') &&\n Object.prototype.hasOwnProperty.call(candidate, 'value') &&\n Object.prototype.hasOwnProperty.call(candidate, 'position')\n );\n}\n\nfunction isUnquotedToken(candidate: object): candidate is UnquotedToken {\n return isToken(candidate) && candidate.type === TokenType.UNQUOTED;\n}\n\nfunction isQuotedToken(candidate: object): candidate is QuotedToken {\n return isToken(candidate) && candidate.type === TokenType.QUOTED;\n}\n\nfunction isParenthesisToken(candidate: object): candidate is ParenthesisToken {\n return isToken(candidate) && candidate.type === TokenType.PARENTHESIS;\n}\n\nfunction isOpenParenthesisToken(candidate: object): candidate is ParenthesisToken {\n return isParenthesisToken(candidate) && candidate.value === '(';\n}\n\nfunction isCloseParenthesisToken(candidate: object): candidate is ParenthesisToken {\n return isParenthesisToken(candidate) && candidate.value === ')';\n}\n\nfunction isOperatorToken(candidate: object): candidate is OperatorToken {\n return isToken(candidate) && candidate.type === TokenType.OPERATOR;\n}\n\nfunction isComparisonOperatorToken(candidate: object): candidate is OperatorToken {\n return isOperatorToken(candidate) && isComparisonOperator(candidate.value);\n}\n\nfunction isOrOperatorToken(candidate: object): candidate is OperatorToken {\n return isOperatorToken(candidate) && isLogicOperator(candidate.value, OR);\n}\n\nfunction isAndOperatorToken(candidate: object): candidate is OperatorToken {\n return isOperatorToken(candidate) && isLogicOperator(candidate.value, AND);\n}\n\nfunction isEndToken(candidate: object): candidate is EndToken {\n return isToken(candidate) && candidate.type === TokenType.END;\n}\n\nexport default Token;\nexport {\n createUnquotedToken,\n createQuotedToken,\n createParenthesisToken,\n createOperatorToken,\n createEndToken,\n isToken,\n isUnquotedToken,\n isQuotedToken,\n isParenthesisToken,\n isOpenParenthesisToken,\n isCloseParenthesisToken,\n isOperatorToken,\n isComparisonOperatorToken,\n isOrOperatorToken,\n isAndOperatorToken,\n isEndToken,\n};\nexport type { AnyToken, UnquotedToken, QuotedToken, ParenthesisToken, OperatorToken, EndToken };\n","import { AnyToken, isEndToken } from './lexer/Token';\n\nfunction createErrorForUnexpectedCharacter(position: number, source: string): SyntaxError {\n const character = source[position];\n\n return new SyntaxError(`Unexpected character '${character}' at position ${position + 1} in \"${source}\".`);\n}\n\nfunction createErrorForUnclosedQuote(position: number, source: string): SyntaxError {\n const character = source[position];\n\n return new SyntaxError(`Unclosed quote '${character}' at position ${position + 1} in \"${source}\".`);\n}\n\nfunction createErrorForUnexpectedToken(token: AnyToken, source: string): SyntaxError {\n return new SyntaxError(\n isEndToken(token)\n ? `Unexpected end in \"${source}\".`\n : `Unexpected ${token.value.length > 1 ? 'string' : 'character'} '${token.value}' at position ${token.position + 1} in \"${source}\".`,\n );\n}\n\nfunction createErrorForUnclosedParenthesis(_token: AnyToken, source: string, parentPosition: number): SyntaxError {\n return new SyntaxError(`Unexpected end in \"${source}\". Did you forget to close parenthesis at position ${parentPosition + 1}?`);\n}\n\nfunction createErrorForEmptyInput(_token: AnyToken, source: string): SyntaxError {\n return new SyntaxError(`Unexpected end in \"${source}\". Cannot parse empty string.`);\n}\n\nexport {\n createErrorForUnexpectedCharacter,\n createErrorForUnclosedQuote,\n createErrorForUnexpectedToken,\n createErrorForUnclosedParenthesis,\n createErrorForEmptyInput,\n};\n","interface LexerContext {\n position: number;\n readonly buffer: string;\n readonly length: number;\n}\n\nfunction createLexerContext(input: string): LexerContext {\n return {\n position: 0,\n buffer: input,\n length: input.length,\n };\n}\n\nexport default LexerContext;\nexport { createLexerContext };\n","import { createOperatorToken, OperatorToken } from '../Token';\nimport { SeekProcessor } from '../LexerProcessor';\n\nconst seekComparisonCustomOperatorToken: SeekProcessor<OperatorToken> = (context) => {\n // scan for FIQL custom operators: =[a-z]=\n // assume that context.buffer[context.position] === '='\n let endPosition = context.position + 1;\n\n // scan for chars from a to z\n while (\n endPosition < context.length &&\n context.buffer.charCodeAt(endPosition) >= 97 && // a\n context.buffer.charCodeAt(endPosition) <= 122 // z\n ) {\n endPosition++;\n }\n\n if (context.buffer[endPosition] === '=') {\n const operator = context.buffer.slice(context.position, endPosition + 1);\n const token = createOperatorToken(operator, context.position);\n context.position += operator.length;\n\n return token;\n }\n\n return null;\n};\n\nexport default seekComparisonCustomOperatorToken;\n","import { ScanProcessor } from '../LexerProcessor';\n\nfunction createScanSymbol<TSymbol extends string>(symbols: ReadonlyArray<TSymbol>): ScanProcessor<TSymbol> {\n return function scanSymbol(context) {\n return symbols.find((symbol) => context.buffer.substr(context.position, symbol.length) === symbol) || null;\n };\n}\n\nexport { createScanSymbol };\n","import { ComparisonOperators } from '../../../ast';\nimport { createOperatorToken, OperatorToken } from '../Token';\nimport { SeekProcessor } from '../LexerProcessor';\nimport { createScanSymbol } from './scanSymbol';\n\nconst scanAnyComparisonOperator = createScanSymbol(ComparisonOperators);\n\nconst seekComparisonOperatorToken: SeekProcessor<OperatorToken> = (context) => {\n const operator = scanAnyComparisonOperator(context);\n\n if (operator) {\n const token = createOperatorToken(operator, context.position);\n context.position += operator.length;\n\n return token;\n }\n\n return null;\n};\n\nexport default seekComparisonOperatorToken;\n","import { LogicOperator } from '../../../ast';\nimport { createOperatorToken, OperatorToken } from '../Token';\nimport { SeekProcessor } from '../LexerProcessor';\n\nconst seekLogicCanonicalOperatorToken: SeekProcessor<OperatorToken> = (context) => {\n // we assume that symbol is a valid LogicOperator\n const operator = context.buffer.charAt(context.position) as LogicOperator;\n\n const token = createOperatorToken(operator, context.position);\n context.position += 1;\n\n return token;\n};\n\nexport default seekLogicCanonicalOperatorToken;\n","import { ScanProcessor } from '../LexerProcessor';\n\nfunction createScanNonReservedSymbol<TSymbol extends string>(symbols: ReadonlyArray<TSymbol>): ScanProcessor<TSymbol> {\n return function scanNonReservedSymbol(context) {\n return (\n symbols.find(\n (symbol) =>\n context.buffer.substr(context.position, symbol.length) === symbol && context.buffer[context.position + symbol.length] === ' ',\n ) || null\n );\n };\n}\n\nexport { createScanNonReservedSymbol };\n","import { VerboseLogicOperators } from '../../../ast';\nimport { SeekProcessor } from '../LexerProcessor';\nimport { createOperatorToken, OperatorToken } from '../Token';\nimport { createScanNonReservedSymbol } from './scanNonReservedSymbol';\n\nconst scanLogicVerboseOperator = createScanNonReservedSymbol(VerboseLogicOperators);\n\nconst seekLogicVerboseOperatorToken: SeekProcessor<OperatorToken> = (context) => {\n const operator = scanLogicVerboseOperator(context);\n\n if (operator) {\n const token = createOperatorToken(operator, context.position);\n context.position += operator.length;\n\n return token;\n }\n\n return null;\n};\n\nexport default seekLogicVerboseOperatorToken;\n","import { createParenthesisToken, ParenthesisToken } from '../Token';\nimport { SeekProcessor } from '../LexerProcessor';\n\nconst seekParenthesisToken: SeekProcessor<ParenthesisToken> = (context) => {\n // we assume that parenthesis is a valid Parenthesis\n const parenthesis = context.buffer.charAt(context.position) as '(' | ')';\n\n const token = createParenthesisToken(parenthesis, context.position);\n context.position += 1;\n\n return token;\n};\n\nexport default seekParenthesisToken;\n","import { createErrorForUnclosedQuote } from '../../Error';\nimport { createQuotedToken, QuotedToken } from '../Token';\nimport { SeekProcessor } from '../LexerProcessor';\n\nconst seekQuotedToken: SeekProcessor<QuotedToken> = (context) => {\n // we assume that quote is a valid QuoteSymbol\n const quote = context.buffer.charAt(context.position);\n let endPosition = context.position;\n\n while (endPosition < context.length) {\n endPosition = context.buffer.indexOf(quote, endPosition + 1);\n\n if (endPosition === -1) {\n throw createErrorForUnclosedQuote(context.position, context.buffer);\n }\n\n // scan back for escape characters\n let escaped = false;\n for (let scanPosition = endPosition - 1; context.buffer[scanPosition] === '\\\\' && scanPosition > context.position; scanPosition--) {\n escaped = !escaped;\n }\n\n if (!escaped) {\n // it's not escaped quote - we've found terminating quote\n break;\n }\n }\n\n const value = context.buffer.substring(context.position, endPosition + 1);\n const token = createQuotedToken(value, context.position);\n context.position = endPosition + 1;\n\n return token;\n};\n\nexport default seekQuotedToken;\n","import { ReservedChar, ReservedChars } from '../../../ast';\nimport { createUnquotedToken, UnquotedToken } from '../Token';\nimport { SeekProcessor } from '../LexerProcessor';\n\nconst seekUnquotedToken: SeekProcessor<UnquotedToken> = (context) => {\n let endPosition = context.position + 1;\n\n while (endPosition < context.length && ReservedChars.indexOf(context.buffer.charAt(endPosition) as ReservedChar) === -1) {\n endPosition++;\n }\n\n const token = createUnquotedToken(context.buffer.substring(context.position, endPosition), context.position);\n context.position = endPosition;\n\n return token;\n};\n\nexport default seekUnquotedToken;\n","import { SkipProcessor } from '../LexerProcessor';\n\nconst WhitespaceChars = [' ', '\\n', '\\t', '\\r'];\n\nconst skipWhitespace: SkipProcessor = (context) => {\n while (context.position < context.length && WhitespaceChars.indexOf(context.buffer.charAt(context.position)) !== -1) {\n context.position++;\n }\n};\n\nexport default skipWhitespace;\n","import { createErrorForUnexpectedCharacter } from '../../Error';\nimport { AnyToken } from '../Token';\nimport seekComparisonCustomOperatorToken from './seekComparisonCustomOperatorToken';\nimport seekComparisonOperatorToken from './seekComparisonOperatorToken';\nimport seekLogicCanonicalOperatorToken from './seekLogicCanonicalOperatorToken';\nimport seekLogicVerboseOperatorToken from './seekLogicVerboseOperatorToken';\nimport { SeekProcessor } from '../LexerProcessor';\nimport seekParenthesisToken from './seekParenthesisToken';\nimport seekQuotedToken from './seekQuotedToken';\nimport seekUnquotedToken from './seekUnquotedToken';\nimport skipWhitespace from './skipWhitespace';\n\nconst seekAnyToken: SeekProcessor<AnyToken> = (context) => {\n // first skip all whitespace chars\n skipWhitespace(context);\n\n if (context.position >= context.length) {\n return null;\n }\n\n // then decide what to do based on the current char\n const char = context.buffer.charAt(context.position);\n let token: AnyToken | null = null;\n\n switch (char) {\n // single char symbols\n case \"'\":\n case '\"':\n token = seekQuotedToken(context);\n break;\n\n // single char symbols\n case '(':\n case ')':\n token = seekParenthesisToken(context);\n break;\n\n // single char symbols\n case ',':\n case ';':\n token = seekLogicCanonicalOperatorToken(context);\n break;\n\n // multi char symbols for comparison operator\n case '=':\n case '!':\n case '~':\n case '<':\n case '>':\n token = seekComparisonOperatorToken(context);\n if (!token && char === '=') {\n token = seekComparisonCustomOperatorToken(context);\n }\n break;\n\n // unreserved char\n default:\n // there are VerboseLogicOperators (and, or) that uses not reserved chars\n token = seekLogicVerboseOperatorToken(context);\n\n // if it's not an OperatorToken, process UnquotedToken\n if (!token) {\n token = seekUnquotedToken(context);\n }\n }\n\n if (!token) {\n throw createErrorForUnexpectedCharacter(context.position, context.buffer);\n }\n\n return token;\n};\n\nexport default seekAnyToken;\n","import { AnyToken, createEndToken } from './Token';\nimport { createLexerContext } from './LexerContext';\nimport seekAnyToken from './processors/seekAnyToken';\n\nfunction lex(input: string): AnyToken[] {\n const context = createLexerContext(input);\n const tokens: AnyToken[] = [];\n\n for (let token = seekAnyToken(context); token !== null; token = seekAnyToken(context)) {\n tokens.push(token);\n }\n\n tokens.push(createEndToken(context.position));\n\n return tokens;\n}\n\nexport default lex;\n","import { Node } from '../ast';\nimport { AnyToken } from './lexer/Token';\n\ninterface ParserContext {\n position: number;\n readonly tokens: AnyToken[];\n readonly stack: (AnyToken | Node)[];\n readonly state: number[];\n readonly parent: ParserContext | null;\n}\n\nfunction getParserContextState(context: ParserContext): number {\n return context.state[context.state.length - 1];\n}\n\nfunction getParserContextToken(context: ParserContext): AnyToken {\n return context.tokens[context.position];\n}\n\nfunction getParserContextHead(context: ParserContext): AnyToken | Node {\n return context.stack[context.stack.length - 1];\n}\n\nfunction createParserContext(tokens: AnyToken[]): ParserContext {\n return {\n position: 0,\n tokens,\n stack: [],\n state: [0],\n parent: null,\n };\n}\n\nexport default ParserContext;\nexport { getParserContextState, getParserContextToken, getParserContextHead, createParserContext };\n","const OperationType = {\n SHIFT: 0,\n PUSH: 1,\n REDUCE: 2,\n POP: 3,\n GOTO: 4,\n ACCEPT: 5,\n} as const;\n\ninterface ShiftOperation {\n type: typeof OperationType.SHIFT;\n state: number;\n}\ninterface PushOperation {\n type: typeof OperationType.PUSH;\n state: number;\n}\ninterface ReduceOperation {\n type: typeof OperationType.REDUCE;\n production: number;\n}\ninterface PopOperation {\n type: typeof OperationType.POP;\n production: number;\n}\ninterface GoToOperation {\n type: typeof OperationType.GOTO;\n state: number;\n}\ninterface AcceptOperation {\n type: typeof OperationType.ACCEPT;\n}\ntype NoOperation = undefined;\n\ntype TokenOperation = ShiftOperation | ReduceOperation | PushOperation | PopOperation | AcceptOperation | NoOperation;\ntype NodeOperation = GoToOperation | NoOperation;\n\nfunction shift(state: number): ShiftOperation {\n return {\n type: OperationType.SHIFT,\n state,\n };\n}\nfunction reduce(production: number): ReduceOperation {\n return {\n type: OperationType.REDUCE,\n production,\n };\n}\nfunction push(state: number): PushOperation {\n return {\n type: OperationType.PUSH,\n state,\n };\n}\nfunction pop(production: number): PopOperation {\n return {\n type: OperationType.POP,\n production,\n };\n}\nfunction goto(state: number): GoToOperation {\n return {\n type: OperationType.GOTO,\n state,\n };\n}\nfunction accept(): AcceptOperation {\n return {\n type: OperationType.ACCEPT,\n };\n}\nconst noop: NoOperation = undefined;\n\nexport { OperationType, shift, reduce, push, pop, accept, goto, noop };\nexport type {\n ShiftOperation,\n ReduceOperation,\n PushOperation,\n PopOperation,\n AcceptOperation,\n GoToOperation,\n NoOperation,\n TokenOperation,\n NodeOperation,\n};\n","import {\n Node,\n createComparisonNode,\n createLogicNode,\n createSelectorNode,\n createValueNode,\n ExpressionNode,\n SelectorNode,\n ValueNode,\n ComparisonOperator,\n LogicOperator,\n} from '../ast';\nimport { AnyToken, isOpenParenthesisToken, isQuotedToken, isUnquotedToken, OperatorToken, QuotedToken, UnquotedToken } from './lexer/Token';\n\ntype ParserProduction = (stack: (AnyToken | Node)[]) => { consumed: number; produced: Node };\n\nconst ESCAPE_SEQUENCE = /\\\\([\\s\\S])/g;\n\nconst resolveValueTokenValue = (valueToken: UnquotedToken | QuotedToken) =>\n isQuotedToken(valueToken) ? valueToken.value.slice(1, -1).replace(ESCAPE_SEQUENCE, '$1') : valueToken.value;\n\nconst comparisonExpressionProduction: ParserProduction = (stack) => {\n const selector = stack[stack.length - 3] as SelectorNode;\n const operator = stack[stack.length - 2] as OperatorToken;\n const value = stack[stack.length - 1] as ValueNode;\n\n return {\n consumed: 3,\n produced: createComparisonNode(selector, operator.value as ComparisonOperator, value, true),\n };\n};\n\nconst logicalExpressionProduction: ParserProduction = (stack) => {\n const left = stack[stack.length - 3] as ExpressionNode;\n const operator = stack[stack.length - 2] as OperatorToken;\n const right = stack[stack.length - 1] as ExpressionNode;\n\n return {\n consumed: 3,\n produced: createLogicNode(left, operator.value as LogicOperator, right, true),\n };\n};\n\nconst groupExpressionProduction: ParserProduction = (stack) => {\n const expression = stack[stack.length - 2] as ExpressionNode;\n\n return {\n consumed: 3,\n produced: expression,\n };\n};\n\nconst selectorProduction: ParserProduction = (stack) => {\n const token = stack[stack.length - 1] as UnquotedToken;\n\n return {\n consumed: 1,\n produced: createSelectorNode(token.value, true),\n };\n};\n\nconst singleValueProduction: ParserProduction = (stack) => {\n const token = stack[stack.length - 1] as UnquotedToken | QuotedToken;\n const value = resolveValueTokenValue(token);\n\n return {\n consumed: 1,\n produced: createValueNode(value, true),\n };\n};\n\nconst multiValueProduction: ParserProduction = (stack) => {\n const closeParenthesisIndex = stack.length - 1;\n const openParenthesisIndex = stack.map((item) => isOpenParenthesisToken(item)).lastIndexOf(true);\n\n const valueTokens = stack\n .slice(openParenthesisIndex, closeParenthesisIndex)\n .filter((item) => isUnquotedToken(item) || isQuotedToken(item)) as (UnquotedToken | QuotedToken)[];\n\n return {\n consumed: closeParenthesisIndex - openParenthesisIndex + 1,\n produced: createValueNode(valueTokens.map(resolveValueTokenValue), true),\n };\n};\n\nexport {\n selectorProduction,\n singleValueProduction,\n multiValueProduction,\n comparisonExpressionProduction,\n logicalExpressionProduction,\n groupExpressionProduction,\n};\nexport type { ParserProduction };\n","import { ExpressionNode, isExpressionNode, isSelectorNode, isValueNode, Node } from '../ast';\nimport { createErrorForEmptyInput, createErrorForUnclosedParenthesis, createErrorForUnexpectedToken } from './Error';\nimport lex from './lexer/lex';\nimport Token, {\n AnyToken,\n isCloseParenthesisToken,\n isComparisonOperatorToken,\n isEndToken,\n isAndOperatorToken,\n isOrOperatorToken,\n isOpenParenthesisToken,\n isQuotedToken,\n isUnquotedToken,\n} from './lexer/Token';\nimport ParserContext, { createParserContext, getParserContextHead, getParserContextState, getParserContextToken } from './ParserContext';\nimport {\n accept,\n goto,\n GoToOperation,\n NodeOperation,\n noop,\n OperationType,\n pop,\n PopOperation,\n push,\n PushOperation,\n reduce,\n ReduceOperation,\n shift,\n ShiftOperation,\n TokenOperation,\n} from './ParserOperation';\nimport {\n comparisonExpressionProduction,\n groupExpressionProduction,\n logicalExpressionProduction,\n multiValueProduction,\n ParserProduction,\n selectorProduction,\n singleValueProduction,\n} from './ParserProduction';\n\nconst productions: ParserProduction[] = [\n /* 0 */ selectorProduction,\n /* 1 */ singleValueProduction,\n /* 2 */ multiValueProduction,\n /* 3 */ comparisonExpressionProduction,\n /* 4 */ logicalExpressionProduction,\n /* 5 */ groupExpressionProduction,\n];\n\nconst tokenMatchers = [\n /* 0 */ isOpenParenthesisToken, // O_PAREN\n /* 1 */ isCloseParenthesisToken, // C_PAREN\n /* 2 */ isUnquotedToken, // UNQUOTED\n /* 3 */ isQuotedToken, // QUOTED\n /* 4 */ isComparisonOperatorToken, // C_OP\n /* 5 */ isOrOperatorToken, // OR_OP\n /* 6 */ isAndOperatorToken, // AND_OP\n /* 7 */ isEndToken, // END\n];\n\nconst nodeMatchers = [\n /* 0 */ isSelectorNode, // SELECT\n /* 1 */ isValueNode, // VALUE\n /* 2 */ isExpressionNode, // EXPR\n];\n\ntype ParserTable = [TokenOperation[], NodeOperation[]][];\n\n// prettier-ignore\nconst table: ParserTable = [\n /* st | token (terminal) | node (non-terminal) */\n /* O_PAREN, C_PAREN, UNQUOTED, QUOTED, C_OP, OR_OP, AND_OP, END SELECT, VALUE, EXPR */\n /* 0 */ [[push(0), noop, shift(8), noop, noop, noop, noop, noop ] , [goto(3), noop, goto(7) ]], // INITIAL STATE\n /* 1 */ [[push(0), noop, shift(8), noop, noop, noop, noop, noop ] , [goto(3), noop, goto(12), ]], // INITIAL STATE [AFTER OR EXPRESSION]\n /* 2 */ [[push(0), noop, shift(8), noop, noop, noop, noop, noop ] , [goto(3), noop, goto(13), ]], // INITIAL STATE [AFTER AND EXPRESSION]\n /* 3 */ [[noop, noop, noop, noop, shift(4), noop, noop, noop ] , [noop, noop, noop, ]], // COMPARISON OPERATOR STATE\n /* 4 */ [[shift(5), noop, shift(9), shift(9), noop, noop, noop, noop ] , [noop, goto(11), noop, ]], // SINGLE/MULTI-VALUE STATE\n /* 5 */ [[noop, noop, shift(6), shift(6), noop, noop, noop, noop ] , [noop, noop, noop, ]], // MULTI-VALUE STATE\n /* 6 */ [[noop, shift(10), noop, noop, noop, shift(5), noop, noop ] , [noop, noop, noop, ]], // MULTI-VALUE STATE\n /* 7 */ [[noop, shift(14), noop, noop, noop, shift(1), shift(2), accept() ] , [noop, noop, noop, ]], // LOGIC / END STATE\n /* 8 */ [[noop, noop, noop, noop, reduce(0), noop, noop, noop ] , [noop, noop, noop, ]], // REDUCE SELECTOR\n /* 9 */ [[noop, reduce(1), noop, noop, noop, reduce(1), reduce(1), reduce(1)] , [noop, noop, noop, ]], // REDUCE SINGLE-VALUE\n /* 10 */ [[noop, reduce(2), noop, noop, noop, reduce(2), reduce(2), reduce(2)] , [noop, noop, noop, ]], // REDUCE MULTI-VALUE\n /* 11 */ [[noop, reduce(3), noop, noop, noop, reduce(3), reduce(3), reduce(3)] , [noop, noop, noop, ]], // REDUCE COMPARISON EXPRESSION\n /* 12 */ [[noop, reduce(4), noop, noop, noop, reduce(4), shift(2), reduce(4)] , [noop, noop, noop, ]], // REDUCE LOGIC EXPRESSION [AFTER OR EXPRESSION]\n /* 13 */ [[noop, reduce(4), noop, noop, noop, reduce(4), reduce(4), reduce(4)] , [noop, noop, noop, ]], // REDUCE LOGIC EXPRESSION [AFTER AND EXPRESSION]\n /* 14 */ [[noop, pop(5), noop, noop, noop, pop(5), pop(5), pop(5) ] , [noop, noop, noop, ]], // REDUCE GROUP EXPRESSION\n];\n\nfunction getParserTokenOperation(state: number, token: Token): TokenOperation {\n return table[state][0][tokenMatchers.findIndex((matcher) => matcher(token))];\n}\n\nfunction getParserNodeOperation(state: number, node: Node): NodeOperation {\n return table[state][1][nodeMatchers.findIndex((matcher) => matcher(node))];\n}\n\nfunction getMostMeaningfulInvalidToken(context: ParserContext): AnyToken {\n if (context.position > 0 && isCloseParenthesisToken(context.tokens[context.position - 1]) && context.parent === null) {\n // in this case we were not able to pop CLOSE_PARENTHESIS token, which was invalid in the first place\n return context.tokens[context.position - 1];\n }\n\n return context.tokens[context.position];\n}\n\nfunction handleShift(context: ParserContext, shiftOperation: ShiftOperation): ParserContext {\n // we can perform side-effects on shift operation to reduce memory usage\n context.stack.push(context.tokens[context.position]);\n context.state.push(shiftOperation.state);\n context.position += 1;\n\n return context;\n}\n\nfunction handlePush(context: ParserContext, pushOperation: PushOperation): ParserContext {\n return {\n position: context.position + 1,\n tokens: context.tokens,\n stack: [context.tokens[context.position]],\n state: [pushOperation.state],\n parent: context,\n };\n}\n\nfunction handleGoTo(context: ParserContext, gotoOperation: GoToOperation): ParserContext {\n // we can perform side-effects on goto operation to reduce memory usage\n context.state.push(gotoOperation.state);\n\n return context;\n}\n\nfunction handleReduce(context: ParserContext, reduceOperation: ReduceOperation, input: string): ParserContext {\n const { consumed, produced } = productions[reduceOperation.production](context.stack);\n\n // we can perform side-effects on reduce operation to reduce memory usage\n for (let i = 0; i < consumed; ++i) {\n context.stack.pop();\n context.state.pop();\n }\n context.stack.push(produced);\n\n const stateAfterReduce = getParserContextState(context);\n const nodeAfterReduce = getParserContextHead(context) as Node;\n const gotoOperation = getParserNodeOperation(stateAfterReduce, nodeAfterReduce);\n\n if (gotoOperation) {\n context = handleGoTo(context, gotoOperation);\n } else {\n throw createErrorForUnexpectedToken(getMostMeaningfulInvalidToken(context), input);\n }\n\n return context;\n}\n\nfunction handlePop(context: ParserContext, popOperation: PopOperation, input: string): ParserContext {\n if (!context.parent) {\n throw createErrorForUnexpectedToken(getMostMeaningfulInvalidToken(context), input);\n }\n\n const { produced } = productions[popOperation.production](context.stack);\n\n // we can perform side-effects on pop operation to reduce memory usage (as child context will not be used anymore)\n context.parent.position = context.position;\n context.parent.stack.push(produced);\n\n context = context.parent;\n\n const stateAfterPop = getParserContextState(context);\n const nodeAfterPop = getParserContextHead(context) as Node;\n\n const gotoOperation = getParserNodeOperation(stateAfterPop, nodeAfterPop);\n\n if (gotoOperation) {\n context = handleGoTo(context, gotoOperation);\n } else {\n throw createErrorForUnexpectedToken(getMostMeaningfulInvalidToken(context), input);\n }\n\n return context;\n}\n\nfunction handleAccept(context: ParserContext, input: string): ExpressionNode {\n if (context.parent !== null) {\n throw createErrorForUnclosedParenthesis(getMostMeaningfulInvalidToken(context), input, context.parent.position);\n }\n\n return getParserContextHead(context) as ExpressionNode;\n}\n\nfunction parse(source: string): ExpressionNode {\n if (typeof source !== 'string') {\n throw new TypeError(`The argument passed to the \"parse\" function has to be a string, \"${source}\" passed.`);\n }\n\n const tokens = lex(source);\n\n if (tokens.length === 1 && tokens[0].type === 'END') {\n throw createErrorForEmptyInput(tokens[0], source);\n }\n\n let context = createParserContext(tokens);\n\n while (context.position < context.tokens.length) {\n const state = getParserContextState(context);\n const token = getParserContextToken(context);\n const operation = getParserTokenOperation(state, token);\n\n if (!operation) {\n throw createErrorForUnexpectedToken(getMostMeaningfulInvalidToken(context), source);\n }\n\n switch (operation.type) {\n case OperationType.SHIFT:\n context = handleShift(context, operation);\n break;\n\n case OperationType.PUSH:\n context = handlePush(context, operation);\n break;\n\n case OperationType.REDUCE:\n context = handleReduce(context, operation, source);\n break;\n\n case OperationType.POP:\n context = handlePop(context, operation, source);\n break;\n\n case OperationType.ACCEPT:\n return handleAccept(context, source);\n break;\n\n default:\n }\n }\n\n throw createErrorForUnexpectedToken(getMostMeaningfulInvalidToken(context), source);\n}\n\nexport { parse };\n","export const isBase64 = (str) => {\n try {\n return btoa(atob(str)) === str\n } catch (err) {\n return false\n }\n}\n","export function isEmail(email: string): boolean {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return emailRegex.test(email);\n}","import type { ReactNode } from 'react'\nimport { isValidElement } from 'react'\n\nexport const getElementName = (element: ReactNode): string | null => {\n if (!isValidElement(element)) {\n return null\n }\n\n return typeof element.type === 'string' ? element.type : element.type.name\n}\n\n\n","export const archbaseLogo =\n 'data:image/png;base64,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'\n\nexport const archbaseLogo2 =\n 'data:image/png;base64,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'\n\nexport const archbaseLogo3 =\n 'data:image/png;base64,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'\n","export function convertImageToBase64(imgUrl:string, callback?: (dataUrl: string) => any) {\n const image = new Image()\n image.crossOrigin = 'anonymous'\n image.onload = () => {\n const canvas = document.createElement('canvas')\n const ctx = canvas.getContext('2d')\n canvas.height = image.naturalHeight\n canvas.width = image.naturalWidth\n ctx!.drawImage(image, 0, 0)\n const dataUrl = canvas.toDataURL()\n callback!(dataUrl)\n }\n image.src = imgUrl\n}\n","import type { ReactNode } from 'react'\nimport { Children } from 'react'\n\nexport const filter = (\n children: ReactNode | ReactNode[],\n filterFn: (child: ReactNode, index?: number, children?: ReactNode[]) => boolean\n): ReactNode[] => Children.toArray(children).filter(filterFn)\n\n","import type { ReactElement, ReactNode } from 'react'\nimport { isValidElement } from 'react'\n\nexport const hasChildren = (\n element: ReactNode\n): element is ReactElement<{ children: ReactNode | ReactNode[] }> =>\n isValidElement<{ children?: ReactNode[] }>(element) && Boolean(element.props.children)\n","import type { ReactElement, ReactNode } from 'react'\nimport { Children, isValidElement } from 'react'\n\nimport {hasChildren} from './hasChildren'\n\nexport const hasComplexChildren = (\n element: ReactNode\n): element is ReactElement<{ children: ReactNode | ReactNode[] }> =>\n isValidElement(element) &&\n hasChildren(element) &&\n Children.toArray(element.props.children).reduce(\n (response: boolean, child: ReactNode): boolean => response || isValidElement(child),\n false\n )\n\n","export function getPropertyValue(object, propertyName) {\n const propertyDescriptor = Object.getOwnPropertyDescriptor(object, propertyName)\n if (propertyDescriptor!.get) {\n try {\n return propertyDescriptor!.get()\n } catch {\n return propertyDescriptor!.get\n }\n }\n\n return object[propertyName]\n}\n","import type { ReactNode } from 'react';\nimport { Children, cloneElement, isValidElement } from 'react';\n\nimport {hasComplexChildren} from './hasComplexChildren';\n\nexport const deepFilter = (\n children: ReactNode | ReactNode[],\n deepFilterFn: (child: ReactNode, index?: number, children?: ReactNode[]) => boolean,\n): ReactNode[] =>\n Children.toArray(children)\n .filter(deepFilterFn)\n .map((child: ReactNode) => {\n if (isValidElement(child) && hasComplexChildren(child)) {\n // Clone the child that has children and filter them too\n return cloneElement(child, {\n ...child.props,\n children: deepFilter(child.props.children, deepFilterFn),\n });\n }\n\n return child;\n });\n","import type { ReactNode } from 'react';\nimport { isValidElement } from 'react';\n\nimport { deepFilter } from './deepFilter';\n\nexport const onlyValid = (children: ReactNode | ReactNode[]): ReactNode[] =>\n deepFilter(children, (child: ReactNode) => isValidElement(child));\n","import type { ReactNode } from 'react';\nimport { Children, isValidElement } from 'react';\n\nimport {hasChildren} from './hasChildren';\n\nexport const childToString = (child?: ReactNode): string => {\n if (typeof child === 'undefined' || child === null || typeof child === 'boolean') {\n return '';\n }\n\n if (JSON.stringify(child) === '{}') {\n return '';\n }\n\n return (child as number | string).toString();\n};\n\nexport const onlyText = (children: ReactNode | ReactNode[]): string => {\n if (!(children instanceof Array) && !isValidElement(children)) {\n return childToString(children);\n }\n\n return (Children.toArray(children) as any).reduce((text: string, child: ReactNode): string => {\n let newText = '';\n\n if (isValidElement(child) && hasChildren(child)) {\n newText = onlyText(child.props.children);\n } else if (isValidElement(child) && !hasChildren(child)) {\n newText = '';\n } else {\n newText = childToString(child);\n }\n\n return text.concat(newText);\n }, '');\n};\n","import type { ComponentClass, FunctionComponent, ReactNode } from 'react';\nimport { Children } from 'react';\n\nimport {getElementName} from './getElementName';\n\nexport const groupByType = (\n children: ReactNode | ReactNode[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n types: (ComponentClass<any> | FunctionComponent | string)[] = [],\n rest = 'rest',\n): Record<string, ReactNode[]> => {\n const typeNames: string[] = types.map((type) => (typeof type === 'string' ? type : type.name));\n\n return Children.toArray(children).reduce((acc: Record<string, ReactNode[]>, child: ReactNode) => {\n const elementName = getElementName(child);\n const key = elementName !== null && typeNames.includes(elementName) ? elementName : rest;\n\n if (typeof acc[key] === 'undefined') {\n acc[key] = [];\n }\n\n acc[key] = [...acc[key], child];\n\n return acc;\n }, {});\n};\n","export function createElementFromHTML(htmlString: string): any {\n var div = document.createElement('div');\n div.innerHTML = htmlString.trim();\n\n return div.firstChild;\n}\n\nexport function applyFontFamily(owner: any, fontFamily: string) {\n owner.style.fontFamily = fontFamily;\n\n for (let i = 0; i < owner.children.length; i++) {\n applyFontFamily(owner.children[i], fontFamily);\n }\n}\n","import type { ReactNode } from 'react';\nimport { Children, cloneElement, isValidElement } from 'react';\n\nimport {hasComplexChildren} from './hasComplexChildren';\n\nexport const deepMap = (\n children: ReactNode | ReactNode[],\n deepMapFn: (child: ReactNode, index?: number, children?: ReactNode[]) => ReactNode,\n): ReactNode[] =>\n Children.toArray(children).map((child: ReactNode, index: number, mapChildren: ReactNode[]) => {\n if (isValidElement(child) && hasComplexChildren(child)) {\n // Clone the child that has children and map them too\n return deepMapFn(\n cloneElement(child, {\n ...child.props,\n children: deepMap(child.props.children, deepMapFn),\n }),\n );\n }\n\n return deepMapFn(child, index, mapChildren);\n });\n","import type { ReactNode } from 'react';\nimport { Children, isValidElement } from 'react';\n\nimport {hasComplexChildren} from './hasComplexChildren';\n\nexport const deepForEach = (children: ReactNode | ReactNode[], deepForEachFn: (child: ReactNode, index?: number) => void): void => {\n Children.forEach(children, (child: ReactNode, index: number) => {\n if (isValidElement(child) && hasComplexChildren(child)) {\n // Each inside the child that has children\n deepForEach(child.props.children, deepForEachFn);\n }\n deepForEachFn(child, index);\n });\n};\n","import type { ReactNode } from 'react';\nimport { Children, isValidElement } from 'react';\n\nimport {hasComplexChildren} from './hasComplexChildren';\n\nexport const deepFind = (\n children: ReactNode | ReactNode[],\n deepFindFn: (child: ReactNode, index?: number, children?: ReactNode[]) => boolean,\n): ReactNode | undefined => {\n // eslint-disable-next-line @typescript-eslint/init-declarations\n let found;\n\n Children.toArray(children).find((child: ReactNode, index: number, findChildren: ReactNode[]) => {\n if (deepFindFn(child, index, findChildren)) {\n found = child;\n\n return true;\n }\n\n if (isValidElement(child) && hasComplexChildren(child)) {\n // Find inside the child that has children\n found = deepFind(child.props.children, deepFindFn);\n\n return typeof found !== 'undefined';\n }\n\n return false;\n });\n\n return found;\n};\n","export function isLastElementOfArray(array: any[], index: number): boolean {\n return index === array.length - 1;\n}\n","import { deleteProperty, getProperty, setProperty } from 'dot-prop';\n\nconst ASSIGN_VALUE = 'ASSIGN_VALUE' as const;\nconst PUSH_ITEM_TO_ARRAY = 'PUSH_ITEM_TO_ARRAY' as const;\nconst REMOVE_ITEM_FROM_ARRAY = 'REMOVE_ITEM_FROM_ARRAY' as const;\nconst REMOVE = 'REMOVE' as const;\n\nconst SetNestedObjectValueOperations = [ASSIGN_VALUE, PUSH_ITEM_TO_ARRAY, REMOVE_ITEM_FROM_ARRAY, REMOVE];\ntype SetNestedObjectValueOperation = (typeof SetNestedObjectValueOperations)[number];\n\nconst setNestedObjectValue = (object: any, path: string, value: any, operation?: SetNestedObjectValueOperation) => {\n\tswitch (operation) {\n\t\tcase PUSH_ITEM_TO_ARRAY:\n\t\t\taddItemToArray(object, path, value);\n\t\t\treturn;\n\t\tcase REMOVE_ITEM_FROM_ARRAY:\n\t\t\tremoveItemFromArray(object, path, value);\n\t\t\treturn;\n\t\tcase REMOVE:\n\t\t\tdeleteProperty(object, path);\n\t\t\treturn;\n\t\tdefault:\n\t\t\tif (path === '') {\n\t\t\t\tobject = value;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetProperty(object, path, value);\n\t}\n};\n\nconst addItemToArray = (object, path, value) => {\n\tconst length = getProperty(object, path, []).length;\n\tsetProperty(object, `${path}[${length}]`, value);\n};\n\nconst removeItemFromArray = (object, path, value) => {\n\tconst newArray = getProperty(object, path, []);\n\tnewArray.splice(newArray.indexOf(value), 1);\n\tsetProperty(object, `${path}`, newArray);\n};\n\nconst getNestedObjectValue = (object: any, path: string) => {\n\tif (path === '') {\n\t\treturn object;\n\t}\n\treturn getProperty(object, path, undefined);\n};\n\nconst getPathDepthLevel = (path: string) => {\n\treturn path.match(/[.([)]/g) ? path.match(/[.([)]/g).length : 0;\n};\nexport { setNestedObjectValue, getNestedObjectValue, getPathDepthLevel };\nexport type { SetNestedObjectValueOperation };\n","/* eslint-disable */\nimport { parseISO, format } from 'date-fns'\nimport {compressToUint8Array, decompressFromUint8Array} from 'lz-string';\n\n\nconst WHITE_SPACES = [\n ' ',\n '\\n',\n '\\r',\n '\\t',\n '\\f',\n '\\v',\n '\\u00A0',\n '\\u1680',\n '\\u180E',\n '\\u2000',\n '\\u2001',\n '\\u2002',\n '\\u2003',\n '\\u2004',\n '\\u2005',\n '\\u2006',\n '\\u2007',\n '\\u2008',\n '\\u2009',\n '\\u200A',\n '\\u2028',\n '\\u2029',\n '\\u202F',\n '\\u205F',\n '\\u3000'\n]\n\n/**\n * Remove non-word chars.\n */\nexport function removeNonWord(str) {\n return str.replace(/[^0-9a-zA-Z\\xC0-\\xFF -]/g, '')\n}\n\n/**\n * Replaces all accented chars with regular ones\n */\nexport function replaceAccents(str) {\n // verifies if the String has accents and replace them\n if (str.search(/[\\xC0-\\xFF]/g) > -1) {\n str = str\n .replace(/[\\xC0-\\xC5]/g, 'A')\n .replace(/[\\xC6]/g, 'AE')\n .replace(/[\\xC7]/g, 'C')\n .replace(/[\\xC8-\\xCB]/g, 'E')\n .replace(/[\\xCC-\\xCF]/g, 'I')\n .replace(/[\\xD0]/g, 'D')\n .replace(/[\\xD1]/g, 'N')\n .replace(/[\\xD2-\\xD6\\xD8]/g, 'O')\n .replace(/[\\xD9-\\xDC]/g, 'U')\n .replace(/[\\xDD]/g, 'Y')\n .replace(/[\\xDE]/g, 'P')\n .replace(/[\\xE0-\\xE5]/g, 'a')\n .replace(/[\\xE6]/g, 'ae')\n .replace(/[\\xE7]/g, 'c')\n .replace(/[\\xE8-\\xEB]/g, 'e')\n .replace(/[\\xEC-\\xEF]/g, 'i')\n .replace(/[\\xF1]/g, 'n')\n .replace(/[\\xF2-\\xF6\\xF8]/g, 'o')\n .replace(/[\\xF9-\\xFC]/g, 'u')\n .replace(/[\\xFE]/g, 'p')\n .replace(/[\\xFD\\xFF]/g, 'y')\n }\n\n return str\n}\n\n/**\n * Remove chars from beginning of string.\n */\nexport function ltrim(str, chars?) {\n chars = chars || WHITE_SPACES\n\n var start = 0,\n len = str.length,\n charLen = chars.length,\n found = true,\n i,\n c\n\n while (found && start < len) {\n found = false\n i = -1\n c = str.charAt(start)\n\n while (++i < charLen) {\n if (c === chars[i]) {\n found = true\n start++\n break\n }\n }\n }\n\n return start >= len ? '' : str.substr(start, len)\n}\n\n/**\n * Remove chars from end of string.\n */\nexport function rtrim(str, chars) {\n chars = chars || WHITE_SPACES\n\n var end = str.length - 1,\n charLen = chars.length,\n found = true,\n i,\n c\n\n while (found && end >= 0) {\n found = false\n i = -1\n c = str.charAt(end)\n\n while (++i < charLen) {\n if (c === chars[i]) {\n found = true\n end--\n break\n }\n }\n }\n\n return end >= 0 ? str.substring(0, end + 1) : ''\n}\n\n/**\n * Remove white-spaces from beginning and end of string.\n */\nexport function trim(str, chars = WHITE_SPACES) {\n chars = chars || WHITE_SPACES\n return ltrim(rtrim(str, chars), chars)\n}\n\n/**\n * \"Safer\" String.toLowerCase()\n */\nexport function lowerCase(str) {\n return str.toLowerCase()\n}\n\n/**\n * \"Safer\" String.toUpperCase()\n */\nexport function upperCase(str) {\n return str.toUpperCase()\n}\n\n/**\n * Convert string to camelCase text.\n */\nexport function camelCase(str) {\n str = replaceAccents(str)\n str = removeNonWord(str)\n .replace(/-/g, ' ') // convert all hyphens to spaces\n .replace(/\\s[a-z]/g, upperCase) // convert first char of each word to UPPERCASE\n .replace(/\\s+/g, '') // remove spaces\n .replace(/^[A-Z]/g, lowerCase) // convert first char to lowercase\n return str\n}\n\n/**\n * Add space between camelCase text.\n */\nexport function unCamelCase(str) {\n str = str.replace(/([a-z\\xE0-\\xFF])([A-Z\\xC0\\xDF])/g, '$1 $2')\n str = str.toLowerCase() // add space between camelCase text\n return str\n}\n\n/**\n * UPPERCASE first char of each word.\n */\nexport function properCase(str) {\n return lowerCase(str).replace(/^\\w|\\s\\w/g, upperCase)\n}\n\n/**\n * camelCase + UPPERCASE first char\n */\nexport function pascalCase(str) {\n return camelCase(str).replace(/^[a-z]/, upperCase)\n}\n\n/**\n * UPPERCASE first char of each sentence and lowercase other chars.\n */\nexport function sentenceCase(str) {\n // Replace first char of each sentence (new line or after '.\\s+') to\n // UPPERCASE\n return lowerCase(str).replace(/(^\\w)|\\.\\s+(\\w)/gm, upperCase)\n}\n\n/**\n * Convert to lower case, remove accents, remove non-word chars and\n * replace spaces with the specified delimeter.\n * Does not split camelCase text.\n */\nexport function slugify(str: any, delimeter) {\n if (delimeter == null) {\n delimeter = '-'\n }\n\n str = replaceAccents(str)\n str = removeNonWord(str)\n str = trim(str) // should come after removeNonWord\n .replace(/ +/g, delimeter) // replace spaces with delimeter\n .toLowerCase()\n\n return str\n}\n\n/**\n * Replaces spaces with hyphens, split camelCase text, remove non-word chars, remove accents and convert to lower case.\n */\nexport function hyphenate(str) {\n str = unCamelCase(str)\n return slugify(str, '-')\n}\n\n/**\n * Replaces hyphens with spaces. (only hyphens between word chars)\n */\nexport function unhyphenate(str) {\n return str.replace(/(\\w)(-)(\\w)/g, '$1 $3')\n}\n\n/**\n * Replaces spaces with underscores, split camelCase text, remove\n * non-word chars, remove accents and convert to lower case.\n */\nexport function underscore(str) {\n str = unCamelCase(str)\n return slugify(str, '_')\n}\n\n/**\n * Convert line-breaks from DOS/MAC to a single standard (UNIX by default)\n */\nexport function normalizeLineBreaks(str, lineEnd) {\n lineEnd = lineEnd || '\\n'\n\n return str\n .replace(/\\r\\n/g, lineEnd) // DOS\n .replace(/\\r/g, lineEnd) // Mac\n .replace(/\\n/g, lineEnd) // Unix\n}\n\n/**\n * Searches for a given substring\n */\nexport function contains(str, substring, fromIndex) {\n return str.indexOf(substring, fromIndex) !== -1\n}\n\n/**\n * Truncate string at full words.\n */\nexport function crop(str, maxChars, append) {\n return truncate(str, maxChars, append, true)\n}\n\n/**\n * Escape RegExp string chars.\n */\nexport function escapeRegExp(str) {\n var ESCAPE_CHARS = /[\\\\.+*?\\^$\\[\\](){}\\/'#]/g\n return str.replace(ESCAPE_CHARS, '\\\\$&')\n}\n\n/**\n * Escapes a string for insertion into HTML.\n */\nexport function escapeHtml(str) {\n str = str\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/'/g, ''')\n .replace(/\"/g, '"')\n\n return str\n}\n\n/**\n * Unescapes HTML special chars\n */\nexport function unescapeHtml(str) {\n str = str\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/'/g, \"'\")\n .replace(/"/g, '\"')\n return str\n}\n\n/**\n * Escape string into unicode sequences\n */\nexport function escapeUnicode(str, shouldEscapePrintable) {\n return str.replace(/[\\s\\S]/g, function (ch) {\n // skip printable ASCII chars if we should not escape them\n if (!shouldEscapePrintable && /[\\x20-\\x7E]/.test(ch)) {\n return ch\n }\n // we use \"000\" and slice(-4) for brevity, need to pad zeros,\n // unicode escape always have 4 chars after \"\\u\"\n return '\\\\u' + ('000' + ch.charCodeAt(0).toString(16)).slice(-4)\n })\n}\n\n/**\n * Remove HTML tags from string.\n */\nexport function stripHtmlTags(str) {\n return str.replace(/<[^>]*>/g, '')\n}\n\n/**\n * Remove non-printable ASCII chars\n */\nexport function removeNonASCII(str) {\n // Matches non-printable ASCII chars -\n // http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters\n return str.replace(/[^\\x20-\\x7E]/g, '')\n}\n\n/**\n * String vazia\n */\nexport function isEmpty(str) {\n return str === '' || str === null || str === undefined\n}\n\n/**\n * String interpolation\n */\nexport function interpolate(template, replacements, syntax) {\n var stache = /\\{\\{(\\w+)\\}\\}/g //mustache-like\n\n var replaceFn = function (_match, prop) {\n return prop in replacements ? replacements[prop] : ''\n }\n\n return template.replace(syntax || stache, replaceFn)\n}\n\n/**\n * Pad string with `char` if its' length is smaller than `minLen`\n */\nexport function rpad(str, minLen, ch) {\n ch = ch || ' '\n return str.length < minLen ? str + repeat(ch, minLen - str.length) : str\n}\n\n/**\n * Pad string with `char` if its' length is smaller than `minLen`\n */\nexport function lpad(str, minLen, ch) {\n ch = ch || ' '\n\n return str.length < minLen ? repeat(ch, minLen - str.length) + str : str\n}\n\n/**\n * Repeat string n times\n */\nexport function repeat(str, n) {\n return new Array(n + 1).join(str)\n}\n\n/**\n * Limit number of chars.\n */\nexport function truncate(str, maxChars, append, onlyFullWords) {\n append = append || '...'\n maxChars = onlyFullWords ? maxChars + 1 : maxChars\n\n str = trim(str)\n if (str.length <= maxChars) {\n return str\n }\n str = str.substr(0, maxChars - append.length)\n //crop at last space or remove trailing whitespace\n str = onlyFullWords ? str.substr(0, str.lastIndexOf(' ')) : trim(str)\n return str + append\n}\n\n/**\n * Capture all capital letters following a word boundary (in case the\n * input is in all caps)\n */\nexport function abbreviate(str) {\n return str.match(/\\b([A-Z])/g).join('')\n}\n\nexport function convertISOStringToDate(isoString: string): Date {\n if (!isoString || isoString === ''){\n return undefined\n }\n const hasTimeInfo = isoString.includes('T')\n if (!hasTimeInfo) {\n isoString += 'T00:00:00' // Adiciona hora padrão '00:00:00' se não houver informação de hora\n }\n return parseISO(isoString)\n}\n\nexport function convertDateToISOString(date: Date): string {\n if (!date){\n return ''\n }\n return format(date, \"yyyy-MM-dd'T'HH:mm:ss\")\n}\n\nexport function formatStr(...values) {\n var formatted = values[0]\n for (var i = 1; i < values.length; i++) {\n var regexp = new RegExp('\\\\{' + (i - 1) + '\\\\}', 'gi')\n formatted = formatted.replace(regexp, values[i])\n }\n return formatted\n}\n\n\nconst decimalToHex = d => {\n let hex = Number(d).toString(16);\n const padding = 2;\n\n while (hex.length < padding) {\n hex = `0${hex}`;\n }\n\n return hex;\n};\n\nconst hexToDecimal = h => parseInt(h, 16);\n\nexport const compressString = str =>\n compressToUint8Array(str).reduce(\n (acc, value) => `${acc}${decimalToHex(value)}`,\n '',\n );\n\nexport const decompressString = str => {\n const compressed = str.match(/.{2}/g).map(hexToDecimal);\n return decompressFromUint8Array(compressed);\n};\n\nexport function isBase64(str: string): boolean {\n try {\n return btoa(atob(str)) === str;\n } catch (err) {\n return false;\n }\n}","export function getKeyByEnumValue<T>(enumObj: T, value: any): string | undefined {\n let keys = Object.keys(enumObj).filter(x => enumObj[x as keyof T] === value);\n return keys.length > 0 ? keys[0] : undefined;\n}","/* eslint-disable */\nexport const Operator = {\n IS: 'IS',\n BETWEEN: 'BETWEEN',\n LIKE: 'LIKE',\n EQ: 'EQ',\n NEQ: 'NEQ',\n GEQ: 'GEQ',\n LEQ: 'LEQ',\n GT: 'GT',\n LT: 'LT',\n NOT: 'NOT',\n IN: 'IN',\n IS_NOT: 'IS_NOT',\n AND: 'AND',\n OR: 'OR'\n}\n\nfunction is(type, obj) {\n const clas = Object.prototype.toString.call(obj).slice(8, -1)\n return obj !== undefined && obj !== null && clas === type\n}\n\nfunction isOperator(operator) {\n return (\n operator === Operator.IS ||\n operator === Operator.BETWEEN ||\n operator === Operator.LIKE ||\n operator === Operator.EQ ||\n operator === Operator.NEQ ||\n operator === Operator.GEQ ||\n operator === Operator.LEQ ||\n operator === Operator.GT ||\n operator === Operator.LT ||\n operator === Operator.NOT ||\n operator === Operator.IN ||\n operator === Operator.IS_NOT ||\n operator === Operator.AND ||\n operator === Operator.OR\n )\n}\n\nexport const ExpressionType = {\n FIELD: 'FIELD',\n FILTER: 'FILTER',\n GROUP: 'GROUP',\n OPERATION: 'OPERATION',\n AND: 'AND',\n OR: 'OR',\n IN: 'IN',\n BETWEEN: 'BETWEEN'\n}\n\nexport class FilterException {\n constructor(message) {\n this.message = message\n this.name = 'FilterException'\n }\n}\n\n/**\n *\n * Field Expression\n */\nclass FieldExpression {\n constructor(fieldName, fieldSql) {\n this.fieldName = fieldName\n this.fieldSql = fieldSql\n this.expressionType = ExpressionType.FIELD\n }\n\n getFieldName() {\n return this.fieldName()\n }\n\n setFieldName(fieldName) {\n this.fieldName = fieldName\n }\n\n toJSON(sb) {\n sb.append('\"type\" : \"FIELD\",')\n sb.append('\"name\" : \"' + this.fieldName + '\"')\n if (this.fieldSql) {\n sb.append(', \"nameSql\" : \"' + this.fieldSql + '\"')\n }\n }\n}\n\n/**\n *\n * Filter Expression\n */\n\nclass FilterExpression {\n constructor() {\n this.expressionType = ExpressionType.FILTER\n }\n\n applyOperation(operator, value) {\n throw new FilterException('applyOperation só pode ser usado nas classes concretas.')\n }\n applyInOperation() {\n throw new FilterException('applyInOperation só pode ser usado nas classes concretas.')\n }\n applyNotInOperation() {\n throw new FilterException('applyNotInOperation só pode ser usado nas classes concretas.')\n }\n applyBetweenOperation() {\n throw new FilterException('applyBetweenOperation só pode ser usado nas classes concretas.')\n }\n EQ(value) {\n return this.applyOperation(Operator.EQ, value)\n }\n\n NEQ(value) {\n return this.applyOperation(Operator.NEQ, value)\n }\n\n GEQ(value) {\n return this.applyOperation(Operator.GEQ, value)\n }\n\n GT(value) {\n return this.applyOperation(Operator.GT, value)\n }\n\n LT(value) {\n return this.applyOperation(Operator.LT, value)\n }\n\n AND() {\n if (arguments.length === 3) {\n return new AndExpression(\n this,\n new OperationExpression(arguments[0], arguments[1], arguments[2])\n )\n } else if (arguments.length === 1) {\n if (typeof arguments[0] === 'object') {\n if (arguments[0].expressionType === undefined) {\n throw new FilterException(\n 'Tipo de parâmetro incorreto para uso de AND. Parâmetro ' + arguments[0]\n )\n } else {\n if (arguments[0].expressionType === ExpressionType.FIELD) {\n return new AndExpression(this, new OperationExpression(arguments[0]))\n } else {\n return new AndExpression(this, arguments[0])\n }\n }\n } else {\n throw new FilterException('Parâmetro deve ser do tipo Object.')\n }\n } else {\n throw new FilterException('Número de parâmetros incorretos para a chamade de AND')\n }\n }\n\n OR() {\n if (arguments.length === 4) {\n return new OrExpression(this, new OrExpression(arguments[0], arguments[1], arguments[2]))\n } else if (arguments.length === 1) {\n if (typeof arguments[0] === 'object') {\n if (arguments[0].expressionType === undefined) {\n throw new FilterException(\n 'Tipo de parâmetro incorreto para uso de OR. Parâmetro ' + arguments[0]\n )\n } else {\n if (arguments[0].expressionType === ExpressionType.FIELD) {\n return new OrExpression(this, new OperationExpression(arguments[0]))\n } else {\n return new OrExpression(this, arguments[0])\n }\n }\n } else {\n throw new FilterException('Parâmetro deve ser do tipo Object.')\n }\n } else {\n throw new FilterException('Número de parâmetros incorretos para a chamade de OR')\n }\n }\n\n LEQ(value) {\n return this.applyOperation(Operator.LEQ, value)\n }\n\n LIKE(value) {\n return this.applyOperation(Operator.LIKE, value)\n }\n\n BETWEEN(valueStart, valueEnd) {\n return this.applyBetweenOperation(valueStart, valueEnd)\n }\n\n STARTSWITH(value) {\n if (ArchbaseStringUtils.isEmpty(value)) {\n throw new FilterException('Para usar STARTSWITH informe um valor.')\n }\n value = value.concat('%')\n return this.applyOperation(Operator.LIKE, value)\n }\n\n ENDSWITH(value) {\n if (ArchbaseStringUtils.isEmpty(value)) {\n throw new FilterException('Para usar ENDSWITH informe um valor.')\n }\n value = '%'.concat(value)\n return this.applyOperation(Operator.LIKE, value)\n }\n\n CONTAINS(value) {\n if (ArchbaseStringUtils.isEmpty(value)) {\n throw new FilterException('Para usar v informe um valor.')\n }\n value = '%'.concat(value.concat('%'))\n return this.applyOperation(Operator.LIKE, value)\n }\n\n IN() {\n return this.applyInOperation(arguments[0])\n }\n\n NOTIN() {\n return this.applyNotInOperation(arguments[0])\n }\n\n ISNULL() {\n return this.applyOperation(Operator.IS, 'NULL')\n }\n\n ISNOTNULL() {\n return this.applyOperation(Operator.IS_NOT, 'NULL')\n }\n toJSON(sb) {\n throw new FilterException(\n 'toJSON deve ser implementado nas classes concretas herdadas de FilterExpression.'\n )\n }\n}\n\n/**\n *\n * Operation Expression\n */\n\nclass OperationExpression extends FilterExpression {\n constructor(lhsValue, operator, rhsValue) {\n super()\n this.lhsValue = lhsValue\n this.rhsValue = rhsValue\n this.operator = operator\n this.expressionType = ExpressionType.OPERATION\n }\n\n applyOperation(newOperator, newRhsValue) {\n if (!isOperator(newOperator)) {\n throw new FilterException(newOperator + ' não é um operador válido.')\n }\n\n if (this.operator !== undefined) {\n throw new FilterException(\n 'Não é possível aplicar ' +\n newOperator +\n ' operation on an ' +\n this.operator +\n ' expression.'\n )\n }\n\n return new OperationExpression(this.lhsValue, newOperator, newRhsValue)\n }\n\n applyInOperation() {\n if (arguments[0].length === 0) {\n throw new FilterException('Para usar operação IN é necessário informar os valores.')\n }\n\n if (!(this.lhsValue instanceof FieldExpression)) {\n throw new FilterException(\"Somente é possível aplicar a operação 'IN' em uma coluna.\")\n }\n return new InExpression(this.lhsValue, false, arguments[0])\n }\n\n applyNotInOperation() {\n if (arguments[0].length === 0) {\n throw new FilterException('Para usar operação NOT IN é necessário informar os valores.')\n }\n\n if (!(this.lhsValue instanceof FieldExpression)) {\n throw new FilterException(\"Somente é possível aplicar a operação 'NOT IN' em uma coluna.\")\n }\n return new InExpression(this.lhsValue, true, arguments[0])\n }\n\n applyBetweenOperation(valueStart, valueEnd) {\n if (valueStart === undefined) {\n throw new FilterException('Para usar operação BETWEEN é necessário informar o valor inicial.')\n }\n\n if (valueEnd === undefined) {\n throw new FilterException('Para usar operação BETWEEN é necessário informar o valor final.')\n }\n\n if (!(this.lhsValue instanceof FieldExpression)) {\n throw new FilterException(\"Somente é possível aplicar a operação 'BETWEEN' em uma coluna.\")\n }\n return new BetweenExpression(this.lhsValue, valueStart, valueEnd)\n }\n toJSON(sb) {\n sb.append('\"type\" : \"OP\",')\n sb.append('\"lhsValue\" : {')\n this.lhsValue.toJSON(sb)\n sb.append('},')\n if (is('Number', this.rhsValue)) {\n sb.append('\"rhsValue\" : ' + this.rhsValue + ',')\n } else {\n sb.append('\"rhsValue\" : \"' + this.rhsValue + '\",')\n }\n\n sb.append('\"operator\" : \"' + this.operator + '\"')\n }\n}\n\n/**\n *\n * Group Expression\n */\n\nclass GroupExpression extends FilterExpression {\n constructor(expressions) {\n super()\n this.expressions = expressions\n this.expressionType = ExpressionType.GROUP\n }\n\n getExpressions() {\n return this.expressions\n }\n\n getOperator() {\n throw new FilterException(\n 'Uso incorreto do método. Este método deve ser implementado por classes concretas que herdam de GroupExpression.'\n )\n }\n applyOperation(operator, value) {\n const lastIndex = this.expressions.length - 1\n const lastClause = this.expressions[lastIndex]\n this.expressions[lastIndex] = lastClause.applyOperation(operator, value)\n return this\n }\n applyInOperation() {\n const lastIndex = this.expressions.length - 1\n const lastClause = this.expressions[lastIndex]\n this.expressions[lastIndex] = lastClause.applyInOperation(arguments[0])\n return this\n }\n applyNotInOperation() {\n const lastIndex = this.expressions.length - 1\n const lastClause = this.expressions[lastIndex]\n this.expressions[lastIndex] = lastClause.applyNotInOperation(arguments[0])\n return this\n }\n applyBetweenOperation(valueStart, valueEnd) {\n const lastIndex = this.expressions.length - 1\n const lastClause = this.expressions[lastIndex]\n this.expressions[lastIndex] = lastClause.applyBetweenOperation(valueStart, valueEnd)\n return this\n }\n toJSON(sb) {\n sb.append('\"type\" : \"' + this.getOperator() + '\",')\n sb.append('\"expressions\" : [')\n let appendDelimiter = false\n for (let i = 0; i < this.expressions.length; i++) {\n if (appendDelimiter) {\n sb.append(',')\n }\n sb.append('{')\n this.expressions[i].toJSON(sb)\n sb.append('}')\n\n appendDelimiter = true\n }\n sb.append(']')\n }\n}\n\n/**\n *\n * IN Expression\n */\nclass InExpression extends FilterExpression {\n constructor() {\n super()\n if (arguments.length < 3) {\n throw new FilterException('Para usar a expressão IN informe os parâmetros corretamente.')\n }\n\n this.field = arguments[0]\n this.negative = arguments[1]\n this.values = arguments[2]\n this.expressionType = ExpressionType.IN\n }\n\n isNegative() {\n return this.negative\n }\n\n applyOperation(operator, value) {\n throw new FilterException('Não é possível aplicar a operação ' + operator + ' na expressão IN.')\n }\n applyInOperation() {\n throw new FilterException('Não é possível aplicar a operação IN na expressão IN.')\n }\n applyNotInOperation() {\n throw new FilterException('Não é possível aplicar a operação NOT IN na expressão IN.')\n }\n applyBetweenOperation(valueStart, valueEnd) {\n throw new FilterException('Não é possível aplicar a operação BETWEEEN na expressão IN.')\n }\n toJSON(sb) {\n sb.append('\"type\" : \"IN\",')\n sb.append('\"field\" : {')\n this.field.toJSON(sb)\n sb.append('},')\n sb.append('\"values\" : [')\n let appendDelimiter = false\n\n for (let i = 0; i < this.values.length; i++) {\n if (appendDelimiter) sb.append(',')\n\n if (is('Number', this.values[i])) {\n sb.append(this.values[i])\n } else {\n sb.append('\"' + this.values[i] + '\"')\n }\n appendDelimiter = true\n }\n sb.append('],')\n sb.append('\"negative\" : ' + this.negative)\n }\n}\n\n/**\n *\n * BETWEEN Expression\n */\nclass BetweenExpression extends FilterExpression {\n constructor(field, valueStart, valueEnd) {\n super()\n if (field === undefined) {\n throw new FilterException('Informe o valor do field para usar BETWEEN.')\n }\n if (valueStart === undefined) {\n throw new FilterException('Informe o valor inicial para usar BETWEEN.')\n }\n if (valueEnd === undefined) {\n throw new FilterException('Informe o valor final para usar BETWEEN.')\n }\n\n this.field = field\n this.valueStart = valueStart\n this.valueEnd = valueEnd\n this.expressionType = ExpressionType.BETWEEN\n }\n\n applyOperation(operator, value) {\n throw new FilterException(\n 'Não é possível aplicar a operação ' + operator + ' na expressão BETWEEN.'\n )\n }\n applyInOperation() {\n throw new FilterException('Não é possível aplicar a operação IN na expressão BETWEEN.')\n }\n applyNotInOperation() {\n throw new FilterException('Não é possível aplicar a operação NOT IN na expressão BETWEEN.')\n }\n applyBetweenOperation(valueStart, valueEnd) {\n throw new FilterException('Não é possível aplicar a operação BETWEEEN na expressão BETWEEN.')\n }\n toJSON(sb) {\n sb.append('\"type\" : \"BETWEEN\",')\n sb.append('\"field\" : {')\n this.field.toJSON(sb)\n sb.append('},')\n if (is('Number', this.valueStart)) {\n sb.append('\"valueStart\" : ' + this.valueStart + ',')\n } else {\n sb.append('\"valueStart\" : \"' + this.valueStart + '\",')\n }\n if (is('Number', this.valueEnd)) {\n sb.append('\"valueEnd\" : ' + this.valueEnd)\n } else {\n sb.append('\"valueEnd\" : \"' + this.valueEnd + '\"')\n }\n }\n}\n\n/**\n *\n * AND Expression\n */\nclass AndExpression extends GroupExpression {\n constructor() {\n const expressions = []\n for (let i = 0; i < arguments.length; i++) {\n expressions.push(arguments[i])\n }\n super(expressions)\n this.expressionType = ExpressionType.AND\n }\n\n getOperator() {\n return Operator.AND\n }\n}\n\n/**\n *\n * OR Expression\n */\nclass OrExpression extends GroupExpression {\n constructor() {\n const expressions = []\n for (let i = 0; i < arguments.length; i++) {\n expressions.push(arguments[i])\n }\n\n super(expressions)\n this.expressionType = ExpressionType.OR\n }\n\n getOperator() {\n return Operator.OR\n }\n}\n\n/**\n *\n * ArchbaseFilterDSL\n */\nexport class ArchbaseFilterDSL {\n constructor() {\n this.filterExpression = null\n this.fieldsToSort = []\n this.processRules = this.processRules.bind(this)\n this.WHERE = this.WHERE.bind(this)\n this.EQ = this.EQ.bind(this)\n this.NEQ = this.NEQ.bind(this)\n this.GEQ = this.GEQ.bind(this)\n this.LEQ = this.LEQ.bind(this)\n this.GT = this.GT.bind(this)\n this.LT = this.LT.bind(this)\n this.LIKE = this.LIKE.bind(this)\n this.IN = this.IN.bind(this)\n this.NOTIN = this.NOTIN.bind(this)\n this.AND = this.AND.bind(this)\n this.OR = this.OR.bind(this)\n this.ISNULL = this.ISNULL.bind(this)\n this.ISNOTNULL = this.ISNOTNULL.bind(this)\n this.betweenOrOp = this.betweenOrOp.bind(this)\n this.BETWEEN = this.BETWEEN.bind(this)\n this.OP = this.OP.bind(this)\n this.STARTSWITH = this.STARTSWITH.bind(this)\n this.CONTAINS = this.CONTAINS.bind(this)\n this.toJSON = this.toJSON.bind(this)\n }\n assertWhereClauseIsInitialized(operation) {\n if (this.filterExpression === null || this.filterExpression === undefined)\n throw new FilterException(\n \"Não é possível aplicar '\" + operation + \"' operador se o cláusula WHERE não existir.\"\n )\n }\n\n buildFrom(query, sort) {\n if (query.rules) {\n this.processRules(query.condition, query.rules, true)\n if (sort && sort.sortFields) {\n sort.sortFields.forEach((field) => {\n if (field.selected) {\n this.fieldsToSort.push(field.name + ' ' + field.asc_desc)\n }\n })\n }\n }\n }\n\n processRules(condition, rules, addWhere) {\n rules.forEach((rule) => {\n if (rule.field && !rule.disabled) {\n let CONDITION = _this.AND\n if (condition === 'or') {\n CONDITION = _this.OR\n }\n if (addWhere) {\n CONDITION = _this.WHERE\n }\n let newValue = rule.value\n let newValue2 = rule.value2\n if (newValue && newValue !== '') {\n if (rule.dataType === 'date') {\n newValue = ArchbaseDateUtils.formatDate(\n ArchbaseDateUtils.parseDateWithFormat(newValue, 'DD/MM/YYYY'),\n Archbase.dataSourceDatetimeFormat\n )\n } else if (rule.dataType === 'date_time') {\n newValue = ArchbaseDateUtils.formatDate(\n ArchbaseDateUtils.parseDateWithFormat(newValue, 'DD/MM/YYYY hh:mm:ss'),\n Archbase.dataSourceDatetimeFormat\n )\n }\n }\n\n if (newValue2 && newValue2 !== '') {\n if (rule.dataType === 'date') {\n newValue2 = ArchbaseDateUtils.formatDate(\n ArchbaseDateUtils.parseDateWithFormat(newValue2, 'DD/MM/YYYY'),\n Archbase.dataSourceDatetimeFormat\n )\n } else if (rule.dataType === 'date_time') {\n newValue2 = ArchbaseDateUtils.formatDate(\n ArchbaseDateUtils.parseDateWithFormat(newValue2, 'DD/MM/YYYY hh:mm:ss'),\n Archbase.dataSourceDatetimeFormat\n )\n }\n }\n\n if (rule.operator === 'null') {\n CONDITION(_this.EXP(_this.FIELD(rule.field, rule.fieldSql))).ISNULL()\n addWhere = false\n } else if (rule.operator === 'notNull') {\n CONDITION(_this.EXP(_this.FIELD(rule.field, rule.fieldSql))).ISNOTNULL()\n addWhere = false\n } else if (rule.operator === 'contains' && newValue && newValue !== '') {\n CONDITION(_this.EXP(_this.FIELD(rule.field, rule.fieldSql))).CONTAINS(newValue)\n addWhere = false\n } else if (rule.operator === 'startsWith' && newValue && newValue !== '') {\n CONDITION(_this.EXP(_this.FIELD(rule.field, rule.fieldSql))).STARTSWITH(newValue)\n addWhere = false\n } else if (rule.operator === 'endsWith' && newValue && newValue !== '') {\n CONDITION(_this.EXP(_this.FIELD(rule.field, rule.fieldSql))).ENDSWITH(newValue)\n addWhere = false\n } else if (rule.operator === '=' && newValue && newValue !== '') {\n CONDITION(_this.EXP(_this.FIELD(rule.field, rule.fieldSql))).EQ(newValue)\n addWhere = false\n } else if (rule.operator === '!=' && newValue && newValue !== '') {\n CONDITION(_this.EXP(_this.FIELD(rule.field, rule.fieldSql))).NEQ(newValue)\n addWhere = false\n } else if (rule.operator === '<' && newValue && newValue !== '') {\n CONDITION(_this.EXP(_this.FIELD(rule.field, rule.fieldSql))).LT(newValue)\n addWhere = false\n } else if (rule.operator === '>' && newValue && newValue !== '') {\n CONDITION(_this.EXP(_this.FIELD(rule.field, rule.fieldSql))).GT(newValue)\n addWhere = false\n } else if (rule.operator === '<=' && newValue && newValue !== '') {\n CONDITION(_this.EXP(_this.FIELD(rule.field, rule.fieldSql))).LEQ(newValue)\n addWhere = false\n } else if (rule.operator === '>=' && newValue && newValue !== '') {\n CONDITION(_this.EXP(_this.FIELD(rule.field, rule.fieldSql))).GEQ(newValue)\n addWhere = false\n } else if (\n rule.operator === 'between' &&\n newValue &&\n newValue !== '' &&\n newValue2 &&\n newValue2 !== ''\n ) {\n CONDITION(_this.EXP(_this.FIELD(rule.field, rule.fieldSql))).BETWEEN(newValue, newValue2)\n addWhere = false\n } else if (rule.operator === 'inList' && newValue && newValue !== '') {\n CONDITION(_this.EXP(_this.FIELD(rule.field, rule.fieldSql))).IN(newValue)\n addWhere = false\n } else if (rule.operator === 'notInList' && newValue && newValue !== '') {\n CONDITION(_this.EXP(_this.FIELD(rule.field, rule.fieldSql))).NOTIN(newValue)\n addWhere = false\n }\n }\n })\n\n rules.forEach((rule) => {\n if (rule.rules) {\n this.processRules(rule.condition, rule.rules, addWhere)\n }\n })\n }\n\n FIELD(name, nameSql) {\n return new FieldExpression(name, nameSql)\n }\n EXP(field) {\n return new OperationExpression(field)\n }\n WHERE() {\n if (arguments.length < 1) {\n throw new FilterException('Para criar uma condição WHERE informe ao menos um parâmetro.')\n }\n if (arguments.length === 3) {\n if (arguments[2] !== undefined) {\n this.filterExpression = new OperationExpression(arguments[0], arguments[1], arguments[2])\n }\n } else {\n this.filterExpression = arguments[0]\n if (\n arguments[0].expressionType !== undefined &&\n arguments[0].expressionType === ExpressionType.FIELD\n ) {\n this.filterExpression = new OperationExpression(arguments[0])\n }\n }\n return this\n }\n EQ(value) {\n this.assertWhereClauseIsInitialized('eq')\n this.filterExpression = this.filterExpression.EQ(value)\n return this\n }\n NEQ(value) {\n this.assertWhereClauseIsInitialized('neq')\n this.filterExpression = this.filterExpression.NEQ(value)\n return this\n }\n GEQ(value) {\n this.assertWhereClauseIsInitialized('geq')\n this.filterExpression = this.filterExpression.GEQ(value)\n return this\n }\n LEQ(value) {\n this.assertWhereClauseIsInitialized('leq')\n this.filterExpression = this.filterExpression.LEQ(value)\n return this\n }\n GT(value) {\n this.assertWhereClauseIsInitialized('gt')\n this.filterExpression = this.filterExpression.GT(value)\n return this\n }\n LT(value) {\n this.assertWhereClauseIsInitialized('lt')\n this.filterExpression = this.filterExpression.LT(value)\n return this\n }\n LIKE(value) {\n this.assertWhereClauseIsInitialized('like')\n this.filterExpression = this.filterExpression.LIKE(value)\n return this\n }\n IN() {\n const values = []\n for (let i = 0; i < arguments.length; i++) {\n values.push(arguments[i])\n }\n this.assertWhereClauseIsInitialized('in')\n this.filterExpression = this.filterExpression.IN(values)\n return this\n }\n NOTIN() {\n const values = []\n for (let i = 0; i < arguments.length; i++) {\n values.push(arguments[i])\n }\n this.assertWhereClauseIsInitialized('not in')\n this.filterExpression = this.filterExpression.NOTIN(values)\n return this\n }\n AND(columnOrExpression) {\n this.assertWhereClauseIsInitialized('and')\n this.filterExpression = this.filterExpression.AND(columnOrExpression)\n return this\n }\n OR(columnOrExpression) {\n this.assertWhereClauseIsInitialized('or')\n this.filterExpression = this.filterExpression.OR(columnOrExpression)\n return this\n }\n ISNULL() {\n this.assertWhereClauseIsInitialized('isNull')\n this.filterExpression = this.filterExpression.ISNULL()\n return this\n }\n ISNOTNULL() {\n this.assertWhereClauseIsInitialized('isNotNull')\n this.filterExpression = this.filterExpression.ISNOTNULL()\n return this\n }\n betweenOrOp(operator, valueStart, valueEnd) {\n this.assertWhereClauseIsInitialized(operator)\n this.filterExpression = this.filterExpression.betweenOrOp(operator, valueStart, valueEnd)\n return this\n }\n BETWEEN(valueStart, valueEnd) {\n this.assertWhereClauseIsInitialized('between')\n this.filterExpression = this.filterExpression.BETWEEN(valueStart, valueEnd)\n return this\n }\n OP(operator, value) {\n this.assertWhereClauseIsInitialized(operator)\n this.filterExpression = this.filterExpression.applyOperation(operator, value)\n return this\n }\n STARTSWITH(value) {\n this.assertWhereClauseIsInitialized('startsWith')\n this.filterExpression = this.filterExpression.STARTSWITH(value)\n return this\n }\n CONTAINS(value) {\n this.assertWhereClauseIsInitialized('contains')\n this.filterExpression = this.filterExpression.CONTAINS(value)\n return this\n }\n\n SORTBY(field, desc) {\n if (field instanceof FieldExpression) {\n this.fieldsToSort.push(field.getFieldName + (desc === true ? ' DESC' : ' ASC'))\n } else {\n this.fieldsToSort.push(field + (desc === true ? ' DESC' : ' ASC'))\n }\n }\n\n toJSON() {\n if (this.filterExpression !== undefined && this.filterExpression != null) {\n const sb = ArchbaseStringUtils.createStringBuilder()\n sb.append('{')\n sb.append(' \"filterExpression\" : {')\n this.filterExpression.toJSON(sb)\n sb.append('}, ')\n sb.append(' \"fieldsToSort\" : [')\n let appendDelimiter = false\n this.fieldsToSort.forEach(function (field) {\n if (appendDelimiter === true) {\n sb.append(', ')\n }\n sb.append('{ \"field\" : \"' + field + '\" }')\n appendDelimiter = true\n })\n sb.append(']')\n sb.append('}')\n return sb.toString()\n }\n }\n}\n","/**\n * Filter and Query types for Archbase Core\n */\n\n// Basic filter types\nexport interface IQueryFilterEntity {\n id?: any;\n companyId?: any;\n filter?: string;\n name?: string;\n description?: string;\n userOwner?: string;\n shared?: boolean;\n readOnly?: boolean;\n componentId?: string;\n}\n\nexport class QueryFilterEntity implements IQueryFilterEntity {\n id?: any;\n companyId?: any;\n filter?: string;\n name?: string;\n description?: string;\n userOwner?: string;\n shared?: boolean;\n readOnly?: boolean;\n componentId?: string;\n\n constructor(data?: Partial<IQueryFilterEntity>) {\n if (data) {\n Object.assign(this, data);\n }\n }\n}\n\n// Filter delegator types\nexport type DelegatorCallback = (error: string | null, result?: any) => void;\n\nexport interface ArchbaseQueryFilterDelegator {\n onSaveFilter?: DelegatorCallback;\n onRemoveFilter?: DelegatorCallback;\n onSelectFilter?: DelegatorCallback;\n onClearFilter?: DelegatorCallback;\n addNewFilter?(filter: IQueryFilterEntity, onResult: DelegatorCallback): void;\n saveFilter?(filter: IQueryFilterEntity, onResult: DelegatorCallback): void;\n removeFilterBy?(filter: IQueryFilterEntity, onResult: DelegatorCallback): void;\n getFilterById?(id: any): IQueryFilterEntity | undefined;\n getFirstFilter?(): IQueryFilterEntity | undefined;\n getFilters?(): IQueryFilterEntity[];\n}\n\n// Query filter types\nexport interface ArchbaseQueryFilter {\n filter?: any;\n sort?: any;\n searchText?: string;\n activeFilterIndex?: number;\n quickFilterText?: string;\n activeFilter?: IQueryFilterEntity;\n}\n\n// Filter constants\nexport const FILTER_TYPE = {\n QUICK: 'QUICK',\n NORMAL: 'NORMAL', \n ADVANCED: 'ADVANCED'\n} as const;\n\nexport type FilterType = typeof FILTER_TYPE[keyof typeof FILTER_TYPE];\n\n// Export constants for backward compatibility\nexport const QUICK = FILTER_TYPE.QUICK;\nexport const NORMAL = FILTER_TYPE.NORMAL;\nexport const ADVANCED = FILTER_TYPE.ADVANCED;","/**\n * Extended types for QueryBuilder system (specific to querybuilder components)\n * Base types are in filter.ts to avoid duplication\n */\n\nexport type PositionType = 'filter' | 'fields' | 'range' | undefined;\nexport type RangeType = 'month' | 'week' | 'range' | 'day' | undefined;\nexport type DataType = 'string' | 'number' | 'date' | 'date_time' | 'time' | 'boolean';\n\nexport interface FilterValue {\n label: string;\n value: string;\n}\n\nexport interface SortField {\n name: string;\n selected: boolean;\n order: number;\n asc_desc: string;\n label: string;\n}\n\nexport interface Field {\n name: string;\n label: string;\n dataType: DataType;\n operator: string;\n quickFilter: boolean;\n quickFilterSort: boolean;\n sortable: boolean;\n listValues: FilterValue[];\n searchComponent?: any;\n searchField?: any;\n nameSql?: string;\n}\n\nexport interface Rule {\n field: string;\n operator: string;\n value: any;\n condition?: string;\n}\n\nexport interface Filter {\n id: string;\n selectedFields: Field[];\n quickFilterText: string;\n quickFilterFieldsText: string;\n rules: Rule[];\n condition: string;\n filterType: any; // Reference to FilterType from filter.ts\n}\n\nexport interface Sort {\n quickFilterSort: string;\n sortFields: SortField[];\n activeIndex: number;\n}\n\n// Extended ArchbaseQueryFilter for QueryBuilder (more specific than filter.ts version)\nexport interface ArchbaseQueryBuilderFilter {\n id?: number;\n filter: Filter;\n sort: Sort;\n name?: string;\n viewName?: string;\n apiVersion?: string;\n selectedFields?: Field[];\n}\n\nexport interface FilterOptions {\n currentFilter?: ArchbaseQueryBuilderFilter;\n activeFilterIndex: number;\n enabledAdvancedFilter: boolean;\n apiVersion: string;\n viewName: string;\n componentName: string;\n onApplyFilter?: (currentFilter: ArchbaseQueryBuilderFilter, index: number) => void;\n}\n\n// Constants for QueryBuilder\nexport const QUICK_FILTER_INDEX = -2;\nexport const NEW_FILTER_INDEX = -1;\n\n// Filter operators\nexport const OP_NULL = 'null';\nexport const OP_NOT_NULL = 'notNull';\nexport const OP_CONTAINS = 'contains';\nexport const OP_STARTSWITH = 'startsWith';\nexport const OP_ENDSWITH = 'endsWith';\nexport const OP_EQUALS = '=';\nexport const OP_NOT_EQUALS = '!=';\nexport const OP_GREATER = '>';\nexport const OP_LESS = '<';\nexport const OP_GREATER_OR_EQUAL = '>=';\nexport const OP_LESS_OR_EQUAL = '<=';\nexport const OP_BETWEEN = 'between';\nexport const OP_IN_LIST = 'inList';\nexport const OP_NOT_IN_LIST = 'notInList';","import { createContext } from \"react\";\n\nexport type ArchbaseErrorBoundaryContextType = {\n didCatch: boolean;\n error: any;\n resetErrorBoundary: (...args: any[]) => void;\n};\n\nexport const ArchbaseErrorBoundaryContext =\n createContext<ArchbaseErrorBoundaryContextType | null>(null);\n","import React, { Component, createElement, ErrorInfo, isValidElement } from 'react';\nimport { ArchbaseErrorBoundaryContext } from './ArchbaseErrorBoundaryContext';\nimport { ArchbaseErrorBoundaryProps, FallbackProps } from './types';\n\ntype ArchbaseErrorBoundaryState =\n\t| {\n\t\t\tdidCatch: true;\n\t\t\terror: any;\n\t }\n\t| {\n\t\t\tdidCatch: false;\n\t\t\terror: null;\n\t };\n\nconst initialState: ArchbaseErrorBoundaryState = {\n\tdidCatch: false,\n\terror: null,\n};\n\nexport class ArchbaseErrorBoundary extends Component<ArchbaseErrorBoundaryProps, ArchbaseErrorBoundaryState> {\n\tconstructor(props: ArchbaseErrorBoundaryProps) {\n\t\tsuper(props);\n\n\t\tthis.resetErrorBoundary = this.resetErrorBoundary.bind(this);\n\t\tthis.state = initialState;\n\t}\n\n\tstatic getDerivedStateFromError(error: Error) {\n\t\treturn { didCatch: true, error };\n\t}\n\n\tresetErrorBoundary(...args: any[]) {\n\t\tconst { error } = this.state;\n\n\t\tif (error !== null) {\n\t\t\tthis.props.onReset?.({\n\t\t\t\targs,\n\t\t\t\treason: 'imperative-api',\n\t\t\t});\n\n\t\t\tthis.setState(initialState);\n\t\t}\n\t}\n\n\tcomponentDidCatch(error: Error, info: ErrorInfo) {\n\t\tthis.props.onError?.(error, info);\n\t}\n\n\tcomponentDidUpdate(prevProps: ArchbaseErrorBoundaryProps, prevState: ArchbaseErrorBoundaryState) {\n\t\tconst { didCatch } = this.state;\n\t\tconst { resetKeys } = this.props;\n\n\t\t// Há um caso extremo em que se a coisa que desencadeou o erro *também* estiver no array resetKeys,\n\t\t// acabaríamos redefinindo o limite do erro imediatamente.\n\t\t// Isso provavelmente acionaria um segundo erro.\n\t\t// Portanto, garantimos que não verificamos as resetKeys na primeira chamada do cDU após o erro ser definido.\n\t\tif (didCatch && prevState.error !== null && hasArrayChanged(prevProps.resetKeys, resetKeys)) {\n\t\t\tthis.props.onReset?.({\n\t\t\t\tnext: resetKeys,\n\t\t\t\tprev: prevProps.resetKeys,\n\t\t\t\treason: 'keys',\n\t\t\t});\n\n\t\t\tthis.setState(initialState);\n\t\t}\n\t}\n\n\trender() {\n\t\tconst { children, fallbackRender, FallbackComponent, fallback, othersProps } = this.props;\n\t\tconst { didCatch, error } = this.state;\n\n\t\tlet childToRender = children;\n\n\t\tif (didCatch) {\n\t\t\tconst props: FallbackProps = {\n\t\t\t\terror,\n\t\t\t\tresetErrorBoundary: this.resetErrorBoundary,\n\t\t\t\tothersProps,\n\t\t\t};\n\n\t\t\tif (typeof fallbackRender === 'function') {\n\t\t\t\tchildToRender = fallbackRender(props);\n\t\t\t} else if (FallbackComponent) {\n\t\t\t\tchildToRender = createElement(FallbackComponent, props);\n\t\t\t} else if (fallback === null || isValidElement(fallback)) {\n\t\t\t\tchildToRender = fallback;\n\t\t\t} else {\n\t\t\t\tconsole.error('ArchaseErrorBoundary requer um fallback, fallbackRender, ou FallbackComponent');\n\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\n\t\treturn createElement(\n\t\t\tArchbaseErrorBoundaryContext.Provider,\n\t\t\t{\n\t\t\t\tvalue: {\n\t\t\t\t\tdidCatch,\n\t\t\t\t\terror,\n\t\t\t\t\tresetErrorBoundary: this.resetErrorBoundary,\n\t\t\t\t},\n\t\t\t},\n\t\t\tchildToRender,\n\t\t);\n\t}\n}\n\nfunction hasArrayChanged(a: any[] = [], b: any[] = []): boolean {\n\treturn a.length !== b.length || a.some((item, index) => !Object.is(item, b[index]));\n}\n","import { ArchbaseErrorBoundaryContextType } from './ArchbaseErrorBoundaryContext';\n\nexport function assertArchbaseErrorBoundaryContext(value: any): asserts value is ArchbaseErrorBoundaryContextType {\n\tif (value == null || typeof value.didCatch !== 'boolean' || typeof value.resetErrorBoundary !== 'function') {\n\t\tthrow new Error('ArchbaseErrorBoundaryContext not found');\n\t}\n}\n","import { useContext, useMemo, useState } from 'react';\nimport { ArchbaseErrorBoundaryContext } from './ArchbaseErrorBoundaryContext';\nimport { assertArchbaseErrorBoundaryContext } from './assertArchbaseErrorBoundaryContext';\n\ntype UseArchbaseErrorBoundaryState<TError> = { error: TError; hasError: true } | { error: null; hasError: false };\n\nexport type UseArchbaseErrorBoundaryApi<TError> = {\n\tresetBoundary: () => void;\n\tshowBoundary: (error: TError) => void;\n};\n\nexport function useArchbaseErrorBoundary<TError = any>(): UseArchbaseErrorBoundaryApi<TError> {\n\tconst context = useContext(ArchbaseErrorBoundaryContext);\n\n\tassertArchbaseErrorBoundaryContext(context);\n\n\tconst [state, setState] = useState<UseArchbaseErrorBoundaryState<TError>>({\n\t\terror: null,\n\t\thasError: false,\n\t});\n\n\tconst memoized = useMemo(\n\t\t() => ({\n\t\t\tresetBoundary: () => {\n\t\t\t\tcontext.resetErrorBoundary();\n\t\t\t\tsetState({ error: null, hasError: false });\n\t\t\t},\n\t\t\tshowBoundary: (error: TError) =>\n\t\t\t\tsetState({\n\t\t\t\t\terror,\n\t\t\t\t\thasError: true,\n\t\t\t\t}),\n\t\t}),\n\t\t[context.resetErrorBoundary],\n\t);\n\n\tif (state.hasError) {\n\t\tthrow state.error;\n\t}\n\n\treturn memoized;\n}\n","import {\n\tComponentType,\n\tcreateElement,\n\tForwardedRef,\n\tforwardRef,\n\tForwardRefExoticComponent,\n\tPropsWithoutRef,\n\tRefAttributes,\n} from 'react';\nimport { ArchbaseErrorBoundary } from './ArchbaseErrorBoundary';\nimport { ArchbaseErrorBoundaryProps } from './types';\n\nexport function withArchbaseErrorBoundary<Props extends Object>(\n\tcomponent: ComponentType<Props>,\n\terrorBoundaryProps: ArchbaseErrorBoundaryProps,\n): any {\n\tconst Wrapped = forwardRef((props: any, ref: any) =>\n\t\tcreateElement(ArchbaseErrorBoundary, errorBoundaryProps, createElement(component, { ...props, ref })),\n\t);\n\n\tconst name = component.displayName || component.name || 'Unknown';\n\tWrapped.displayName = `withErrorBoundary(${name})`;\n\n\treturn Wrapped;\n}\n","import { t } from 'i18next';\nimport React, { PureComponent } from 'react';\nimport { FallbackProps } from './types';\n\nexport type ArchbaseErrorFallbackProps = FallbackProps;\n\nexport class ArchbaseErrorFallback extends PureComponent<ArchbaseErrorFallbackProps> {\n\tonClick() {\n\t\twindow.location.reload();\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<div id=\"notfound\" {...this.props.othersProps}>\n\t\t\t\t<div className=\"notfound\">\n\t\t\t\t\t<div className=\"notfound-404\">\n\t\t\t\t\t\t<h1>Oops!</h1>\n\t\t\t\t\t</div>\n\t\t\t\t\t<h3>{`${t('archbase:Sentimos muito, ocorreu um erro inesperado.')}`}</h3>\n\t\t\t\t\t<div\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tminHeight: '50px',\n\t\t\t\t\t\t\tborderRadius: '8px',\n\t\t\t\t\t\t\tborderWidth: '1px 1px 1px 10px',\n\t\t\t\t\t\t\tborderStyle: 'solid',\n\t\t\t\t\t\t\tborderColor: 'silver silver silver red',\n\t\t\t\t\t\t\tfontSize: '18px',\n\t\t\t\t\t\t\tcolor: 'red',\n\t\t\t\t\t\t\tmargin: '20px',\n\t\t\t\t\t\t\tjustifyContent: 'center',\n\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\tpadding: '8px',\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{this.props.error.message}\n\t\t\t\t\t</div>\n\t\t\t\t\t<button onClick={this.onClick}>{`${t('archbase:Voltar')}`}</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n","//https://github.com/vanilla-masker/vanilla-masker\nexport type MaskOptions = {\n\tdelimiter?: string;\n\tlastOutput?: string;\n\tprecision?: number;\n\tseparator?: string;\n\tshowSignal?: boolean;\n\tsuffixUnit?: string;\n\tunit?: string;\n\tzeroCents?: boolean;\n\tpattern?: string;\n\tplaceholder?: string;\n};\n\nexport class ArchbaseMasker {\n\tprivate elements: HTMLElement[];\n\n\tconstructor(elements: HTMLElement | HTMLElement[]) {\n\t\tif (!elements) {\n\t\t\tthrow new Error('VanillaMasker: There is no element to bind.');\n\t\t}\n\t\tthis.elements = Array.isArray(elements) ? elements : [elements];\n\t}\n\n\tprivate static isAllowedKeyCode(keyCode: number): boolean {\n\t\tconst BY_PASS_KEYS = [9, 16, 17, 18, 36, 37, 38, 39, 40, 91, 92, 93];\n\t\treturn !BY_PASS_KEYS.includes(keyCode);\n\t}\n\n\tprivate bindElementToMask(maskFunction: (value: string, opts?: MaskOptions) => string, opts?: MaskOptions): void {\n\t\tthis.elements.forEach((element: any) => {\n\t\t\tconst onType = (e: KeyboardEvent) => {\n\t\t\t\tif (ArchbaseMasker.isAllowedKeyCode(e.keyCode)) {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tconst value = element.value;\n\t\t\t\t\t\telement.value = maskFunction(value, opts);\n\t\t\t\t\t\tif (element.setSelectionRange && opts && opts.suffixUnit) {\n\t\t\t\t\t\t\telement.setSelectionRange(element.value.length, element.value.length - opts.suffixUnit.length);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 0);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\telement.onkeyup = onType;\n\t\t});\n\t}\n\n\tpublic static toMoney(value: string, opts: MaskOptions = {}): string {\n\t\topts = {\n\t\t\tdelimiter: '.',\n\t\t\tseparator: ',',\n\t\t\tprecision: 2,\n\t\t\tunit: '',\n\t\t\tsuffixUnit: '',\n\t\t\tzeroCents: false,\n\t\t\t...opts,\n\t\t};\n\n\t\tlet money = value.replace(/[\\D]/g, '').padStart(opts.precision + 1, '0');\n\t\tlet decimalPart = money.slice(-opts.precision);\n\t\tlet integerPart = money.slice(0, -opts.precision);\n\n\t\tif (!opts.zeroCents) {\n\t\t\tdecimalPart = '.' + decimalPart;\n\t\t}\n\n\t\tintegerPart = integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, opts.delimiter);\n\n\t\treturn opts.unit + integerPart + (opts.precision > 0 ? opts.separator + decimalPart : '') + opts.suffixUnit;\n\t}\n\n\tpublic static toPattern(value: string, opts: MaskOptions): string {\n\t\tconst pattern = opts.pattern || '';\n\t\tlet iValue = 0; // index of value\n\t\tlet output = '';\n\n\t\tfor (let iPattern = 0; iPattern < pattern.length; iPattern++) {\n\t\t\tconst patternChar = pattern[iPattern];\n\t\t\tconst valueChar = value[iValue] || '';\n\n\t\t\tswitch (patternChar) {\n\t\t\t\tcase '9': // Digit\n\t\t\t\t\tif (/\\d/.test(valueChar)) {\n\t\t\t\t\t\toutput += valueChar;\n\t\t\t\t\t\tiValue++;\n\t\t\t\t\t} else if (opts.placeholder) {\n\t\t\t\t\t\toutput += opts.placeholder;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'A': // Alpha\n\t\t\t\t\tif (/[a-zA-Z]/.test(valueChar)) {\n\t\t\t\t\t\toutput += valueChar;\n\t\t\t\t\t\tiValue++;\n\t\t\t\t\t} else if (opts.placeholder) {\n\t\t\t\t\t\toutput += opts.placeholder;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'S': // Alphanumeric\n\t\t\t\t\tif (/[0-9a-zA-Z]/.test(valueChar)) {\n\t\t\t\t\t\toutput += valueChar;\n\t\t\t\t\t\tiValue++;\n\t\t\t\t\t} else if (opts.placeholder) {\n\t\t\t\t\t\toutput += opts.placeholder;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\toutput += patternChar;\n\t\t\t\t\tif (valueChar === patternChar) {\n\t\t\t\t\t\tiValue++;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tpublic maskMoney(opts: MaskOptions): void {\n\t\tthis.bindElementToMask(ArchbaseMasker.toMoney, opts);\n\t}\n\n\tpublic maskNumber(): void {\n\t\tthis.bindElementToMask(ArchbaseMasker.toNumber);\n\t}\n\n\tpublic maskAlphaNum(): void {\n\t\tthis.bindElementToMask(ArchbaseMasker.toAlphaNumeric);\n\t}\n\n\tpublic maskPattern(pattern: string, placeholder?: string): void {\n\t\tthis.bindElementToMask(ArchbaseMasker.toPattern, { pattern, placeholder });\n\t}\n\n\tpublic unMask(): void {\n\t\tthis.elements.forEach((element: any) => {\n\t\t\telement.onkeyup = null;\n\t\t});\n\t}\n\n\tpublic static toNumber(value: string): string {\n\t\treturn value.replace(/(?!^-)[^0-9]/g, '');\n\t}\n\n\tpublic static toAlphaNumeric(value: string): string {\n\t\treturn value.replace(/[^a-z0-9 ]+/i, '');\n\t}\n}\n","/**\n * ArchbaseSafeMigrationWrapper\n * \n * Sistema de fallback seguro para migração V1/V2.\n * Garante que se V2 falhar, automaticamente volta para V1.\n * \n * ⚠️ CRITICAL: Este wrapper é obrigatório para todos os componentes migrados.\n */\n\nimport React, { Component, ErrorInfo, ReactNode } from 'react';\n\ninterface Props {\n children: ReactNode;\n fallbackComponent: React.ComponentType<any>;\n componentName: string;\n v2Props: any;\n onError?: (error: Error, errorInfo: ErrorInfo) => void;\n}\n\ninterface State {\n hasError: boolean;\n error?: Error;\n fallbackActive: boolean;\n}\n\n/**\n * Error Boundary que implementa fallback automático V2 → V1\n */\nexport class ArchbaseSafeMigrationWrapper extends Component<Props, State> {\n constructor(props: Props) {\n super(props);\n this.state = {\n hasError: false,\n fallbackActive: false\n };\n }\n\n static getDerivedStateFromError(error: Error): State {\n // Ativar fallback quando V2 falhar\n return {\n hasError: true,\n error,\n fallbackActive: true\n };\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n const { componentName, onError } = this.props;\n \n // Log do erro para monitoramento\n console.error(`[ArchbaseSafeMigration] V2 failed for ${componentName}:`, error);\n console.error('Error Info:', errorInfo);\n \n // Métricas de fallback\n if (typeof window !== 'undefined' && (window as any).analytics) {\n (window as any).analytics.track('DataSource_V2_Fallback', {\n component: componentName,\n error: error.message,\n stack: error.stack,\n timestamp: new Date().toISOString()\n });\n }\n\n // Callback customizado de erro\n if (onError) {\n onError(error, errorInfo);\n }\n }\n\n render() {\n const { children, fallbackComponent: FallbackComponent, v2Props, componentName } = this.props;\n const { hasError, fallbackActive } = this.state;\n\n if (hasError && fallbackActive) {\n // Renderizar V1 como fallback\n console.warn(`[ArchbaseSafeMigration] Using V1 fallback for ${componentName}`);\n return <FallbackComponent {...v2Props} />;\n }\n\n // Renderizar V2 normalmente\n return children;\n }\n}\n\n/**\n * Hook para criar wrapper de migração segura\n */\nexport function useArchbaseSafeMigration<TProps>(\n componentName: string,\n V1Component: React.ComponentType<TProps>,\n V2Component: React.ComponentType<TProps>\n) {\n return React.useMemo(() => {\n const SafeComponent = (props: TProps) => {\n // Feature flag para forçar V1\n const forceV1 = process.env.REACT_APP_FORCE_DATASOURCE_V1 === 'true';\n \n if (forceV1) {\n console.log(`[ArchbaseSafeMigration] Force V1 mode for ${componentName}`);\n return <V1Component {...props} />;\n }\n\n return (\n <ArchbaseSafeMigrationWrapper\n componentName={componentName}\n fallbackComponent={V1Component}\n v2Props={props}\n >\n <V2Component {...props} />\n </ArchbaseSafeMigrationWrapper>\n );\n };\n\n SafeComponent.displayName = `SafeMigration(${componentName})`;\n return SafeComponent;\n }, [componentName, V1Component, V2Component]);\n}\n\n/**\n * HOC para aplicar migração segura\n */\nexport function withSafeMigration<TProps>(\n componentName: string,\n V1Component: React.ComponentType<TProps>,\n V2Component: React.ComponentType<TProps>\n) {\n const SafeComponent = (props: TProps) => {\n const forceV1 = process.env.REACT_APP_FORCE_DATASOURCE_V1 === 'true';\n \n if (forceV1) {\n return <V1Component {...props} />;\n }\n\n return (\n <ArchbaseSafeMigrationWrapper\n componentName={componentName}\n fallbackComponent={V1Component}\n v2Props={props}\n >\n <V2Component {...props} />\n </ArchbaseSafeMigrationWrapper>\n );\n };\n\n SafeComponent.displayName = `SafeMigration(${componentName})`;\n return SafeComponent;\n}\n\n/**\n * Utilitário para detectar versão do DataSource\n */\nexport function detectDataSourceVersion(dataSource: any): 'V1' | 'V2' | 'NONE' {\n if (!dataSource) {\n return 'NONE';\n }\n \n // Duck typing para detectar V2\n if ('appendToFieldArray' in dataSource || 'updateFieldArrayItem' in dataSource) {\n return 'V2';\n }\n \n return 'V1';\n}\n\n/**\n * Métricas para monitoramento de migração\n */\nexport const MigrationMetrics = {\n trackV2Usage: (componentName: string, dataSourceVersion: string) => {\n if (typeof window !== 'undefined' && (window as any).analytics) {\n (window as any).analytics.track('DataSource_V2_Usage', {\n component: componentName,\n dataSourceVersion,\n timestamp: new Date().toISOString()\n });\n }\n },\n\n trackFallback: (componentName: string, reason: string) => {\n if (typeof window !== 'undefined' && (window as any).analytics) {\n (window as any).analytics.track('DataSource_V2_Fallback', {\n component: componentName,\n reason,\n timestamp: new Date().toISOString()\n });\n }\n },\n\n trackError: (componentName: string, error: Error) => {\n if (typeof window !== 'undefined' && (window as any).analytics) {\n (window as any).analytics.track('DataSource_V2_Error', {\n component: componentName,\n error: error.message,\n stack: error.stack,\n timestamp: new Date().toISOString()\n });\n }\n }\n};\n\nexport default ArchbaseSafeMigrationWrapper;\n","import React, { createContext, useContext, useState, useCallback, ReactNode } from 'react'\n\nexport interface ValidationErrorsContextType {\n errors: Record<string, string>\n setError: (field: string, error: string) => void\n clearError: (field: string) => void\n clearAll: () => void\n getError: (field: string) => string | undefined\n}\n\nconst ValidationErrorsContext = createContext<ValidationErrorsContextType | undefined>(undefined)\n\n/**\n * Provider para gerenciar erros de validação de formulários\n * Armazena erros em um estado global que sobrevive a unmounts de componentes\n */\nexport function ValidationErrorsProvider({ children }: { children: ReactNode }) {\n const [errors, setErrors] = useState<Record<string, string>>({})\n\n const setError = useCallback((field: string, error: string) => {\n setErrors(prev => ({ ...prev, [field]: error }))\n }, [])\n\n const clearError = useCallback((field: string) => {\n setErrors(prev => {\n const newErrors = { ...prev }\n delete newErrors[field]\n return newErrors\n })\n }, [])\n\n const clearAll = useCallback(() => {\n setErrors({})\n }, [])\n\n const getError = useCallback((field: string) => {\n return errors[field]\n }, [errors])\n\n return (\n <ValidationErrorsContext.Provider value={{ errors, setError, clearError, clearAll, getError }}>\n {children}\n </ValidationErrorsContext.Provider>\n )\n}\n\n/**\n * Hook para acessar o contexto de erros de validação\n * Retorna undefined se o contexto não estiver disponível (para compatibilidade)\n */\nexport function useValidationErrors(): ValidationErrorsContextType | undefined {\n return useContext(ValidationErrorsContext)\n}\n\n/**\n * Hook que sempre retorna um contexto de erros (cria um vazio se não existir)\n * Use quando você PRECISA do contexto\n */\nexport function useRequiredValidationErrors(): ValidationErrorsContextType {\n const context = useContext(ValidationErrorsContext)\n if (!context) {\n throw new Error('useRequiredValidationErrors must be used within ValidationErrorsProvider')\n }\n return context\n}\n","// Import CSS styles\nimport './errorboundary.scss';\nimport './utils.scss';\n\nexport * from './context';\n// Exports explícitos para facilitar o uso\nexport { useArchbaseTranslation, archbaseI18next, getI18nextInstance } from './context/ArchbaseGlobalProvider';\nexport * from './exceptions';\nexport * from './helper';\nexport * from './hooks';\nexport * from './ioc';\nexport * from './json';\nexport * from './rsql/ast';\nexport * from './rsql/builder';\nexport * from './rsql/emitter';\nexport * from './rsql/parser';\nexport * from './utils';\nexport * from './types';\nexport * from './types/filter';\nexport * from './errorboundary';\nexport * from \"./utils/masker\";\n// Export validator but avoid conflicts\nexport { ArchbaseValidator } from './validator/ArchbaseValidator';\nexport type { ValidationError, ValidatorOptions } from './validator';\nexport * from './validator';\nexport * from './locales';\nexport * from './fallback/ArchbaseSafeMigrationWrapper'\n\n// Temporary export for migration compatibility\nexport function detectDataSourceVersion(dataSource: any): string {\n return dataSource?.version || 'v1';\n}\nexport { ValidationErrorsProvider, useValidationErrors, useRequiredValidationErrors } from './validation/ValidationErrorsContext';\n"],"names":["ArchbaseAppContext","t","IOCProvider","instance","React","Polyfill","target","metadata","validationResult","object","isEmpty","max","min","minDate","maxDate","contains","value","error","initialState","json","obj","reservedChar"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|